drizzle-cube 0.8.0 → 0.8.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 (318) hide show
  1. package/dist/adapters/ActivityGridChart.config-DXUUgx0N.cjs +1 -0
  2. package/dist/adapters/ActivityGridChart.config-Dyozu3VW.js +2 -0
  3. package/dist/adapters/AreaChart.config-Di5odBXp.cjs +1 -0
  4. package/dist/adapters/AreaChart.config-KEaXP_4K.js +2 -0
  5. package/dist/adapters/BarChart.config-B-hBHykR.cjs +1 -0
  6. package/dist/adapters/BarChart.config-C5sqbn0A.js +2 -0
  7. package/dist/adapters/BoxPlotChart.config-B1R4Br7L.js +2 -0
  8. package/dist/adapters/BoxPlotChart.config-C82Fhd3c.cjs +1 -0
  9. package/dist/adapters/BubbleChart.config-CoBxmmfp.js +2 -0
  10. package/dist/adapters/BubbleChart.config-DfOnNjL-.cjs +1 -0
  11. package/dist/adapters/CandlestickChart.config-C5ggV_3j.cjs +1 -0
  12. package/dist/adapters/CandlestickChart.config-ZaJpWVuL.js +2 -0
  13. package/dist/adapters/DataTable.config-Cx2_ACdY.cjs +1 -0
  14. package/dist/adapters/DataTable.config-DkAgD-iz.js +2 -0
  15. package/dist/adapters/FunnelChart.config-CvzcECUB.js +2 -0
  16. package/dist/adapters/FunnelChart.config-DVH7IFnb.cjs +1 -0
  17. package/dist/adapters/GaugeChart.config-Csx8rt8o.cjs +1 -0
  18. package/dist/adapters/GaugeChart.config-DEmrNgMa.js +2 -0
  19. package/dist/adapters/HeatMapChart.config-BfD_dpP7.js +2 -0
  20. package/dist/adapters/HeatMapChart.config-D_jlyPJL.cjs +1 -0
  21. package/dist/adapters/KpiDelta.config-CVBdUL_n.cjs +1 -0
  22. package/dist/adapters/KpiDelta.config-D4dCXOxl.js +2 -0
  23. package/dist/adapters/KpiNumber.config-BK5pgIKz.cjs +1 -0
  24. package/dist/adapters/KpiNumber.config-D6XqjZrm.js +2 -0
  25. package/dist/adapters/KpiText.config-ChphMwG5.js +2 -0
  26. package/dist/adapters/KpiText.config-fO1wc6FH.cjs +1 -0
  27. package/dist/adapters/LineChart.config-CXJrgz1s.js +2 -0
  28. package/dist/adapters/LineChart.config-Cg_h-SiJ.cjs +1 -0
  29. package/dist/adapters/MarkdownChart.config-ByPjX-4O.cjs +1 -0
  30. package/dist/adapters/MarkdownChart.config-Df2yY9AT.js +2 -0
  31. package/dist/adapters/MeasureProfileChart.config-BBWGIteF.cjs +1 -0
  32. package/dist/adapters/MeasureProfileChart.config-C9OFbN9Z.js +2 -0
  33. package/dist/adapters/PieChart.config-C6jJj6xm.js +2 -0
  34. package/dist/adapters/PieChart.config-CmCw_8eN.cjs +1 -0
  35. package/dist/adapters/ProportionBarChart.config-B9NEyFEe.js +2 -0
  36. package/dist/adapters/ProportionBarChart.config-C3GAVPWn.cjs +1 -0
  37. package/dist/adapters/RadarChart.config-5AMwEqUJ.cjs +1 -0
  38. package/dist/adapters/RadarChart.config-Ct_b7IM5.js +2 -0
  39. package/dist/adapters/RadialBarChart.config-Bp-Sl0cm.js +2 -0
  40. package/dist/adapters/RadialBarChart.config-D14yoexI.cjs +1 -0
  41. package/dist/adapters/RecordsTable.config-D2-qmG06.cjs +1 -0
  42. package/dist/adapters/RecordsTable.config-DIwoqZCU.js +2 -0
  43. package/dist/adapters/RetentionCombinedChart.config-BWHipi5M.cjs +1 -0
  44. package/dist/adapters/RetentionCombinedChart.config-D40UgTcl.js +2 -0
  45. package/dist/adapters/RetentionHeatmap.config-GlnSLrjn.js +2 -0
  46. package/dist/adapters/RetentionHeatmap.config-MlhZf26c.cjs +1 -0
  47. package/dist/adapters/SankeyChart.config-Bf1_NHiv.js +2 -0
  48. package/dist/adapters/SankeyChart.config-BoYf6BFE.cjs +1 -0
  49. package/dist/adapters/ScatterChart.config-CV2rdGJp.js +2 -0
  50. package/dist/adapters/ScatterChart.config-DywduGF3.cjs +1 -0
  51. package/dist/adapters/SunburstChart.config-CrqiE1UZ.js +2 -0
  52. package/dist/adapters/SunburstChart.config-D5tbF_GJ.cjs +1 -0
  53. package/dist/adapters/TreeMapChart.config-BJ8HnZU0.cjs +1 -0
  54. package/dist/adapters/TreeMapChart.config-DxgIqIIj.js +2 -0
  55. package/dist/adapters/WaterfallChart.config-Cns8fLFu.js +2 -0
  56. package/dist/adapters/WaterfallChart.config-D_kdL9SN.cjs +1 -0
  57. package/dist/adapters/compiler-BxZHh0UD.cjs +166 -0
  58. package/dist/adapters/{compiler-CQJ5GOwF.js → compiler-CBGD_4Et.js} +1160 -1861
  59. package/dist/adapters/core/index.cjs +1 -1
  60. package/dist/adapters/core/index.js +1 -1
  61. package/dist/adapters/{core-DgTGXxDu.cjs → core-CIGuwGuI.cjs} +1 -1
  62. package/dist/adapters/{core-DXkuSUBg.js → core-DAAnqPyN.js} +3 -3
  63. package/dist/adapters/express/index.cjs +1 -1
  64. package/dist/adapters/express/index.js +5 -5
  65. package/dist/adapters/fastify/index.cjs +1 -1
  66. package/dist/adapters/fastify/index.js +23 -23
  67. package/dist/{server/google-eKAc20al.js → adapters/google-DRY7jnOh.js} +46 -28
  68. package/dist/adapters/{google-BhvizbFR.cjs → google-PsZzwedr.cjs} +2 -2
  69. package/dist/adapters/{handler-DrRT6c14.cjs → handler-BcYTw6zB.cjs} +12 -12
  70. package/dist/adapters/{handler-CphYSZRh.js → handler-eA0VJDHj.js} +334 -237
  71. package/dist/adapters/hono/index.cjs +1 -1
  72. package/dist/adapters/hono/index.js +4 -4
  73. package/dist/adapters/mcp-tools.cjs +1 -1
  74. package/dist/adapters/mcp-tools.js +2 -2
  75. package/dist/adapters/mcp-transport-BpG44Fvn.js +730 -0
  76. package/dist/adapters/mcp-transport-CDxZXpc-.cjs +42 -0
  77. package/dist/adapters/nextjs/index.cjs +1 -1
  78. package/dist/adapters/nextjs/index.js +5 -5
  79. package/dist/adapters/{openai-D-VMcPao.js → openai-BZ48ioYp.js} +1 -1
  80. package/dist/adapters/{openai-CSzWluuv.cjs → openai-Bw1j-OiP.cjs} +1 -1
  81. package/dist/adapters/{openai-CI9vGKSf.cjs → openai-CLjyL5_J.cjs} +2 -2
  82. package/dist/adapters/{openai-CBrN4nxl.js → openai-CYYjUG_3.js} +3 -3
  83. package/dist/adapters/{utils-DkmShl5f.js → utils-BagURNRb.js} +1947 -1122
  84. package/dist/adapters/utils-BiKIg2tk.cjs +128 -0
  85. package/dist/adapters/utils.cjs +1 -1
  86. package/dist/adapters/utils.d.ts +17 -3
  87. package/dist/adapters/utils.js +1 -1
  88. package/dist/cjs/adapters/utils.d.ts +17 -3
  89. package/dist/cjs/client/charts/chartConfigRegistry.d.ts +7 -0
  90. package/dist/cjs/client/charts/chartConfigs.d.ts +17 -1
  91. package/dist/cjs/client/client/CubeClient.d.ts +11 -1
  92. package/dist/cjs/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +4 -2
  93. package/dist/cjs/client/components/AnalysisBuilder/ColumnFormatsEditor.d.ts +10 -0
  94. package/dist/cjs/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +3 -2
  95. package/dist/cjs/client/components/AnalysisBuilder/utils/queryUtils.d.ts +7 -1
  96. package/dist/cjs/client/components/analyticsPortlet/PortletChart.d.ts +2 -1
  97. package/dist/cjs/client/components/analyticsPortlet/PortletChartView.d.ts +4 -1
  98. package/dist/cjs/client/components/analyticsPortlet/usePortletDeadMembers.d.ts +24 -0
  99. package/dist/cjs/client/components/analyticsPortlet/usePortletPagination.d.ts +21 -0
  100. package/dist/cjs/client/components/charts/RecordsTable.config.d.ts +10 -0
  101. package/dist/cjs/client/components/charts/RecordsTable.d.ts +4 -0
  102. package/dist/cjs/client/components/charts/recordsTableHooks.d.ts +68 -0
  103. package/dist/cjs/client/icons/types.d.ts +1 -0
  104. package/dist/cjs/client/index.d.ts +2 -2
  105. package/dist/cjs/client/types.d.ts +92 -1
  106. package/dist/cjs/client/utils/recordsTableUtils.d.ts +71 -0
  107. package/dist/cjs/client/utils/rowLinkUtils.d.ts +35 -0
  108. package/dist/cjs/server/agent/chart-validation.d.ts +1 -1
  109. package/dist/cjs/server/ai/chart-schema.d.ts +117 -0
  110. package/dist/cjs/server/ai/discovery-helpers.d.ts +14 -0
  111. package/dist/cjs/server/ai/discovery.d.ts +6 -0
  112. package/dist/cjs/server/ai/query-schema.d.ts +1 -1
  113. package/dist/cjs/server/attribute-dimensions.d.ts +11 -8
  114. package/dist/cjs/server/builders/group-by-builder.d.ts +15 -0
  115. package/dist/cjs/server/compiler.d.ts +3 -4
  116. package/dist/cjs/server/executor.d.ts +15 -0
  117. package/dist/cjs/server/index.d.ts +2 -0
  118. package/dist/cjs/server/query-handlers.d.ts +1 -0
  119. package/dist/cjs/server/query-validator.d.ts +36 -4
  120. package/dist/cjs/server/types/core.d.ts +5 -0
  121. package/dist/cjs/server/types/cube.d.ts +12 -0
  122. package/dist/cjs/server/types/query.d.ts +8 -0
  123. package/dist/cli/index.cjs +130 -52
  124. package/dist/client/charts/chartConfigRegistry.d.ts +7 -0
  125. package/dist/client/charts/chartConfigs.d.ts +17 -1
  126. package/dist/client/charts.js +13 -13
  127. package/dist/client/chunks/{DashboardEditModal-9An5EDAz.js → DashboardEditModal-_ZDMwaGX.js} +1653 -1188
  128. package/dist/client/chunks/DashboardEditModal-_ZDMwaGX.js.map +1 -0
  129. package/dist/client/chunks/{ProportionBarChart-BVcbGY2C.js → ProportionBarChart-qfpAWhIg.js} +3 -3
  130. package/dist/client/chunks/{ProportionBarChart-BVcbGY2C.js.map → ProportionBarChart-qfpAWhIg.js.map} +1 -1
  131. package/dist/client/chunks/RecordsTable-KmJy94xN.js +556 -0
  132. package/dist/client/chunks/RecordsTable-KmJy94xN.js.map +1 -0
  133. package/dist/client/chunks/{RetentionCombinedChart-D68Rvdi-.js → RetentionCombinedChart-C7X6aj97.js} +3 -3
  134. package/dist/client/chunks/{RetentionCombinedChart-D68Rvdi-.js.map → RetentionCombinedChart-C7X6aj97.js.map} +1 -1
  135. package/dist/client/chunks/{RetentionHeatmap-CE7BAjrB.js → RetentionHeatmap-PpRpiqR_.js} +2 -2
  136. package/dist/client/chunks/{RetentionHeatmap-CE7BAjrB.js.map → RetentionHeatmap-PpRpiqR_.js.map} +1 -1
  137. package/dist/client/chunks/{analysis-builder-D1pYvvwc.js → analysis-builder-DaqyOjLX.js} +169 -168
  138. package/dist/client/chunks/{analysis-builder-D1pYvvwc.js.map → analysis-builder-DaqyOjLX.js.map} +1 -1
  139. package/dist/client/chunks/{analysis-builder-shared-BQvwUc6z.js → analysis-builder-shared-ow9KAHDP.js} +965 -954
  140. package/dist/client/chunks/analysis-builder-shared-ow9KAHDP.js.map +1 -0
  141. package/dist/client/chunks/{chart-activity-grid-DvD_4wJz.js → chart-activity-grid-DO82rrbW.js} +137 -84
  142. package/dist/client/chunks/chart-activity-grid-DO82rrbW.js.map +1 -0
  143. package/dist/client/chunks/{chart-area-DPp3hSOK.js → chart-area-9SBeG0GM.js} +21 -21
  144. package/dist/client/chunks/{chart-area-DPp3hSOK.js.map → chart-area-9SBeG0GM.js.map} +1 -1
  145. package/dist/client/chunks/{chart-bar-Od3pOyZ0.js → chart-bar-tfgmLK2D.js} +5 -5
  146. package/dist/client/chunks/{chart-bar-Od3pOyZ0.js.map → chart-bar-tfgmLK2D.js.map} +1 -1
  147. package/dist/client/chunks/{chart-box-plot-l0iFn2n2.js → chart-box-plot-BuYW6j6g.js} +2 -2
  148. package/dist/client/chunks/{chart-box-plot-l0iFn2n2.js.map → chart-box-plot-BuYW6j6g.js.map} +1 -1
  149. package/dist/client/chunks/{chart-bubble-Dl0RcP8N.js → chart-bubble-BNmonWqW.js} +2 -2
  150. package/dist/client/chunks/{chart-bubble-Dl0RcP8N.js.map → chart-bubble-BNmonWqW.js.map} +1 -1
  151. package/dist/client/chunks/{chart-candlestick-DZMqbscF.js → chart-candlestick-BYeWNkKl.js} +2 -2
  152. package/dist/client/chunks/{chart-candlestick-DZMqbscF.js.map → chart-candlestick-BYeWNkKl.js.map} +1 -1
  153. package/dist/client/chunks/{chart-data-table-DgiNBOWf.js → chart-data-table-C_oHiK6N.js} +1094 -1029
  154. package/dist/client/chunks/chart-data-table-C_oHiK6N.js.map +1 -0
  155. package/dist/client/chunks/{chart-funnel-YLZlyN1X.js → chart-funnel-B_CWC3cL.js} +2 -2
  156. package/dist/client/chunks/{chart-funnel-YLZlyN1X.js.map → chart-funnel-B_CWC3cL.js.map} +1 -1
  157. package/dist/client/chunks/{chart-gauge-BsqE2wwF.js → chart-gauge-D7VxwPnx.js} +3 -3
  158. package/dist/client/chunks/{chart-gauge-BsqE2wwF.js.map → chart-gauge-D7VxwPnx.js.map} +1 -1
  159. package/dist/client/chunks/{chart-heat-map-BsND8RM_.js → chart-heat-map-q7Vf_dog.js} +3 -3
  160. package/dist/client/chunks/{chart-heat-map-BsND8RM_.js.map → chart-heat-map-q7Vf_dog.js.map} +1 -1
  161. package/dist/client/chunks/{chart-kpi-delta-m0azuva-.js → chart-kpi-delta-PEuA3iGs.js} +3 -3
  162. package/dist/client/chunks/{chart-kpi-delta-m0azuva-.js.map → chart-kpi-delta-PEuA3iGs.js.map} +1 -1
  163. package/dist/client/chunks/{chart-kpi-number-6JS15SqF.js → chart-kpi-number-DlxrO6Pq.js} +5 -5
  164. package/dist/client/chunks/{chart-kpi-number-6JS15SqF.js.map → chart-kpi-number-DlxrO6Pq.js.map} +1 -1
  165. package/dist/client/chunks/{chart-kpi-text-BqX8p8Jn.js → chart-kpi-text-Cx6cJu2s.js} +3 -3
  166. package/dist/client/chunks/{chart-kpi-text-BqX8p8Jn.js.map → chart-kpi-text-Cx6cJu2s.js.map} +1 -1
  167. package/dist/client/chunks/{chart-line-NCmpxBfE.js → chart-line-pDe25JzB.js} +3 -3
  168. package/dist/client/chunks/{chart-line-NCmpxBfE.js.map → chart-line-pDe25JzB.js.map} +1 -1
  169. package/dist/client/chunks/{chart-markdown-ZOobqiiX.js → chart-markdown-CRY15yp0.js} +2 -2
  170. package/dist/client/chunks/{chart-markdown-ZOobqiiX.js.map → chart-markdown-CRY15yp0.js.map} +1 -1
  171. package/dist/client/chunks/{chart-measure-profile-CBAZaicJ.js → chart-measure-profile-DyQ-vvuC.js} +3 -3
  172. package/dist/client/chunks/{chart-measure-profile-CBAZaicJ.js.map → chart-measure-profile-DyQ-vvuC.js.map} +1 -1
  173. package/dist/client/chunks/{chart-pie-ChrasEI8.js → chart-pie-ZrnBycy1.js} +15 -15
  174. package/dist/client/chunks/{chart-pie-ChrasEI8.js.map → chart-pie-ZrnBycy1.js.map} +1 -1
  175. package/dist/client/chunks/{chart-radar-CxSVF7yL.js → chart-radar-BXbnYMUJ.js} +13 -13
  176. package/dist/client/chunks/{chart-radar-CxSVF7yL.js.map → chart-radar-BXbnYMUJ.js.map} +1 -1
  177. package/dist/client/chunks/{chart-radial-bar--SN0Wph0.js → chart-radial-bar-CYxH3ryh.js} +3 -3
  178. package/dist/client/chunks/{chart-radial-bar--SN0Wph0.js.map → chart-radial-bar-CYxH3ryh.js.map} +1 -1
  179. package/dist/client/chunks/{chart-sankey-CDOSGg9r.js → chart-sankey-C9R_TDDh.js} +2 -2
  180. package/dist/client/chunks/{chart-sankey-CDOSGg9r.js.map → chart-sankey-C9R_TDDh.js.map} +1 -1
  181. package/dist/client/chunks/{chart-scatter-DgcEF-kI.js → chart-scatter-DrwRkzzl.js} +3 -3
  182. package/dist/client/chunks/{chart-scatter-DgcEF-kI.js.map → chart-scatter-DrwRkzzl.js.map} +1 -1
  183. package/dist/client/chunks/{chart-sunburst-MB-jlGBm.js → chart-sunburst-Bs1yqIPp.js} +3 -3
  184. package/dist/client/chunks/{chart-sunburst-MB-jlGBm.js.map → chart-sunburst-Bs1yqIPp.js.map} +1 -1
  185. package/dist/client/chunks/{chart-tree-map-DeDXveVd.js → chart-tree-map-BNjHhhVq.js} +3 -3
  186. package/dist/client/chunks/{chart-tree-map-DeDXveVd.js.map → chart-tree-map-BNjHhhVq.js.map} +1 -1
  187. package/dist/client/chunks/{chart-waterfall-ur4vkO1j.js → chart-waterfall-CyoC0uLT.js} +3 -3
  188. package/dist/client/chunks/{chart-waterfall-ur4vkO1j.js.map → chart-waterfall-CyoC0uLT.js.map} +1 -1
  189. package/dist/client/chunks/charts-core-DCQ7od_L.js +190 -0
  190. package/dist/client/chunks/charts-core-DCQ7od_L.js.map +1 -0
  191. package/dist/client/chunks/charts-loader-Bya_zDIA.js +86 -0
  192. package/dist/client/chunks/charts-loader-Bya_zDIA.js.map +1 -0
  193. package/dist/client/chunks/{en-US-BE6VoG0o.js → en-US-HP6FHuNy.js} +3 -1
  194. package/dist/client/chunks/{en-US-BE6VoG0o.js.map → en-US-HP6FHuNy.js.map} +1 -1
  195. package/dist/client/chunks/{nl-NL-CMXHDBr0.js → nl-NL-CEdoCz6Q.js} +51 -1
  196. package/dist/client/chunks/nl-NL-CEdoCz6Q.js.map +1 -0
  197. package/dist/client/chunks/{schema-visualization-BEbFtUIL.js → schema-visualization-DfXxFBIY.js} +3 -3
  198. package/dist/client/chunks/{schema-visualization-BEbFtUIL.js.map → schema-visualization-DfXxFBIY.js.map} +1 -1
  199. package/dist/client/chunks/{useDirtyStateTracking-CSDg96Rw.js → useDirtyStateTracking-BFJHiiVK.js} +15 -15
  200. package/dist/client/chunks/{useDirtyStateTracking-CSDg96Rw.js.map → useDirtyStateTracking-BFJHiiVK.js.map} +1 -1
  201. package/dist/client/chunks/{useExplainAI-BnkoZ-zS.js → useExplainAI-_C4WQE5I.js} +16 -16
  202. package/dist/client/chunks/{useExplainAI-BnkoZ-zS.js.map → useExplainAI-_C4WQE5I.js.map} +1 -1
  203. package/dist/client/chunks/{vendor-BmJDaduD.js → vendor-Gb3lH0cc.js} +49 -49
  204. package/dist/client/chunks/{vendor-BmJDaduD.js.map → vendor-Gb3lH0cc.js.map} +1 -1
  205. package/dist/client/client/CubeClient.d.ts +11 -1
  206. package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +4 -2
  207. package/dist/client/components/AnalysisBuilder/ColumnFormatsEditor.d.ts +10 -0
  208. package/dist/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +3 -2
  209. package/dist/client/components/AnalysisBuilder/utils/queryUtils.d.ts +7 -1
  210. package/dist/client/components/analyticsPortlet/PortletChart.d.ts +2 -1
  211. package/dist/client/components/analyticsPortlet/PortletChartView.d.ts +4 -1
  212. package/dist/client/components/analyticsPortlet/usePortletDeadMembers.d.ts +24 -0
  213. package/dist/client/components/analyticsPortlet/usePortletPagination.d.ts +21 -0
  214. package/dist/client/components/charts/RecordsTable.config.d.ts +10 -0
  215. package/dist/client/components/charts/RecordsTable.d.ts +4 -0
  216. package/dist/client/components/charts/recordsTableHooks.d.ts +68 -0
  217. package/dist/client/components.js +1 -1
  218. package/dist/client/hooks.js +3 -3
  219. package/dist/client/icons/types.d.ts +1 -0
  220. package/dist/client/icons.js +2 -2
  221. package/dist/client/index.d.ts +2 -2
  222. package/dist/client/index.js +213 -213
  223. package/dist/client/providers.js +1 -1
  224. package/dist/client/schema.js +1 -1
  225. package/dist/client/styles.css +1 -1
  226. package/dist/client/types.d.ts +92 -1
  227. package/dist/client/utils/recordsTableUtils.d.ts +71 -0
  228. package/dist/client/utils/rowLinkUtils.d.ts +35 -0
  229. package/dist/client/utils.js +14 -14
  230. package/dist/client-bundle-stats.html +1 -1
  231. package/dist/mcp-app/mcp-app.html +107 -107
  232. package/dist/server/agent/chart-validation.d.ts +1 -1
  233. package/dist/server/ai/chart-schema.d.ts +117 -0
  234. package/dist/server/ai/discovery-helpers.d.ts +14 -0
  235. package/dist/server/ai/discovery.d.ts +6 -0
  236. package/dist/server/ai/query-schema.d.ts +1 -1
  237. package/dist/server/attribute-dimensions.d.ts +11 -8
  238. package/dist/server/builders/group-by-builder.d.ts +15 -0
  239. package/dist/server/compiler.d.ts +3 -4
  240. package/dist/server/executor.d.ts +15 -0
  241. package/dist/{adapters/google-eKAc20al.js → server/google-DRY7jnOh.js} +46 -28
  242. package/dist/server/{google-BhvizbFR.cjs → google-PsZzwedr.cjs} +2 -2
  243. package/dist/server/index.cjs +34 -34
  244. package/dist/server/index.d.ts +2 -0
  245. package/dist/server/index.js +1755 -1445
  246. package/dist/server/query-handlers.d.ts +1 -0
  247. package/dist/server/query-validator.d.ts +36 -4
  248. package/dist/server/types/core.d.ts +5 -0
  249. package/dist/server/types/cube.d.ts +12 -0
  250. package/dist/server/types/query.d.ts +8 -0
  251. package/package.json +1 -1
  252. package/dist/adapters/ActivityGridChart.config-BQhBE_Mr.js +0 -2
  253. package/dist/adapters/ActivityGridChart.config-C3tSuOGV.cjs +0 -1
  254. package/dist/adapters/AreaChart.config-3cme8HyQ.js +0 -2
  255. package/dist/adapters/AreaChart.config-BSxrT52Z.cjs +0 -1
  256. package/dist/adapters/BarChart.config-BKS8IecE.cjs +0 -1
  257. package/dist/adapters/BarChart.config-lt_7PdIi.js +0 -2
  258. package/dist/adapters/BoxPlotChart.config-B7qvRnrF.cjs +0 -1
  259. package/dist/adapters/BoxPlotChart.config-Dv6ECj2j.js +0 -2
  260. package/dist/adapters/BubbleChart.config-BrIH7OAy.cjs +0 -1
  261. package/dist/adapters/BubbleChart.config-Fhotb7Pg.js +0 -2
  262. package/dist/adapters/CandlestickChart.config-CWH41FmF.cjs +0 -1
  263. package/dist/adapters/CandlestickChart.config-RPtXuxsX.js +0 -2
  264. package/dist/adapters/DataTable.config-71L0GzlT.js +0 -2
  265. package/dist/adapters/DataTable.config-BsOMQq3J.cjs +0 -1
  266. package/dist/adapters/FunnelChart.config-Cqte9C04.cjs +0 -1
  267. package/dist/adapters/FunnelChart.config-DJtwWeNz.js +0 -2
  268. package/dist/adapters/GaugeChart.config-WkwZ9VdS.cjs +0 -1
  269. package/dist/adapters/GaugeChart.config-vpVQlP5B.js +0 -2
  270. package/dist/adapters/HeatMapChart.config-DcmkDl07.cjs +0 -1
  271. package/dist/adapters/HeatMapChart.config-DsmMgGxJ.js +0 -2
  272. package/dist/adapters/KpiDelta.config-DVy561BH.js +0 -2
  273. package/dist/adapters/KpiDelta.config-dpqwLHNE.cjs +0 -1
  274. package/dist/adapters/KpiNumber.config-927l8nq8.js +0 -2
  275. package/dist/adapters/KpiNumber.config-BqFBMfPf.cjs +0 -1
  276. package/dist/adapters/KpiText.config-C-fZXuHq.cjs +0 -1
  277. package/dist/adapters/KpiText.config-CWoXuhMA.js +0 -2
  278. package/dist/adapters/LineChart.config-DTp7pqOY.js +0 -2
  279. package/dist/adapters/LineChart.config-DUGvSjcH.cjs +0 -1
  280. package/dist/adapters/MarkdownChart.config-23Dmv2Ty.cjs +0 -1
  281. package/dist/adapters/MarkdownChart.config-Cb2TnS0I.js +0 -2
  282. package/dist/adapters/MeasureProfileChart.config-B2qbWdhy.cjs +0 -1
  283. package/dist/adapters/MeasureProfileChart.config-CvBCeI5b.js +0 -2
  284. package/dist/adapters/PieChart.config-BzJb13QA.js +0 -2
  285. package/dist/adapters/PieChart.config-plCn5Ehr.cjs +0 -1
  286. package/dist/adapters/ProportionBarChart.config-1r-_moBH.cjs +0 -1
  287. package/dist/adapters/ProportionBarChart.config-CN6TtHTp.js +0 -2
  288. package/dist/adapters/RadarChart.config-BYhdj9M7.js +0 -2
  289. package/dist/adapters/RadarChart.config-CeUMP-1g.cjs +0 -1
  290. package/dist/adapters/RadialBarChart.config-B88yXNsq.cjs +0 -1
  291. package/dist/adapters/RadialBarChart.config-ZMK9HMoh.js +0 -2
  292. package/dist/adapters/RetentionCombinedChart.config-B5yvgUHM.cjs +0 -1
  293. package/dist/adapters/RetentionCombinedChart.config-Dd-YMdK8.js +0 -2
  294. package/dist/adapters/RetentionHeatmap.config-BYzDleoV.cjs +0 -1
  295. package/dist/adapters/RetentionHeatmap.config-Dvj7yTB0.js +0 -2
  296. package/dist/adapters/SankeyChart.config-CPFRmgFb.cjs +0 -1
  297. package/dist/adapters/SankeyChart.config-ClgqXM1N.js +0 -2
  298. package/dist/adapters/ScatterChart.config-CvJiqPa5.cjs +0 -1
  299. package/dist/adapters/ScatterChart.config-DLZ3rYMq.js +0 -2
  300. package/dist/adapters/SunburstChart.config-C_1V5hoQ.cjs +0 -1
  301. package/dist/adapters/SunburstChart.config-FNU75NCg.js +0 -2
  302. package/dist/adapters/TreeMapChart.config-CprZk_YF.js +0 -2
  303. package/dist/adapters/TreeMapChart.config-DNwd0ge9.cjs +0 -1
  304. package/dist/adapters/WaterfallChart.config-BBhcN_Fh.cjs +0 -1
  305. package/dist/adapters/WaterfallChart.config-H7s6SSV3.js +0 -2
  306. package/dist/adapters/compiler-BaLO10VN.cjs +0 -166
  307. package/dist/adapters/mcp-transport-BGkSz-ZT.cjs +0 -40
  308. package/dist/adapters/mcp-transport-fJud19xz.js +0 -606
  309. package/dist/adapters/utils-BY0-KFyI.cjs +0 -128
  310. package/dist/client/chunks/DashboardEditModal-9An5EDAz.js.map +0 -1
  311. package/dist/client/chunks/analysis-builder-shared-BQvwUc6z.js.map +0 -1
  312. package/dist/client/chunks/chart-activity-grid-DvD_4wJz.js.map +0 -1
  313. package/dist/client/chunks/chart-data-table-DgiNBOWf.js.map +0 -1
  314. package/dist/client/chunks/charts-core-BAH5pkSB.js +0 -215
  315. package/dist/client/chunks/charts-core-BAH5pkSB.js.map +0 -1
  316. package/dist/client/chunks/charts-loader-eToV8je7.js +0 -85
  317. package/dist/client/chunks/charts-loader-eToV8je7.js.map +0 -1
  318. package/dist/client/chunks/nl-NL-CMXHDBr0.js.map +0 -1
@@ -276,6 +276,9 @@ var v = (e, t, n) => {
276
276
  "chart.table.label": "Data Table",
277
277
  "chart.table.description": "Display detailed tabular data",
278
278
  "chart.table.useCase": "Best for precise values, detailed analysis, sortable/filterable data exploration",
279
+ "chart.recordsTable.label": "Records Table",
280
+ "chart.recordsTable.description": "List individual records with per-column formatting",
281
+ "chart.recordsTable.useCase": "Best for browsing record-level detail — badges, progress bars and links per column",
279
282
  "chart.activityGrid.label": "Activity Grid",
280
283
  "chart.activityGrid.description": "GitHub-style activity grid showing temporal patterns across different time scales",
281
284
  "chart.activityGrid.useCase": "Best for visualising activity patterns over time. Supports hour (3hr blocks × days), day (days × weeks), week (weeks × months), month (months × quarters), and quarter (quarters × years) granularities",
@@ -369,6 +372,44 @@ var v = (e, t, n) => {
369
372
  "chart.treemap.dropZone.yAxis.empty": "Drop a measure for size",
370
373
  "chart.treemap.dropZone.series.empty": "Drop a dimension for colour grouping",
371
374
  "chart.table.dropZone.xAxis.empty": "Drop fields to display as columns (or leave empty for all)",
375
+ "chart.recordsTable.dropZone.columns.label": "Columns",
376
+ "chart.recordsTable.dropZone.columns.description": "Fields rendered as columns, in this order",
377
+ "chart.recordsTable.dropZone.columns.empty": "Drop fields to display as columns (or leave empty for all)",
378
+ "chart.recordsTable.dropZone.hiddenColumns.label": "Hidden fields",
379
+ "chart.recordsTable.dropZone.hiddenColumns.description": "Fetched for row context and links, never displayed",
380
+ "chart.recordsTable.dropZone.hiddenColumns.empty": "Drop fields to fetch without showing them",
381
+ "chart.recordsTable.option.columnFormats.label": "Column formats",
382
+ "chart.recordsTable.option.columnFormats.description": "Choose how each column renders its value",
383
+ "chart.recordsTable.option.pageSize.label": "Rows per page",
384
+ "chart.recordsTable.option.pageSize.description": "How many records to show at a time",
385
+ "chart.recordsTable.option.pageSize.option.25": "25",
386
+ "chart.recordsTable.option.pageSize.option.50": "50",
387
+ "chart.recordsTable.option.pageSize.option.100": "100",
388
+ "chart.recordsTable.option.rowLink.label": "Row link",
389
+ "chart.recordsTable.option.rowLink.description": "Make each row a link. Use {Cube.field} tokens — hidden fields work too. Relative paths and http(s) URLs only.",
390
+ "chart.recordsTable.rowLink.urlTemplate": "URL template",
391
+ "chart.recordsTable.rowLink.placeholder": "/employees/{Employees.id}",
392
+ "chart.recordsTable.rowLink.target.self": "Same tab",
393
+ "chart.recordsTable.rowLink.target.blank": "New tab",
394
+ "chart.recordsTable.columnFormats.noColumns": "Assign columns first — each one can then be formatted here",
395
+ "chart.recordsTable.columnFormats.kind.text": "Text",
396
+ "chart.recordsTable.columnFormats.kind.number": "Number",
397
+ "chart.recordsTable.columnFormats.kind.date": "Date",
398
+ "chart.recordsTable.columnFormats.kind.badge": "Badge",
399
+ "chart.recordsTable.columnFormats.kind.progress": "Progress",
400
+ "chart.recordsTable.columnFormats.numberFormat": "Number format",
401
+ "chart.recordsTable.columnFormats.granularity": "Granularity",
402
+ "chart.recordsTable.columnFormats.badgeColours": "Value colours",
403
+ "chart.recordsTable.columnFormats.badgeColour": "Colour",
404
+ "chart.recordsTable.columnFormats.badgeValue": "Value",
405
+ "chart.recordsTable.columnFormats.badgeAdd": "Add value",
406
+ "chart.recordsTable.columnFormats.badgeRemove": "Remove value",
407
+ "chart.recordsTable.columnFormats.progressMin": "Minimum",
408
+ "chart.recordsTable.columnFormats.progressMax": "Maximum",
409
+ "chart.recordsTable.columnFormats.progressStyle": "Style",
410
+ "chart.recordsTable.columnFormats.progressStyle.bar": "Bar",
411
+ "chart.recordsTable.columnFormats.progressStyle.circle": "Circle",
412
+ "chart.recordsTable.columnFormats.header": "Header",
372
413
  "chart.activityGrid.dropZone.dateField.empty": "Drop a time dimension (granularity affects grid structure)",
373
414
  "chart.activityGrid.dropZone.valueField.empty": "Drop a measure for activity intensity",
374
415
  "chart.kpiNumber.dropZone.yAxis.empty": "Drop a measure here",
@@ -766,6 +807,7 @@ var v = (e, t, n) => {
766
807
  "server.validation.chart.barNeedsDimension": "Bar charts need an xAxis dimension for category labels. Add a dimension to the query or use \"table\" chart type instead.",
767
808
  "server.validation.chart.barXAxisRequired": "chartConfig.xAxis is required for bar charts. Put a dimension in xAxis so bars have category labels.",
768
809
  "server.validation.chart.dropZoneRequired": "chartConfig.{key} is required for {chartType} chart ({label}). Accepts: {acceptDesc}.",
810
+ "server.validation.chart.recordGrainNeedsUngrouped": "{chartType} lists one row per record, so its query must set \"ungrouped\": true. Add it to the query, and remove count/countDistinct measures — they cannot be ungrouped. An ungrouped query also cannot span two cubes joined by hasMany, so keep it to one cube plus its to-one joins.",
769
811
  "server.validation.chart.seriesDuplicatesXAxis": "chartConfig.series must not contain the same field as xAxis (found: {duplicates}). The series field is only for splitting into grouped/stacked sub-series by a DIFFERENT dimension. Remove the duplicate from series.",
770
812
  "server.validation.flow.bindingKeyCubeNotFound": "Binding key cube not found: {cubeName}",
771
813
  "server.validation.flow.bindingKeyDimNotFound": "Binding key dimension not found: {dimName} in cube {cubeName}",
@@ -1021,6 +1063,11 @@ var v = (e, t, n) => {
1021
1063
  "chart.runtime.responsiveContainerError": "Failed to create responsive container",
1022
1064
  "chart.runtime.noDataToDisplay": "No data to display",
1023
1065
  "chart.runtime.table.invalidStructure": "Data structure is invalid",
1066
+ "chart.runtime.recordsTable.noColumns": "No columns available",
1067
+ "chart.runtime.recordsTable.rowRange": "{from}–{to} of {total}",
1068
+ "chart.runtime.recordsTable.pageOf": "Page {page} of {pages}",
1069
+ "chart.runtime.recordsTable.previousPage": "Previous page",
1070
+ "chart.runtime.recordsTable.nextPage": "Next page",
1024
1071
  "chart.runtime.heatmapNoResults": "The query returned no results for the heatmap",
1025
1072
  "chart.runtime.heatmapConfigRequired": "Configuration required",
1026
1073
  "chart.runtime.heatmapXRequired": "X-axis dimension required. ",
@@ -1067,6 +1114,8 @@ var v = (e, t, n) => {
1067
1114
  "chart.runtime.axisFormat.prefixExample": "e.g., $",
1068
1115
  "chart.runtime.axisFormat.suffix": "Suffix",
1069
1116
  "chart.runtime.axisFormat.suffixExample": "e.g., units",
1117
+ "chart.runtime.axisFormat.currencyCode": "Currency code",
1118
+ "chart.runtime.axisFormat.currencyCodeHint": "Leave blank to follow the viewer's locale",
1070
1119
  "chart.runtime.axisFormat.abbreviation": "Abbreviation",
1071
1120
  "chart.runtime.axisFormat.yes": "Yes",
1072
1121
  "chart.runtime.axisFormat.no": "No",
@@ -1472,6 +1521,7 @@ var v = (e, t, n) => {
1472
1521
  "portlet.invalidQuery": "Invalid query or no results",
1473
1522
  "portlet.unsupportedChartType": "Unsupported chart type",
1474
1523
  "portlet.unableToRender": "Unable to render chart",
1524
+ "portlet.droppedMembers": "Hidden — no longer in the model: {members}",
1475
1525
  "portlet.enterTitle": "Enter portlet title...",
1476
1526
  "portlet.enterPortletTitle": "Please enter a title for the portlet.",
1477
1527
  "portlet.configureQuery": "Please configure a query before saving.",
@@ -1610,9 +1660,9 @@ async function te(e) {
1610
1660
  try {
1611
1661
  let t = await v(/* #__PURE__ */ Object.assign({
1612
1662
  "./locales/af-ZA.json": () => import("./af-ZA-C0dGb_53.js"),
1613
- "./locales/en-US.json": () => import("./en-US-BE6VoG0o.js"),
1663
+ "./locales/en-US.json": () => import("./en-US-HP6FHuNy.js"),
1614
1664
  "./locales/en.json": () => Promise.resolve().then(() => y),
1615
- "./locales/nl-NL.json": () => import("./nl-NL-CMXHDBr0.js")
1665
+ "./locales/nl-NL.json": () => import("./nl-NL-CEdoCz6Q.js")
1616
1666
  }), `./locales/${e}.json`, 3);
1617
1667
  x = e, S = {
1618
1668
  ...b,
@@ -1674,7 +1724,7 @@ function D(e) {
1674
1724
  }
1675
1725
  //#endregion
1676
1726
  //#region src/client/utils/axisValueFormatting.ts
1677
- function ae(e) {
1727
+ function O(e) {
1678
1728
  return {
1679
1729
  US: "USD",
1680
1730
  CA: "CAD",
@@ -1720,7 +1770,7 @@ function ae(e) {
1720
1770
  TR: "TRY"
1721
1771
  }[e.split("-")[1]?.toUpperCase()] || "USD";
1722
1772
  }
1723
- function oe(e, t) {
1773
+ function ae(e, t) {
1724
1774
  if (!t) return {
1725
1775
  displayValue: e,
1726
1776
  abbreviationSuffix: ""
@@ -1740,8 +1790,11 @@ function oe(e, t) {
1740
1790
  abbreviationSuffix: ""
1741
1791
  };
1742
1792
  }
1793
+ function oe(e, t) {
1794
+ return e && /^[A-Za-z]{3}$/.test(e) ? e.toUpperCase() : O(t);
1795
+ }
1743
1796
  function se(e) {
1744
- let { displayValue: t, abbreviate: n, abbreviationSuffix: r, decimals: i, locale: a } = e, o = ae(a);
1797
+ let { displayValue: t, abbreviate: n, abbreviationSuffix: r, decimals: i, locale: a } = e, o = oe(e.config.currencyCode, a);
1745
1798
  if (n && r) {
1746
1799
  let e = new Intl.NumberFormat(a, {
1747
1800
  style: "currency",
@@ -1775,7 +1828,7 @@ function le(e) {
1775
1828
  maximumFractionDigits: r
1776
1829
  }).format(t) + n + s;
1777
1830
  }
1778
- function O(e) {
1831
+ function k(e) {
1779
1832
  let { displayValue: t, abbreviationSuffix: n, decimals: r, locale: i } = e;
1780
1833
  return new Intl.NumberFormat(i, {
1781
1834
  minimumFractionDigits: r,
@@ -1786,10 +1839,10 @@ var ue = {
1786
1839
  currency: se,
1787
1840
  percent: ce,
1788
1841
  custom: le,
1789
- number: O
1842
+ number: k
1790
1843
  };
1791
1844
  function de(e) {
1792
- return ((e.config.unit ? ue[e.config.unit] : void 0) || O)(e);
1845
+ return ((e.config.unit ? ue[e.config.unit] : void 0) || k)(e);
1793
1846
  }
1794
1847
  //#endregion
1795
1848
  //#region src/client/utils/timeValueFormatting.ts
@@ -1826,27 +1879,27 @@ function me(e) {
1826
1879
  }
1827
1880
  //#endregion
1828
1881
  //#region src/client/utils/chartUtils.ts
1829
- function k(e) {
1882
+ function A(e) {
1830
1883
  return e != null && !isNaN(Number(e));
1831
1884
  }
1832
- function A(e) {
1885
+ function j(e) {
1833
1886
  if (e == null) return null;
1834
1887
  let t = typeof e == "string" ? parseFloat(e) : Number(e);
1835
1888
  return isNaN(t) ? null : t;
1836
1889
  }
1837
- function j(e) {
1890
+ function M(e) {
1838
1891
  if (e == null) return "No data";
1839
1892
  let t = typeof e == "number" ? e : parseFloat(e);
1840
1893
  return isNaN(t) ? String(e) : Number.isInteger(t) ? t.toLocaleString() : parseFloat(t.toFixed(2)).toLocaleString();
1841
1894
  }
1842
- function M(e, t, n) {
1895
+ function N(e, t, n) {
1843
1896
  if (e == null) return "No data";
1844
1897
  let r = typeof e == "number" ? e : parseFloat(String(e));
1845
1898
  if (isNaN(r)) return String(e);
1846
1899
  if (!isFinite(r)) return r > 0 ? "∞" : "-∞";
1847
1900
  let i = n || (typeof navigator < "u" ? navigator.language : "en-US");
1848
- if (!t) return j(e);
1849
- let { abbreviate: a = !0, decimals: o } = t, { displayValue: s, abbreviationSuffix: c } = oe(r, a);
1901
+ if (!t) return M(e);
1902
+ let { abbreviate: a = !0, decimals: o } = t, { displayValue: s, abbreviationSuffix: c } = ae(r, a);
1850
1903
  return de({
1851
1904
  displayValue: s,
1852
1905
  abbreviate: a,
@@ -1857,15 +1910,15 @@ function M(e, t, n) {
1857
1910
  });
1858
1911
  }
1859
1912
  function he(e) {
1860
- return (t) => M(t, e);
1913
+ return (t) => N(t, e);
1861
1914
  }
1862
- function N(e, t) {
1915
+ function P(e, t) {
1863
1916
  return t[e] || e;
1864
1917
  }
1865
1918
  function ge(e, t) {
1866
- return e.map((e) => N(e, t));
1919
+ return e.map((e) => P(e, t));
1867
1920
  }
1868
- function P(e, t) {
1921
+ function F(e, t) {
1869
1922
  if (!e) return "Unknown";
1870
1923
  let n = String(e), r = fe(n);
1871
1924
  if (!r) return n;
@@ -1875,7 +1928,7 @@ function P(e, t) {
1875
1928
  }
1876
1929
  return me(r);
1877
1930
  }
1878
- function F(e, t) {
1931
+ function I(e, t) {
1879
1932
  try {
1880
1933
  if (e?.timeDimensions) {
1881
1934
  let n = e.timeDimensions.find((e) => t === e.dimension || t.startsWith(e.dimension.replace(".", "_")) || t === `${e.dimension}_${e.granularity}`);
@@ -1900,18 +1953,18 @@ function F(e, t) {
1900
1953
  return;
1901
1954
  }
1902
1955
  }
1903
- function I(e, t, n, r, i = (e) => e) {
1956
+ function L(e, t, n, r, i = (e) => e) {
1904
1957
  if (!e || e.length === 0) return [];
1905
- let a = F(r, t);
1958
+ let a = I(r, t);
1906
1959
  return e.map((e) => {
1907
- let r = { name: P(e[t], a) || e[t] || "Unknown" };
1960
+ let r = { name: F(e[t], a) || e[t] || "Unknown" };
1908
1961
  return n.forEach((t) => {
1909
1962
  let n = i(t);
1910
- n !== "__proto__" && n !== "constructor" && n !== "prototype" && (r[n] = A(e[t]));
1963
+ n !== "__proto__" && n !== "constructor" && n !== "prototype" && (r[n] = j(e[t]));
1911
1964
  }), r;
1912
1965
  });
1913
1966
  }
1914
- function L(e, t, n, r, i, a = (e) => e) {
1967
+ function _e(e, t, n, r, i, a = (e) => e) {
1915
1968
  if (!e || e.length === 0) return {
1916
1969
  data: [],
1917
1970
  seriesKeys: [],
@@ -1921,11 +1974,11 @@ function L(e, t, n, r, i, a = (e) => e) {
1921
1974
  if (u.length > 0) {
1922
1975
  let n = {};
1923
1976
  return e.forEach((e) => {
1924
- let i = F(r, t), o = P(e[t], i) || e[t] || "Unknown";
1977
+ let i = I(r, t), o = F(e[t], i) || e[t] || "Unknown";
1925
1978
  o !== "__proto__" && o !== "constructor" && o !== "prototype" && (n[o] || (n[o] = { name: String(o) }), l.forEach((t) => {
1926
1979
  let r = a(t);
1927
1980
  if (r === "__proto__" || r === "constructor" || r === "prototype") return;
1928
- let i = A(e[t]);
1981
+ let i = j(e[t]);
1929
1982
  if (i !== null) {
1930
1983
  let e = n[o][r];
1931
1984
  n[o][r] = e == null ? i : e + i;
@@ -1936,7 +1989,7 @@ function L(e, t, n, r, i, a = (e) => e) {
1936
1989
  let t = String(r), i = l[0] || c.find((e) => e.includes("totalCost") || e.includes("count") || e.includes("sum")) || c[0];
1937
1990
  if (i) {
1938
1991
  if (t === "__proto__" || t === "constructor" || t === "prototype") return;
1939
- let r = A(e[i]);
1992
+ let r = j(e[i]);
1940
1993
  if (r !== null) {
1941
1994
  let e = n[o][t];
1942
1995
  n[o][t] = e == null ? r : e + r;
@@ -1954,7 +2007,7 @@ function L(e, t, n, r, i, a = (e) => e) {
1954
2007
  };
1955
2008
  }
1956
2009
  return {
1957
- data: I(e, t, n, r, a),
2010
+ data: L(e, t, n, r, a),
1958
2011
  seriesKeys: n.map((e) => a(e)),
1959
2012
  hasDimensions: !1
1960
2013
  };
@@ -1968,18 +2021,18 @@ function R() {
1968
2021
  }
1969
2022
  //#endregion
1970
2023
  //#region src/client/theme/index.ts
1971
- function _e(e) {
2024
+ function ve(e) {
1972
2025
  return typeof window > "u" ? "" : getComputedStyle(document.documentElement).getPropertyValue(`--dc-${e}`).trim();
1973
2026
  }
1974
2027
  function z(e, t) {
1975
2028
  typeof window > "u" || document.documentElement.style.setProperty(`--dc-${e}`, t);
1976
2029
  }
1977
- function ve(e) {
2030
+ function ye(e) {
1978
2031
  typeof window > "u" || Object.entries(e.colors).forEach(([e, t]) => {
1979
2032
  t && z(e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`), t);
1980
2033
  });
1981
2034
  }
1982
- function ye() {
2035
+ function be() {
1983
2036
  if (typeof window > "u") return;
1984
2037
  let e = document.documentElement.style;
1985
2038
  Array.from(e).forEach((t) => {
@@ -1993,10 +2046,10 @@ function B() {
1993
2046
  let t = document.documentElement.getAttribute("data-theme");
1994
2047
  return t === "dark" || t === "neon" ? t : document.documentElement.classList.contains("dark") || document.body.classList.contains("dark") ? "dark" : document.documentElement.classList.contains("neon") || document.body.classList.contains("neon") ? "neon" : window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
1995
2048
  }
1996
- function be(e) {
2049
+ function xe(e) {
1997
2050
  typeof window > "u" || (document.documentElement.classList.remove("dark", "neon"), document.documentElement.setAttribute("data-theme", e), (e === "dark" || e === "neon") && document.documentElement.classList.add(e), localStorage.setItem("theme", e));
1998
2051
  }
1999
- function xe() {
2052
+ function Se() {
2000
2053
  let e = B();
2001
2054
  return e === "dark" || e === "neon";
2002
2055
  }
@@ -2014,7 +2067,7 @@ function V(e) {
2014
2067
  t.disconnect(), n.removeEventListener("change", r);
2015
2068
  };
2016
2069
  }
2017
- var Se = {
2070
+ var Ce = {
2018
2071
  light: {
2019
2072
  name: "light",
2020
2073
  colors: {
@@ -2062,7 +2115,7 @@ var Se = {
2062
2115
  danger: "#ff1493"
2063
2116
  }
2064
2117
  }
2065
- }, Ce = [
2118
+ }, we = [
2066
2119
  "#3b82f6",
2067
2120
  "#10b981",
2068
2121
  "#f59e0b",
@@ -2078,12 +2131,12 @@ var Se = {
2078
2131
  "#22a884",
2079
2132
  "#7ad151",
2080
2133
  "#fde725"
2081
- ], we = "#10b981", Te = "#ef4444", U = {
2134
+ ], Te = "#10b981", Ee = "#ef4444", U = {
2082
2135
  top: 5,
2083
2136
  right: 30,
2084
2137
  left: 20,
2085
2138
  bottom: 5
2086
- }, Ee = {
2139
+ }, De = {
2087
2140
  top: 5,
2088
2141
  right: 30,
2089
2142
  left: 20,
@@ -2139,7 +2192,7 @@ function W() {
2139
2192
  }
2140
2193
  //#endregion
2141
2194
  //#region src/client/components/charts/BubbleChart.helpers.ts
2142
- function De(e) {
2195
+ function Oe(e) {
2143
2196
  return {
2144
2197
  showLegend: e?.showLegend ?? !0,
2145
2198
  showGrid: e?.showGrid ?? !0,
@@ -2151,7 +2204,7 @@ function De(e) {
2151
2204
  leftYAxisFormat: e?.leftYAxisFormat
2152
2205
  };
2153
2206
  }
2154
- function Oe(e) {
2207
+ function ke(e) {
2155
2208
  if (!e?.xAxis || !e?.yAxis || !e?.series) return null;
2156
2209
  let t = Array.isArray(e.xAxis) ? e.xAxis[0] : e.xAxis, n = Array.isArray(e.yAxis) ? e.yAxis[0] : e.yAxis, r = Array.isArray(e.series) ? e.series[0] : e.series, i = (Array.isArray(e.sizeField) ? e.sizeField[0] : e.sizeField) || n;
2157
2210
  return !t || !n || !r || !i ? null : {
@@ -2162,7 +2215,7 @@ function Oe(e) {
2162
2215
  colorFieldName: Array.isArray(e.colorField) ? e.colorField[0] : e.colorField
2163
2216
  };
2164
2217
  }
2165
- function ke(e, t, n) {
2218
+ function Ae(e, t, n) {
2166
2219
  if (t && e) {
2167
2220
  let t = String(e), r;
2168
2221
  if (t.match(/^\d{4}-\d{2}-\d{2}[T ]/)) {
@@ -2171,19 +2224,19 @@ function ke(e, t, n) {
2171
2224
  } else r = new Date(t);
2172
2225
  return {
2173
2226
  xNum: isNaN(r.getTime()) ? parseFloat(t) : r.getTime(),
2174
- xLabel: P(e, n)
2227
+ xLabel: F(e, n)
2175
2228
  };
2176
2229
  }
2177
- let r = P(e, n) || e;
2230
+ let r = F(e, n) || e;
2178
2231
  return {
2179
2232
  xNum: typeof r == "string" ? parseFloat(r) : r,
2180
2233
  xLabel: String(r)
2181
2234
  };
2182
2235
  }
2183
- function Ae(e, t, n) {
2184
- let { xAxisField: r, yAxisField: i, sizeFieldName: a, seriesField: o, colorFieldName: s } = t, c = F(n, r), l = n?.timeDimensions?.some((e) => e.dimension === r) || !1;
2236
+ function je(e, t, n) {
2237
+ let { xAxisField: r, yAxisField: i, sizeFieldName: a, seriesField: o, colorFieldName: s } = t, c = I(n, r), l = n?.timeDimensions?.some((e) => e.dimension === r) || !1;
2185
2238
  return e.map((e) => {
2186
- let { xNum: t, xLabel: n } = ke(e[r], l, c), u = A(e[i]), d = A(e[a]), f = e[o];
2239
+ let { xNum: t, xLabel: n } = Ae(e[r], l, c), u = j(e[i]), d = j(e[a]), f = e[o];
2187
2240
  return {
2188
2241
  x: t,
2189
2242
  xLabel: n,
@@ -2192,14 +2245,14 @@ function Ae(e, t, n) {
2192
2245
  color: s ? e[s] : f,
2193
2246
  series: f,
2194
2247
  label: `${f || "Unknown"}`,
2195
- isValid: k(t) && u !== null && d !== null && d > 0
2248
+ isValid: A(t) && u !== null && d !== null && d > 0
2196
2249
  };
2197
2250
  }).filter((e) => e.isValid && e.size > 0).map(({ isValid: e, ...t }) => t);
2198
2251
  }
2199
2252
  function G(e, t) {
2200
2253
  return getComputedStyle(document.documentElement).getPropertyValue(e).trim() || t;
2201
2254
  }
2202
- function je(e) {
2255
+ function Me(e) {
2203
2256
  return {
2204
2257
  textColor: e ? G("--dc-text-muted", "#cbd5e1") : G("--dc-text-secondary", "#374151"),
2205
2258
  gridColor: e ? G("--dc-border", "#475569") : "#9ca3af"
@@ -2207,7 +2260,7 @@ function je(e) {
2207
2260
  }
2208
2261
  //#endregion
2209
2262
  //#region src/client/components/charts/ActivityGridChart.helpers.ts
2210
- var K = (e) => Math.floor(e.getMonth() / 3) + 1, Me = (e) => e.getMonth() % 3 + 1, Ne = (e) => Math.floor((e.getDate() - 1) / 7) + 1, Pe = [
2263
+ var K = (e) => Math.floor(e.getMonth() / 3) + 1, Ne = (e) => e.getMonth() % 3 + 1, Pe = (e) => Math.floor((e.getDate() - 1) / 7) + 1, Fe = [
2211
2264
  "J",
2212
2265
  "F",
2213
2266
  "M",
@@ -2253,7 +2306,7 @@ var K = (e) => Math.floor(e.getMonth() / 3) + 1, Me = (e) => e.getMonth() % 3 +
2253
2306
  "18-21",
2254
2307
  "21-00"
2255
2308
  ];
2256
- function Fe(e) {
2309
+ function Ie(e) {
2257
2310
  let t = new Date(Date.UTC(e.getFullYear(), e.getMonth(), e.getDate())), n = t.getUTCDay() || 7;
2258
2311
  t.setUTCDate(t.getUTCDate() + 4 - n);
2259
2312
  let r = t.getUTCFullYear(), i = new Date(Date.UTC(r, 0, 1));
@@ -2262,7 +2315,7 @@ function Fe(e) {
2262
2315
  week: Math.ceil(((t.getTime() - i.getTime()) / 864e5 + 1) / 7)
2263
2316
  };
2264
2317
  }
2265
- var Ie = {
2318
+ var Le = {
2266
2319
  quarter: {
2267
2320
  extractX: (e) => e.getFullYear(),
2268
2321
  extractY: (e) => K(e) - 1,
@@ -2275,7 +2328,7 @@ var Ie = {
2275
2328
  },
2276
2329
  month: {
2277
2330
  extractX: (e) => e.getFullYear() * 10 + K(e),
2278
- extractY: (e) => Me(e) - 1,
2331
+ extractY: (e) => Ne(e) - 1,
2279
2332
  xLabels: [],
2280
2333
  yLabels: J,
2281
2334
  xFormat: (e) => `Q${e % 10}`,
@@ -2287,10 +2340,10 @@ var Ie = {
2287
2340
  },
2288
2341
  week: {
2289
2342
  extractX: (e) => e.getFullYear() * 100 + (e.getMonth() + 1),
2290
- extractY: (e) => Ne(e) - 1,
2343
+ extractY: (e) => Pe(e) - 1,
2291
2344
  xLabels: [],
2292
2345
  yLabels: Y,
2293
- xFormat: (e) => Pe[e % 100 - 1] || "",
2346
+ xFormat: (e) => Fe[e % 100 - 1] || "",
2294
2347
  yFormat: (e) => Y[e] || "",
2295
2348
  cellWidth: 16,
2296
2349
  cellHeight: 16,
@@ -2299,7 +2352,7 @@ var Ie = {
2299
2352
  },
2300
2353
  day: {
2301
2354
  extractX: (e) => {
2302
- let { year: t, week: n } = Fe(e);
2355
+ let { year: t, week: n } = Ie(e);
2303
2356
  return t * 100 + n;
2304
2357
  },
2305
2358
  extractY: (e) => e.getDay(),
@@ -2325,13 +2378,13 @@ var Ie = {
2325
2378
  getYearFromX: (e) => Math.floor(e / 100)
2326
2379
  }
2327
2380
  };
2328
- function Le(e) {
2329
- return Ie[e?.toLowerCase()] ?? null;
2381
+ function Re(e) {
2382
+ return Le[e?.toLowerCase()] ?? null;
2330
2383
  }
2331
2384
  function Q(e) {
2332
2385
  if (e) return Array.isArray(e) ? e[0] : e;
2333
2386
  }
2334
- function Re(e, t) {
2387
+ function ze(e, t) {
2335
2388
  let n = e?.timeDimensions;
2336
2389
  if (!n || n.length === 0) return "day";
2337
2390
  let r = n.find((e) => e.dimension === t || e.dimension.includes(t));
@@ -2339,28 +2392,28 @@ function Re(e, t) {
2339
2392
  let i = n[0];
2340
2393
  return i && i.granularity ? i.granularity : "day";
2341
2394
  }
2342
- function ze(e) {
2395
+ function Be(e) {
2343
2396
  if (typeof e == "string") {
2344
2397
  let t = e;
2345
2398
  return e.includes(" ") && (t = e.replace(" ", "T").replace("+00", "Z").replace(/\+\d{2}:\d{2}$/, "Z")), !t.endsWith("Z") && !t.includes("+") && (t += "Z"), new Date(t);
2346
2399
  }
2347
2400
  return new Date(e);
2348
2401
  }
2349
- function Be(e, t, n, r, i) {
2402
+ function Ve(e, t, n, r, i) {
2350
2403
  return e.map((e) => {
2351
- let a = e[t], o = typeof e[n] == "string" ? parseFloat(e[n]) : e[n] || 0, s = ze(a);
2404
+ let a = e[t], o = typeof e[n] == "string" ? parseFloat(e[n]) : e[n] || 0, s = Be(a);
2352
2405
  return isNaN(s.getTime()) ? null : {
2353
2406
  x: r.extractX(s),
2354
2407
  y: r.extractY(s),
2355
2408
  value: o,
2356
2409
  date: s,
2357
- label: P(a, i)
2410
+ label: F(a, i)
2358
2411
  };
2359
2412
  }).filter((e) => e !== null);
2360
2413
  }
2361
2414
  //#endregion
2362
2415
  //#region src/client/components/charts/ActivityGridChart.render.ts
2363
- var Ve = [
2416
+ var He = [
2364
2417
  "Jan",
2365
2418
  "Feb",
2366
2419
  "Mar",
@@ -2374,7 +2427,7 @@ var Ve = [
2374
2427
  "Nov",
2375
2428
  "Dec"
2376
2429
  ];
2377
- function $(e) {
2430
+ function Ue(e) {
2378
2431
  return {
2379
2432
  textColor: e ? G("--dc-text-muted", "#cbd5e1") : G("--dc-text-secondary", "#374151"),
2380
2433
  lineColor: G("--dc-border", "#e5e7eb"),
@@ -2382,7 +2435,7 @@ function $(e) {
2382
2435
  cellStrokeColor: e ? G("--dc-border", "#334155") : G("--dc-bg", "#ffffff")
2383
2436
  };
2384
2437
  }
2385
- function He(e) {
2438
+ function We(e) {
2386
2439
  let { gridData: t, gridMapping: n, dimensions: r, safeDisplayConfig: i } = e, a = f(t, (e) => e.y) || 0, o = p(t, (e) => e.y) || 0, s = [...new Set(t.map((e) => e.x))].sort((e, t) => e - t), c = s.length * n.cellWidth + (s.length - 1) * 4, l = (a - o + 1) * n.cellHeight + (a - o) * 4, u = {
2387
2440
  ...U,
2388
2441
  left: 60,
@@ -2402,10 +2455,10 @@ function He(e) {
2402
2455
  svgWidth: y
2403
2456
  };
2404
2457
  }
2405
- function Ue() {
2458
+ function Ge() {
2406
2459
  return h("body").append("div").attr("class", "activity-grid-tooltip").style("position", "absolute").style("padding", "8px").style("background", "rgba(0, 0, 0, 0.8)").style("color", "white").style("border-radius", "4px").style("font-size", "12px").style("pointer-events", "none").style("opacity", 0).style("z-index", 1e3);
2407
2460
  }
2408
- function We(e, t, n, r, i) {
2461
+ function $(e, t, n, r, i) {
2409
2462
  e.style("cursor", t.drillEnabled ? "pointer" : "default").on("mouseover", function(e) {
2410
2463
  if (h(this).style("stroke", "#000").style("stroke-width", 2), n) {
2411
2464
  let i = [`<strong>${n.label}</strong>`, `${t.getFieldLabel(t.valueField)}: ${n.value}`].join("<br>");
@@ -2417,14 +2470,14 @@ function We(e, t, n, r, i) {
2417
2470
  h(this).style("stroke", i).style("stroke-width", 1), r.transition().duration(200).style("opacity", 0);
2418
2471
  });
2419
2472
  }
2420
- function Ge(e, t, n, r, i, a) {
2473
+ function Ke(e, t, n, r, i, a) {
2421
2474
  let { gridData: o, valueField: s, dateField: c, drillEnabled: l, onDataPointClick: u, safeDisplayConfig: d } = e, { completeXRange: f, minY: p, maxY: m, finalCellWidth: h, finalCellHeight: g } = n, _ = /* @__PURE__ */ new Map();
2422
2475
  o.forEach((e) => _.set(`${e.x}-${e.y}`, e));
2423
2476
  let v = /* @__PURE__ */ new Map();
2424
2477
  f.forEach((e, t) => v.set(e, t));
2425
2478
  for (let n of f) for (let o = p; o <= m; o++) {
2426
2479
  let f = _.get(`${n}-${o}`), m = v.get(n) || 0, y = t.append("rect").attr("x", m * (h + 4)).attr("y", (o - p) * (g + 4)).attr("width", h).attr("height", g).attr("rx", 2).attr("ry", 2).style("fill", f ? r(f.value) : a.emptyCellColor).style("stroke", a.cellStrokeColor).style("stroke-width", 1);
2427
- d.showTooltip ? We(y, e, f, i, a.cellStrokeColor) : l && y.style("cursor", "pointer"), l && u && f && y.on("click", function(e) {
2480
+ d.showTooltip ? $(y, e, f, i, a.cellStrokeColor) : l && y.style("cursor", "pointer"), l && u && f && y.on("click", function(e) {
2428
2481
  u({
2429
2482
  dataPoint: {
2430
2483
  [s]: f.value,
@@ -2441,14 +2494,14 @@ function Ge(e, t, n, r, i, a) {
2441
2494
  });
2442
2495
  }
2443
2496
  }
2444
- function Ke(e) {
2497
+ function qe(e) {
2445
2498
  if (e > 9999) {
2446
2499
  let t = Math.floor(e / 100);
2447
- return `${Ve[e % 100 - 1]} '${t.toString().slice(-2)}`;
2500
+ return `${He[e % 100 - 1]} '${t.toString().slice(-2)}`;
2448
2501
  }
2449
2502
  return `'${e.toString().slice(-2)}`;
2450
2503
  }
2451
- function qe(e, t, n, r) {
2504
+ function Je(e, t, n, r) {
2452
2505
  let { gridMapping: i } = e, { completeXRange: a, finalCellWidth: o } = n, s = /* @__PURE__ */ new Map();
2453
2506
  a.forEach((e, t) => s.set(e, t));
2454
2507
  let c = /* @__PURE__ */ new Map();
@@ -2463,29 +2516,29 @@ function qe(e, t, n, r) {
2463
2516
  for (let [e, n] of c) {
2464
2517
  if (n.length === 0) continue;
2465
2518
  let i = Math.min(...n.map((e) => s.get(e) || 0)), a = Math.max(...n.map((e) => s.get(e) || 0)), c = (i + a) / 2;
2466
- t.append("text").attr("x", c * (o + 4) + o / 2).attr("y", -25).attr("text-anchor", "middle").style("font-size", "12px").style("font-weight", "bold").style("fill", r.textColor).text(Ke(e)), n.length > 1 && t.append("line").attr("x1", i * (o + 4)).attr("x2", a * (o + 4) + o).attr("y1", -20).attr("y2", -20).style("stroke", r.lineColor).style("stroke-width", 1).style("opacity", .3);
2519
+ t.append("text").attr("x", c * (o + 4) + o / 2).attr("y", -25).attr("text-anchor", "middle").style("font-size", "12px").style("font-weight", "bold").style("fill", r.textColor).text(qe(e)), n.length > 1 && t.append("line").attr("x1", i * (o + 4)).attr("x2", a * (o + 4) + o).attr("y1", -20).attr("y2", -20).style("stroke", r.lineColor).style("stroke-width", 1).style("opacity", .3);
2467
2520
  }
2468
2521
  }
2469
- function Je(e, t, n, r) {
2522
+ function Ye(e, t, n, r) {
2470
2523
  let { gridMapping: i } = e, { completeXRange: a, finalCellWidth: o } = n, s = Math.max(1, Math.floor(a.length / 10));
2471
2524
  for (let e = 0; e < a.length; e += s) t.append("text").attr("x", e * (o + 4) + o / 2).attr("y", -8).attr("text-anchor", "middle").style("font-size", "10px").style("fill", r.textColor).text(i.xFormat(a[e]));
2472
2525
  }
2473
- function Ye(e, t, n, r) {
2526
+ function Xe(e, t, n, r) {
2474
2527
  let { gridMapping: i } = e, { minY: a, maxY: o, finalCellHeight: s } = n;
2475
- i.hasHierarchicalLabels && i.getYearFromX ? qe(e, t, n, r) : Je(e, t, n, r);
2528
+ i.hasHierarchicalLabels && i.getYearFromX ? Je(e, t, n, r) : Ye(e, t, n, r);
2476
2529
  for (let e = a; e <= o; e++) t.append("text").attr("x", -8).attr("y", (e - a) * (s + 4) + s / 2).attr("text-anchor", "end").attr("dy", ".35em").style("font-size", "10px").style("fill", r.textColor).text(i.yFormat(e));
2477
2530
  }
2478
- function Xe(e) {
2531
+ function Ze(e) {
2479
2532
  let { svgEl: t, gridData: n, dimensions: r, colorPalette: i, isDark: a, safeDisplayConfig: o } = e;
2480
2533
  if (h(t).selectAll("*").remove(), n.length === 0) return;
2481
- let s = He(e), c = h(t).attr("width", s.svgWidth).attr("height", r.height).append("g").attr("transform", `translate(${s.margin.left},${s.margin.top})`), l = n.map((e) => e.value), u = m().domain([p(l) || 0, f(l) || 1]).range(i?.gradient || H), d = $(a), g = Ue();
2482
- return Ge(e, c, s, u, g, d), o.showLabels && Ye(e, c, s, d), () => {
2534
+ let s = We(e), c = h(t).attr("width", s.svgWidth).attr("height", r.height).append("g").attr("transform", `translate(${s.margin.left},${s.margin.top})`), l = n.map((e) => e.value), u = m().domain([p(l) || 0, f(l) || 1]).range(i?.gradient || H), d = Ue(a), g = Ge();
2535
+ return Ke(e, c, s, u, g, d), o.showLabels && Xe(e, c, s, d), () => {
2483
2536
  g.remove();
2484
2537
  };
2485
2538
  }
2486
2539
  //#endregion
2487
2540
  //#region src/client/components/charts/ActivityGridChart.tsx
2488
- var Ze = /* @__PURE__ */ e({ default: () => Qe }), Qe = t.memo(function({ data: e, chartConfig: t, displayConfig: n = {}, queryObject: r, height: i = "100%", colorPalette: o, onDataPointClick: f, drillEnabled: p }) {
2541
+ var Qe = /* @__PURE__ */ e({ default: () => $e }), $e = t.memo(function({ data: e, chartConfig: t, displayConfig: n = {}, queryObject: r, height: i = "100%", colorPalette: o, onDataPointClick: f, drillEnabled: p }) {
2489
2542
  let { t: m } = D(), h = c(null), { containerRef: g, dimensions: _, dimensionsReady: v } = W(), [y, b] = l("light"), x = R();
2490
2543
  a(() => (b(B()), V((e) => b(e))), []);
2491
2544
  let S = s(() => ({
@@ -2501,10 +2554,10 @@ var Ze = /* @__PURE__ */ e({ default: () => Qe }), Qe = t.memo(function({ data:
2501
2554
  if (!e || e.length === 0 || !h.current || !v || _.width === 0 || !t?.dateField || !t?.valueField) return;
2502
2555
  let n = Q(t.dateField), i = Q(t.valueField);
2503
2556
  if (!n || !i) return;
2504
- let a = Re(r, n), s = Le(a);
2557
+ let a = ze(r, n), s = Re(a);
2505
2558
  if (!s) return;
2506
- let c = Be(e, n, i, s, a);
2507
- return Xe({
2559
+ let c = Ve(e, n, i, s, a);
2560
+ return Ze({
2508
2561
  svgEl: h.current,
2509
2562
  gridData: c,
2510
2563
  gridMapping: s,
@@ -2606,6 +2659,6 @@ var Ze = /* @__PURE__ */ e({ default: () => Qe }), Qe = t.memo(function({ data:
2606
2659
  });
2607
2660
  });
2608
2661
  //#endregion
2609
- export { A, he as C, F as D, P as E, ie as F, ee as I, w as L, L as M, ge as N, N as O, D as P, g as R, R as S, j as T, xe as _, Ae as a, z as b, H as c, we as d, Ee as f, _e as g, B as h, je as i, I as j, k, U as l, ve as m, De as n, W as o, Se as p, Oe as r, Ce as s, Ze as t, Te as u, ye as v, M as w, V as x, be as y, _ as z };
2662
+ export { j as A, _ as B, he as C, I as D, F as E, D as F, ie as I, ee as L, _e as M, ge as N, P as O, O as P, w as R, R as S, M as T, Se as _, je as a, z as b, H as c, Te as d, De as f, ve as g, B as h, Me as i, L as j, A as k, U as l, ye as m, Oe as n, W as o, Ce as p, ke as r, we as s, Qe as t, Ee as u, be as v, N as w, V as x, xe as y, g as z };
2610
2663
 
2611
- //# sourceMappingURL=chart-activity-grid-DvD_4wJz.js.map
2664
+ //# sourceMappingURL=chart-activity-grid-DO82rrbW.js.map