drizzle-cube 0.8.0 → 0.8.2

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 (329) hide show
  1. package/dist/adapters/ActivityGridChart.config-Bc7mPqcf.cjs +1 -0
  2. package/dist/adapters/ActivityGridChart.config-Dd2YDeaM.js +2 -0
  3. package/dist/adapters/AreaChart.config-BqNusnpg.js +2 -0
  4. package/dist/adapters/AreaChart.config-dI84V34B.cjs +1 -0
  5. package/dist/adapters/BarChart.config-B9MQjgLJ.cjs +1 -0
  6. package/dist/adapters/BarChart.config-Cq_qcxBA.js +2 -0
  7. package/dist/adapters/BoxPlotChart.config-XmtRN2xq.cjs +1 -0
  8. package/dist/adapters/BoxPlotChart.config-Zc-JGV-W.js +2 -0
  9. package/dist/adapters/BubbleChart.config-CU_18uxb.js +2 -0
  10. package/dist/adapters/BubbleChart.config-CbhOzA6-.cjs +1 -0
  11. package/dist/adapters/CandlestickChart.config-Bwo3uaa-.js +2 -0
  12. package/dist/adapters/CandlestickChart.config-CmRBlWFv.cjs +1 -0
  13. package/dist/adapters/DataTable.config-7JNSj6qQ.js +2 -0
  14. package/dist/adapters/DataTable.config-DNxm1sYk.cjs +1 -0
  15. package/dist/adapters/DotStripChart.config-B7Dl-T1h.js +2 -0
  16. package/dist/adapters/DotStripChart.config-Co4g1fpZ.cjs +1 -0
  17. package/dist/adapters/FunnelChart.config-D1TpuGtL.cjs +1 -0
  18. package/dist/adapters/FunnelChart.config-vuZScOHQ.js +2 -0
  19. package/dist/adapters/GaugeChart.config-BMgUHKhC.cjs +1 -0
  20. package/dist/adapters/GaugeChart.config-zdpFydo6.js +2 -0
  21. package/dist/adapters/HeatMapChart.config-4XMab1zq.js +2 -0
  22. package/dist/adapters/HeatMapChart.config-C-Ns6QBq.cjs +1 -0
  23. package/dist/adapters/KpiDelta.config-BGdqsHcc.js +2 -0
  24. package/dist/adapters/KpiDelta.config-DuNxrGIi.cjs +1 -0
  25. package/dist/adapters/KpiNumber.config-CkPWpcSz.js +2 -0
  26. package/dist/adapters/KpiNumber.config-DMGmuA3i.cjs +1 -0
  27. package/dist/adapters/KpiText.config-Bvtuv8vE.js +2 -0
  28. package/dist/adapters/KpiText.config-DOMLO16U.cjs +1 -0
  29. package/dist/adapters/LineChart.config-CJmTSmZ1.js +2 -0
  30. package/dist/adapters/LineChart.config-CrkGu0aa.cjs +1 -0
  31. package/dist/adapters/MarkdownChart.config-BgY5Xc97.cjs +1 -0
  32. package/dist/adapters/MarkdownChart.config-Cm6G4Yuh.js +2 -0
  33. package/dist/adapters/MeasureProfileChart.config-BYwDo_ox.cjs +1 -0
  34. package/dist/adapters/MeasureProfileChart.config-Dt7npubZ.js +2 -0
  35. package/dist/adapters/PieChart.config-BRbPctBN.cjs +1 -0
  36. package/dist/adapters/PieChart.config-HZofeody.js +2 -0
  37. package/dist/adapters/ProportionBarChart.config-B_rTtGZr.cjs +1 -0
  38. package/dist/adapters/ProportionBarChart.config-ChCSoM0L.js +2 -0
  39. package/dist/adapters/RadarChart.config-B9OdMEib.js +2 -0
  40. package/dist/adapters/RadarChart.config-BOgPD2Kz.cjs +1 -0
  41. package/dist/adapters/RadialBarChart.config-CeP7jEbq.js +2 -0
  42. package/dist/adapters/RadialBarChart.config-sivA1Jmo.cjs +1 -0
  43. package/dist/adapters/RecordsTable.config-BInSgo-G.js +2 -0
  44. package/dist/adapters/RecordsTable.config-CVmxLdjz.cjs +1 -0
  45. package/dist/adapters/RetentionCombinedChart.config-8ry7gh6X.cjs +1 -0
  46. package/dist/adapters/RetentionCombinedChart.config-Bxtxnlcf.js +2 -0
  47. package/dist/adapters/RetentionHeatmap.config-DCtOD8dO.js +2 -0
  48. package/dist/adapters/RetentionHeatmap.config-i-LgmmIT.cjs +1 -0
  49. package/dist/adapters/SankeyChart.config-DfpeHfNT.cjs +1 -0
  50. package/dist/adapters/SankeyChart.config-hfM0ACm1.js +2 -0
  51. package/dist/adapters/ScatterChart.config-BD2vfOZ6.js +2 -0
  52. package/dist/adapters/ScatterChart.config-CdpvRueF.cjs +1 -0
  53. package/dist/adapters/SunburstChart.config-Boyt88L_.cjs +1 -0
  54. package/dist/adapters/SunburstChart.config-BvrofzMv.js +2 -0
  55. package/dist/adapters/TreeMapChart.config-DBrqwtqT.js +2 -0
  56. package/dist/adapters/TreeMapChart.config-KcRLlZAG.cjs +1 -0
  57. package/dist/adapters/WaterfallChart.config-CuCGaIl5.cjs +1 -0
  58. package/dist/adapters/WaterfallChart.config-DZ8H0V2L.js +2 -0
  59. package/dist/adapters/{compiler-CQJ5GOwF.js → compiler-BFLAXV7W.js} +1160 -1861
  60. package/dist/adapters/compiler-DG6dLFQU.cjs +166 -0
  61. package/dist/adapters/core/index.cjs +1 -1
  62. package/dist/adapters/core/index.js +1 -1
  63. package/dist/adapters/{core-DgTGXxDu.cjs → core-CrJu6vJY.cjs} +1 -1
  64. package/dist/adapters/{core-DXkuSUBg.js → core-l3KMTu9u.js} +3 -3
  65. package/dist/adapters/express/index.cjs +1 -1
  66. package/dist/adapters/express/index.js +5 -5
  67. package/dist/adapters/fastify/index.cjs +1 -1
  68. package/dist/adapters/fastify/index.js +23 -23
  69. package/dist/{server/google-eKAc20al.js → adapters/google-DRY7jnOh.js} +46 -28
  70. package/dist/adapters/{google-BhvizbFR.cjs → google-PsZzwedr.cjs} +2 -2
  71. package/dist/adapters/handler-CRGZ8gd2.cjs +25 -0
  72. package/dist/adapters/{handler-CphYSZRh.js → handler-DESp4wPg.js} +454 -237
  73. package/dist/adapters/hono/index.cjs +1 -1
  74. package/dist/adapters/hono/index.js +4 -4
  75. package/dist/adapters/mcp-tools.cjs +1 -1
  76. package/dist/adapters/mcp-tools.js +2 -2
  77. package/dist/adapters/mcp-transport-BqdBHmXL.js +730 -0
  78. package/dist/adapters/mcp-transport-D8xZJLPD.cjs +42 -0
  79. package/dist/adapters/nextjs/index.cjs +1 -1
  80. package/dist/adapters/nextjs/index.js +5 -5
  81. package/dist/adapters/{openai-CBrN4nxl.js → openai-BJyU4kvE.js} +3 -3
  82. package/dist/adapters/{openai-CSzWluuv.cjs → openai-DH9MtcLA.cjs} +1 -1
  83. package/dist/adapters/{openai-D-VMcPao.js → openai-DK_KWiI7.js} +1 -1
  84. package/dist/adapters/{openai-CI9vGKSf.cjs → openai-GO3M7Hwi.cjs} +2 -2
  85. package/dist/adapters/{utils-DkmShl5f.js → utils-BhlkVCzZ.js} +1985 -1122
  86. package/dist/adapters/utils-C1JpSDOX.cjs +128 -0
  87. package/dist/adapters/utils.cjs +1 -1
  88. package/dist/adapters/utils.d.ts +17 -3
  89. package/dist/adapters/utils.js +1 -1
  90. package/dist/cjs/adapters/utils.d.ts +17 -3
  91. package/dist/cjs/client/charts/chartConfigRegistry.d.ts +7 -0
  92. package/dist/cjs/client/charts/chartConfigs.d.ts +17 -1
  93. package/dist/cjs/client/client/CubeClient.d.ts +11 -1
  94. package/dist/cjs/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +4 -2
  95. package/dist/cjs/client/components/AnalysisBuilder/ColumnFormatsEditor.d.ts +10 -0
  96. package/dist/cjs/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +3 -2
  97. package/dist/cjs/client/components/AnalysisBuilder/utils/queryUtils.d.ts +7 -1
  98. package/dist/cjs/client/components/analyticsPortlet/PortletChart.d.ts +2 -1
  99. package/dist/cjs/client/components/analyticsPortlet/PortletChartView.d.ts +4 -1
  100. package/dist/cjs/client/components/analyticsPortlet/usePortletDeadMembers.d.ts +24 -0
  101. package/dist/cjs/client/components/analyticsPortlet/usePortletPagination.d.ts +21 -0
  102. package/dist/cjs/client/components/charts/DotStripChart.config.d.ts +15 -0
  103. package/dist/cjs/client/components/charts/DotStripChart.d.ts +4 -0
  104. package/dist/cjs/client/components/charts/DotStripChart.helpers.d.ts +91 -0
  105. package/dist/cjs/client/components/charts/RecordsTable.config.d.ts +10 -0
  106. package/dist/cjs/client/components/charts/RecordsTable.d.ts +4 -0
  107. package/dist/cjs/client/components/charts/recordsTableHooks.d.ts +68 -0
  108. package/dist/cjs/client/icons/types.d.ts +2 -0
  109. package/dist/cjs/client/index.d.ts +2 -2
  110. package/dist/cjs/client/types.d.ts +97 -1
  111. package/dist/cjs/client/utils/recordsTableUtils.d.ts +71 -0
  112. package/dist/cjs/client/utils/rowLinkUtils.d.ts +35 -0
  113. package/dist/cjs/server/agent/chart-validation.d.ts +1 -1
  114. package/dist/cjs/server/ai/chart-schema.d.ts +117 -0
  115. package/dist/cjs/server/ai/discovery-helpers.d.ts +14 -0
  116. package/dist/cjs/server/ai/discovery.d.ts +6 -0
  117. package/dist/cjs/server/ai/query-schema.d.ts +1 -1
  118. package/dist/cjs/server/attribute-dimensions.d.ts +11 -8
  119. package/dist/cjs/server/builders/group-by-builder.d.ts +15 -0
  120. package/dist/cjs/server/compiler.d.ts +3 -4
  121. package/dist/cjs/server/executor.d.ts +15 -0
  122. package/dist/cjs/server/index.d.ts +2 -0
  123. package/dist/cjs/server/query-handlers.d.ts +1 -0
  124. package/dist/cjs/server/query-validator.d.ts +36 -4
  125. package/dist/cjs/server/types/core.d.ts +5 -0
  126. package/dist/cjs/server/types/cube.d.ts +12 -0
  127. package/dist/cjs/server/types/query.d.ts +8 -0
  128. package/dist/cli/index.cjs +134 -52
  129. package/dist/client/charts/chartConfigRegistry.d.ts +7 -0
  130. package/dist/client/charts/chartConfigs.d.ts +17 -1
  131. package/dist/client/charts.js +13 -13
  132. package/dist/client/chunks/{DashboardEditModal-9An5EDAz.js → DashboardEditModal-BliiIHcI.js} +1653 -1188
  133. package/dist/client/chunks/DashboardEditModal-BliiIHcI.js.map +1 -0
  134. package/dist/client/chunks/DotStripChart-ChwsVeRU.js +408 -0
  135. package/dist/client/chunks/DotStripChart-ChwsVeRU.js.map +1 -0
  136. package/dist/client/chunks/{ProportionBarChart-BVcbGY2C.js → ProportionBarChart-D-Qt9nkF.js} +3 -3
  137. package/dist/client/chunks/{ProportionBarChart-BVcbGY2C.js.map → ProportionBarChart-D-Qt9nkF.js.map} +1 -1
  138. package/dist/client/chunks/RecordsTable-aG-QYXOH.js +556 -0
  139. package/dist/client/chunks/RecordsTable-aG-QYXOH.js.map +1 -0
  140. package/dist/client/chunks/{RetentionCombinedChart-D68Rvdi-.js → RetentionCombinedChart-BRZ9w7ah.js} +3 -3
  141. package/dist/client/chunks/{RetentionCombinedChart-D68Rvdi-.js.map → RetentionCombinedChart-BRZ9w7ah.js.map} +1 -1
  142. package/dist/client/chunks/{RetentionHeatmap-CE7BAjrB.js → RetentionHeatmap-LkTt89pK.js} +2 -2
  143. package/dist/client/chunks/{RetentionHeatmap-CE7BAjrB.js.map → RetentionHeatmap-LkTt89pK.js.map} +1 -1
  144. package/dist/client/chunks/{analysis-builder-D1pYvvwc.js → analysis-builder-C0gJ3kDD.js} +169 -168
  145. package/dist/client/chunks/{analysis-builder-D1pYvvwc.js.map → analysis-builder-C0gJ3kDD.js.map} +1 -1
  146. package/dist/client/chunks/{analysis-builder-shared-BQvwUc6z.js → analysis-builder-shared-dqcpl_WL.js} +965 -954
  147. package/dist/client/chunks/analysis-builder-shared-dqcpl_WL.js.map +1 -0
  148. package/dist/client/chunks/{chart-activity-grid-DvD_4wJz.js → chart-activity-grid-CJzxC18G.js} +175 -84
  149. package/dist/client/chunks/chart-activity-grid-CJzxC18G.js.map +1 -0
  150. package/dist/client/chunks/{chart-area-DPp3hSOK.js → chart-area-C66dgy84.js} +21 -21
  151. package/dist/client/chunks/{chart-area-DPp3hSOK.js.map → chart-area-C66dgy84.js.map} +1 -1
  152. package/dist/client/chunks/{chart-bar-Od3pOyZ0.js → chart-bar-D9kiSOCT.js} +5 -5
  153. package/dist/client/chunks/{chart-bar-Od3pOyZ0.js.map → chart-bar-D9kiSOCT.js.map} +1 -1
  154. package/dist/client/chunks/{chart-box-plot-l0iFn2n2.js → chart-box-plot-FsLIMisc.js} +2 -2
  155. package/dist/client/chunks/{chart-box-plot-l0iFn2n2.js.map → chart-box-plot-FsLIMisc.js.map} +1 -1
  156. package/dist/client/chunks/{chart-bubble-Dl0RcP8N.js → chart-bubble-BzyvrqKs.js} +2 -2
  157. package/dist/client/chunks/{chart-bubble-Dl0RcP8N.js.map → chart-bubble-BzyvrqKs.js.map} +1 -1
  158. package/dist/client/chunks/{chart-candlestick-DZMqbscF.js → chart-candlestick-6lD35bLw.js} +2 -2
  159. package/dist/client/chunks/{chart-candlestick-DZMqbscF.js.map → chart-candlestick-6lD35bLw.js.map} +1 -1
  160. package/dist/client/chunks/{chart-data-table-DgiNBOWf.js → chart-data-table-Cou9qOab.js} +1222 -1029
  161. package/dist/client/chunks/chart-data-table-Cou9qOab.js.map +1 -0
  162. package/dist/client/chunks/{chart-funnel-YLZlyN1X.js → chart-funnel-B0775aaT.js} +2 -2
  163. package/dist/client/chunks/{chart-funnel-YLZlyN1X.js.map → chart-funnel-B0775aaT.js.map} +1 -1
  164. package/dist/client/chunks/{chart-gauge-BsqE2wwF.js → chart-gauge-pf-2E8w9.js} +3 -3
  165. package/dist/client/chunks/{chart-gauge-BsqE2wwF.js.map → chart-gauge-pf-2E8w9.js.map} +1 -1
  166. package/dist/client/chunks/{chart-heat-map-BsND8RM_.js → chart-heat-map-EzVGe6fl.js} +3 -3
  167. package/dist/client/chunks/{chart-heat-map-BsND8RM_.js.map → chart-heat-map-EzVGe6fl.js.map} +1 -1
  168. package/dist/client/chunks/{chart-kpi-delta-m0azuva-.js → chart-kpi-delta-lfskDdx4.js} +3 -3
  169. package/dist/client/chunks/{chart-kpi-delta-m0azuva-.js.map → chart-kpi-delta-lfskDdx4.js.map} +1 -1
  170. package/dist/client/chunks/{chart-kpi-number-6JS15SqF.js → chart-kpi-number-BnsofbTf.js} +5 -5
  171. package/dist/client/chunks/{chart-kpi-number-6JS15SqF.js.map → chart-kpi-number-BnsofbTf.js.map} +1 -1
  172. package/dist/client/chunks/{chart-kpi-text-BqX8p8Jn.js → chart-kpi-text-U5EdmdkV.js} +3 -3
  173. package/dist/client/chunks/{chart-kpi-text-BqX8p8Jn.js.map → chart-kpi-text-U5EdmdkV.js.map} +1 -1
  174. package/dist/client/chunks/{chart-line-NCmpxBfE.js → chart-line-IwXqPY80.js} +3 -3
  175. package/dist/client/chunks/{chart-line-NCmpxBfE.js.map → chart-line-IwXqPY80.js.map} +1 -1
  176. package/dist/client/chunks/{chart-markdown-ZOobqiiX.js → chart-markdown-yxN_xBP9.js} +2 -2
  177. package/dist/client/chunks/{chart-markdown-ZOobqiiX.js.map → chart-markdown-yxN_xBP9.js.map} +1 -1
  178. package/dist/client/chunks/{chart-measure-profile-CBAZaicJ.js → chart-measure-profile-Bs4vhBJQ.js} +3 -3
  179. package/dist/client/chunks/{chart-measure-profile-CBAZaicJ.js.map → chart-measure-profile-Bs4vhBJQ.js.map} +1 -1
  180. package/dist/client/chunks/{chart-pie-ChrasEI8.js → chart-pie-LDJfDXfX.js} +15 -15
  181. package/dist/client/chunks/{chart-pie-ChrasEI8.js.map → chart-pie-LDJfDXfX.js.map} +1 -1
  182. package/dist/client/chunks/{chart-radar-CxSVF7yL.js → chart-radar-BZY6TP9m.js} +13 -13
  183. package/dist/client/chunks/{chart-radar-CxSVF7yL.js.map → chart-radar-BZY6TP9m.js.map} +1 -1
  184. package/dist/client/chunks/{chart-radial-bar--SN0Wph0.js → chart-radial-bar-aga05X7h.js} +3 -3
  185. package/dist/client/chunks/{chart-radial-bar--SN0Wph0.js.map → chart-radial-bar-aga05X7h.js.map} +1 -1
  186. package/dist/client/chunks/{chart-sankey-CDOSGg9r.js → chart-sankey-MRCoWFd4.js} +2 -2
  187. package/dist/client/chunks/{chart-sankey-CDOSGg9r.js.map → chart-sankey-MRCoWFd4.js.map} +1 -1
  188. package/dist/client/chunks/{chart-scatter-DgcEF-kI.js → chart-scatter-DP-nn9hH.js} +3 -3
  189. package/dist/client/chunks/{chart-scatter-DgcEF-kI.js.map → chart-scatter-DP-nn9hH.js.map} +1 -1
  190. package/dist/client/chunks/{chart-sunburst-MB-jlGBm.js → chart-sunburst-DE4EX7zi.js} +3 -3
  191. package/dist/client/chunks/{chart-sunburst-MB-jlGBm.js.map → chart-sunburst-DE4EX7zi.js.map} +1 -1
  192. package/dist/client/chunks/{chart-tree-map-DeDXveVd.js → chart-tree-map-C3O6uQcP.js} +3 -3
  193. package/dist/client/chunks/{chart-tree-map-DeDXveVd.js.map → chart-tree-map-C3O6uQcP.js.map} +1 -1
  194. package/dist/client/chunks/{chart-waterfall-ur4vkO1j.js → chart-waterfall-DU2Fg_7P.js} +3 -3
  195. package/dist/client/chunks/{chart-waterfall-ur4vkO1j.js.map → chart-waterfall-DU2Fg_7P.js.map} +1 -1
  196. package/dist/client/chunks/charts-core-DnirPG1F.js +190 -0
  197. package/dist/client/chunks/charts-core-DnirPG1F.js.map +1 -0
  198. package/dist/client/chunks/charts-loader-tCSbqT7H.js +87 -0
  199. package/dist/client/chunks/charts-loader-tCSbqT7H.js.map +1 -0
  200. package/dist/client/chunks/{en-US-BE6VoG0o.js → en-US-HP6FHuNy.js} +3 -1
  201. package/dist/client/chunks/{en-US-BE6VoG0o.js.map → en-US-HP6FHuNy.js.map} +1 -1
  202. package/dist/client/chunks/{nl-NL-CMXHDBr0.js → nl-NL-B9VnaVAm.js} +89 -1
  203. package/dist/client/chunks/nl-NL-B9VnaVAm.js.map +1 -0
  204. package/dist/client/chunks/{schema-visualization-BEbFtUIL.js → schema-visualization-o1zzuMQy.js} +3 -3
  205. package/dist/client/chunks/{schema-visualization-BEbFtUIL.js.map → schema-visualization-o1zzuMQy.js.map} +1 -1
  206. package/dist/client/chunks/{useDirtyStateTracking-CSDg96Rw.js → useDirtyStateTracking-DTYbmRBn.js} +15 -15
  207. package/dist/client/chunks/{useDirtyStateTracking-CSDg96Rw.js.map → useDirtyStateTracking-DTYbmRBn.js.map} +1 -1
  208. package/dist/client/chunks/{useExplainAI-BnkoZ-zS.js → useExplainAI-MuC9jBn-.js} +16 -16
  209. package/dist/client/chunks/{useExplainAI-BnkoZ-zS.js.map → useExplainAI-MuC9jBn-.js.map} +1 -1
  210. package/dist/client/chunks/{vendor-BmJDaduD.js → vendor-XQT9APIq.js} +49 -49
  211. package/dist/client/chunks/{vendor-BmJDaduD.js.map → vendor-XQT9APIq.js.map} +1 -1
  212. package/dist/client/client/CubeClient.d.ts +11 -1
  213. package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +4 -2
  214. package/dist/client/components/AnalysisBuilder/ColumnFormatsEditor.d.ts +10 -0
  215. package/dist/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +3 -2
  216. package/dist/client/components/AnalysisBuilder/utils/queryUtils.d.ts +7 -1
  217. package/dist/client/components/analyticsPortlet/PortletChart.d.ts +2 -1
  218. package/dist/client/components/analyticsPortlet/PortletChartView.d.ts +4 -1
  219. package/dist/client/components/analyticsPortlet/usePortletDeadMembers.d.ts +24 -0
  220. package/dist/client/components/analyticsPortlet/usePortletPagination.d.ts +21 -0
  221. package/dist/client/components/charts/DotStripChart.config.d.ts +15 -0
  222. package/dist/client/components/charts/DotStripChart.d.ts +4 -0
  223. package/dist/client/components/charts/DotStripChart.helpers.d.ts +91 -0
  224. package/dist/client/components/charts/RecordsTable.config.d.ts +10 -0
  225. package/dist/client/components/charts/RecordsTable.d.ts +4 -0
  226. package/dist/client/components/charts/recordsTableHooks.d.ts +68 -0
  227. package/dist/client/components.js +1 -1
  228. package/dist/client/hooks.js +3 -3
  229. package/dist/client/icons/types.d.ts +2 -0
  230. package/dist/client/icons.js +2 -2
  231. package/dist/client/index.d.ts +2 -2
  232. package/dist/client/index.js +213 -213
  233. package/dist/client/providers.js +1 -1
  234. package/dist/client/schema.js +1 -1
  235. package/dist/client/styles.css +1 -1
  236. package/dist/client/types.d.ts +97 -1
  237. package/dist/client/utils/recordsTableUtils.d.ts +71 -0
  238. package/dist/client/utils/rowLinkUtils.d.ts +35 -0
  239. package/dist/client/utils.js +14 -14
  240. package/dist/client-bundle-stats.html +1 -1
  241. package/dist/mcp-app/mcp-app.html +101 -101
  242. package/dist/server/agent/chart-validation.d.ts +1 -1
  243. package/dist/server/ai/chart-schema.d.ts +117 -0
  244. package/dist/server/ai/discovery-helpers.d.ts +14 -0
  245. package/dist/server/ai/discovery.d.ts +6 -0
  246. package/dist/server/ai/query-schema.d.ts +1 -1
  247. package/dist/server/attribute-dimensions.d.ts +11 -8
  248. package/dist/server/builders/group-by-builder.d.ts +15 -0
  249. package/dist/server/compiler.d.ts +3 -4
  250. package/dist/server/executor.d.ts +15 -0
  251. package/dist/{adapters/google-eKAc20al.js → server/google-DRY7jnOh.js} +46 -28
  252. package/dist/server/{google-BhvizbFR.cjs → google-PsZzwedr.cjs} +2 -2
  253. package/dist/server/index.cjs +34 -34
  254. package/dist/server/index.d.ts +2 -0
  255. package/dist/server/index.js +1913 -1445
  256. package/dist/server/query-handlers.d.ts +1 -0
  257. package/dist/server/query-validator.d.ts +36 -4
  258. package/dist/server/types/core.d.ts +5 -0
  259. package/dist/server/types/cube.d.ts +12 -0
  260. package/dist/server/types/query.d.ts +8 -0
  261. package/package.json +1 -1
  262. package/dist/adapters/ActivityGridChart.config-BQhBE_Mr.js +0 -2
  263. package/dist/adapters/ActivityGridChart.config-C3tSuOGV.cjs +0 -1
  264. package/dist/adapters/AreaChart.config-3cme8HyQ.js +0 -2
  265. package/dist/adapters/AreaChart.config-BSxrT52Z.cjs +0 -1
  266. package/dist/adapters/BarChart.config-BKS8IecE.cjs +0 -1
  267. package/dist/adapters/BarChart.config-lt_7PdIi.js +0 -2
  268. package/dist/adapters/BoxPlotChart.config-B7qvRnrF.cjs +0 -1
  269. package/dist/adapters/BoxPlotChart.config-Dv6ECj2j.js +0 -2
  270. package/dist/adapters/BubbleChart.config-BrIH7OAy.cjs +0 -1
  271. package/dist/adapters/BubbleChart.config-Fhotb7Pg.js +0 -2
  272. package/dist/adapters/CandlestickChart.config-CWH41FmF.cjs +0 -1
  273. package/dist/adapters/CandlestickChart.config-RPtXuxsX.js +0 -2
  274. package/dist/adapters/DataTable.config-71L0GzlT.js +0 -2
  275. package/dist/adapters/DataTable.config-BsOMQq3J.cjs +0 -1
  276. package/dist/adapters/FunnelChart.config-Cqte9C04.cjs +0 -1
  277. package/dist/adapters/FunnelChart.config-DJtwWeNz.js +0 -2
  278. package/dist/adapters/GaugeChart.config-WkwZ9VdS.cjs +0 -1
  279. package/dist/adapters/GaugeChart.config-vpVQlP5B.js +0 -2
  280. package/dist/adapters/HeatMapChart.config-DcmkDl07.cjs +0 -1
  281. package/dist/adapters/HeatMapChart.config-DsmMgGxJ.js +0 -2
  282. package/dist/adapters/KpiDelta.config-DVy561BH.js +0 -2
  283. package/dist/adapters/KpiDelta.config-dpqwLHNE.cjs +0 -1
  284. package/dist/adapters/KpiNumber.config-927l8nq8.js +0 -2
  285. package/dist/adapters/KpiNumber.config-BqFBMfPf.cjs +0 -1
  286. package/dist/adapters/KpiText.config-C-fZXuHq.cjs +0 -1
  287. package/dist/adapters/KpiText.config-CWoXuhMA.js +0 -2
  288. package/dist/adapters/LineChart.config-DTp7pqOY.js +0 -2
  289. package/dist/adapters/LineChart.config-DUGvSjcH.cjs +0 -1
  290. package/dist/adapters/MarkdownChart.config-23Dmv2Ty.cjs +0 -1
  291. package/dist/adapters/MarkdownChart.config-Cb2TnS0I.js +0 -2
  292. package/dist/adapters/MeasureProfileChart.config-B2qbWdhy.cjs +0 -1
  293. package/dist/adapters/MeasureProfileChart.config-CvBCeI5b.js +0 -2
  294. package/dist/adapters/PieChart.config-BzJb13QA.js +0 -2
  295. package/dist/adapters/PieChart.config-plCn5Ehr.cjs +0 -1
  296. package/dist/adapters/ProportionBarChart.config-1r-_moBH.cjs +0 -1
  297. package/dist/adapters/ProportionBarChart.config-CN6TtHTp.js +0 -2
  298. package/dist/adapters/RadarChart.config-BYhdj9M7.js +0 -2
  299. package/dist/adapters/RadarChart.config-CeUMP-1g.cjs +0 -1
  300. package/dist/adapters/RadialBarChart.config-B88yXNsq.cjs +0 -1
  301. package/dist/adapters/RadialBarChart.config-ZMK9HMoh.js +0 -2
  302. package/dist/adapters/RetentionCombinedChart.config-B5yvgUHM.cjs +0 -1
  303. package/dist/adapters/RetentionCombinedChart.config-Dd-YMdK8.js +0 -2
  304. package/dist/adapters/RetentionHeatmap.config-BYzDleoV.cjs +0 -1
  305. package/dist/adapters/RetentionHeatmap.config-Dvj7yTB0.js +0 -2
  306. package/dist/adapters/SankeyChart.config-CPFRmgFb.cjs +0 -1
  307. package/dist/adapters/SankeyChart.config-ClgqXM1N.js +0 -2
  308. package/dist/adapters/ScatterChart.config-CvJiqPa5.cjs +0 -1
  309. package/dist/adapters/ScatterChart.config-DLZ3rYMq.js +0 -2
  310. package/dist/adapters/SunburstChart.config-C_1V5hoQ.cjs +0 -1
  311. package/dist/adapters/SunburstChart.config-FNU75NCg.js +0 -2
  312. package/dist/adapters/TreeMapChart.config-CprZk_YF.js +0 -2
  313. package/dist/adapters/TreeMapChart.config-DNwd0ge9.cjs +0 -1
  314. package/dist/adapters/WaterfallChart.config-BBhcN_Fh.cjs +0 -1
  315. package/dist/adapters/WaterfallChart.config-H7s6SSV3.js +0 -2
  316. package/dist/adapters/compiler-BaLO10VN.cjs +0 -166
  317. package/dist/adapters/handler-DrRT6c14.cjs +0 -25
  318. package/dist/adapters/mcp-transport-BGkSz-ZT.cjs +0 -40
  319. package/dist/adapters/mcp-transport-fJud19xz.js +0 -606
  320. package/dist/adapters/utils-BY0-KFyI.cjs +0 -128
  321. package/dist/client/chunks/DashboardEditModal-9An5EDAz.js.map +0 -1
  322. package/dist/client/chunks/analysis-builder-shared-BQvwUc6z.js.map +0 -1
  323. package/dist/client/chunks/chart-activity-grid-DvD_4wJz.js.map +0 -1
  324. package/dist/client/chunks/chart-data-table-DgiNBOWf.js.map +0 -1
  325. package/dist/client/chunks/charts-core-BAH5pkSB.js +0 -215
  326. package/dist/client/chunks/charts-core-BAH5pkSB.js.map +0 -1
  327. package/dist/client/chunks/charts-loader-eToV8je7.js +0 -85
  328. package/dist/client/chunks/charts-loader-eToV8je7.js.map +0 -1
  329. package/dist/client/chunks/nl-NL-CMXHDBr0.js.map +0 -1
@@ -0,0 +1,190 @@
1
+ import { F as e, P as t, w as n } from "./chart-activity-grid-CJzxC18G.js";
2
+ import { useMemo as r } from "react";
3
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
4
+ //#region src/client/components/AnalysisBuilder/SectionHeading.tsx
5
+ function o({ children: e, className: t = "" }) {
6
+ return /* @__PURE__ */ i("h3", {
7
+ className: `dc:text-sm dc:font-semibold text-dc-primary dc:uppercase dc:tracking-wide ${t}`,
8
+ children: e
9
+ });
10
+ }
11
+ //#endregion
12
+ //#region src/client/components/charts/AxisFormatControls.tsx
13
+ function s() {
14
+ let e = typeof navigator < "u" ? navigator.language : "en-US";
15
+ return new Intl.NumberFormat(e, {
16
+ style: "currency",
17
+ currency: t(e),
18
+ currencyDisplay: "narrowSymbol"
19
+ }).format(0).replace(/[\d.,\s]/g, "").trim() || "$";
20
+ }
21
+ function c({ value: c, onChange: l, axisLabel: u, previewValue: d = 125e4 }) {
22
+ let { t: f } = e(), p = r(() => c || {}, [c]), m = r(() => s(), []), h = r(() => n(d, p), [d, p]), g = (e) => {
23
+ l({
24
+ ...p,
25
+ ...e
26
+ });
27
+ }, _ = [
28
+ {
29
+ value: "currency",
30
+ label: m
31
+ },
32
+ {
33
+ value: "percent",
34
+ label: "%"
35
+ },
36
+ {
37
+ value: "number",
38
+ label: "#"
39
+ },
40
+ {
41
+ value: "custom",
42
+ label: f("chart.runtime.axisFormat.custom")
43
+ }
44
+ ];
45
+ return /* @__PURE__ */ a("div", {
46
+ className: "dc:space-y-3 dc:pb-4",
47
+ children: [
48
+ /* @__PURE__ */ i(o, { children: u }),
49
+ /* @__PURE__ */ a("div", {
50
+ className: "dc:space-y-1",
51
+ children: [/* @__PURE__ */ i("label", {
52
+ className: "dc:text-xs text-dc-text-secondary",
53
+ children: f("chart.runtime.axisFormat.label")
54
+ }), /* @__PURE__ */ i("input", {
55
+ type: "text",
56
+ value: p.label || "",
57
+ onChange: (e) => g({ label: e.target.value || void 0 }),
58
+ placeholder: f("chart.runtime.axisFormat.autoLabel"),
59
+ className: "dc:w-full dc:px-2 dc:py-1 dc:text-sm dc:border border-dc-border dc:rounded-sm focus:ring-dc-accent focus:border-dc-accent bg-dc-surface text-dc-text"
60
+ })]
61
+ }),
62
+ /* @__PURE__ */ a("div", {
63
+ className: "dc:space-y-1",
64
+ children: [/* @__PURE__ */ i("label", {
65
+ className: "dc:text-xs text-dc-text-secondary",
66
+ children: f("chart.runtime.axisFormat.unit")
67
+ }), /* @__PURE__ */ i("div", {
68
+ className: "dc:flex dc:border border-dc-border dc:rounded-sm dc:overflow-hidden",
69
+ children: _.map((e) => /* @__PURE__ */ i("button", {
70
+ type: "button",
71
+ onClick: () => g({ unit: e.value }),
72
+ className: `dc:flex-1 dc:px-2 dc:py-1.5 dc:text-sm dc:font-medium dc:transition-colors ${p.unit === e.value ? "bg-dc-primary text-white" : "bg-dc-surface text-dc-text hover:bg-dc-border"}`,
73
+ children: e.label
74
+ }, e.value))
75
+ })]
76
+ }),
77
+ p.unit === "currency" && /* @__PURE__ */ a("div", {
78
+ className: "dc:space-y-1",
79
+ children: [
80
+ /* @__PURE__ */ i("label", {
81
+ className: "dc:text-xs text-dc-text-secondary",
82
+ children: f("chart.runtime.axisFormat.currencyCode")
83
+ }),
84
+ /* @__PURE__ */ i("input", {
85
+ type: "text",
86
+ value: p.currencyCode || "",
87
+ onChange: (e) => g({ currencyCode: e.target.value.trim().toUpperCase() || void 0 }),
88
+ placeholder: t(typeof navigator < "u" ? navigator.language : "en-US"),
89
+ maxLength: 3,
90
+ className: "dc:w-full dc:px-2 dc:py-1 dc:text-sm dc:border border-dc-border dc:rounded-sm focus:ring-dc-accent focus:border-dc-accent bg-dc-surface text-dc-text"
91
+ }),
92
+ /* @__PURE__ */ i("p", {
93
+ className: "dc:text-xs text-dc-text-muted",
94
+ children: f("chart.runtime.axisFormat.currencyCodeHint")
95
+ })
96
+ ]
97
+ }),
98
+ p.unit === "custom" && /* @__PURE__ */ a("div", {
99
+ className: "dc:flex dc:gap-2",
100
+ children: [/* @__PURE__ */ a("div", {
101
+ className: "dc:flex-1 dc:space-y-1",
102
+ children: [/* @__PURE__ */ i("label", {
103
+ className: "dc:text-xs text-dc-text-secondary",
104
+ children: f("chart.runtime.axisFormat.prefix")
105
+ }), /* @__PURE__ */ i("input", {
106
+ type: "text",
107
+ value: p.customPrefix || "",
108
+ onChange: (e) => g({ customPrefix: e.target.value || void 0 }),
109
+ placeholder: f("chart.runtime.axisFormat.prefixExample"),
110
+ className: "dc:w-full dc:px-2 dc:py-1 dc:text-sm dc:border border-dc-border dc:rounded-sm focus:ring-dc-accent focus:border-dc-accent bg-dc-surface text-dc-text"
111
+ })]
112
+ }), /* @__PURE__ */ a("div", {
113
+ className: "dc:flex-1 dc:space-y-1",
114
+ children: [/* @__PURE__ */ i("label", {
115
+ className: "dc:text-xs text-dc-text-secondary",
116
+ children: f("chart.runtime.axisFormat.suffix")
117
+ }), /* @__PURE__ */ i("input", {
118
+ type: "text",
119
+ value: p.customSuffix || "",
120
+ onChange: (e) => g({ customSuffix: e.target.value || void 0 }),
121
+ placeholder: f("chart.runtime.axisFormat.suffixExample"),
122
+ className: "dc:w-full dc:px-2 dc:py-1 dc:text-sm dc:border border-dc-border dc:rounded-sm focus:ring-dc-accent focus:border-dc-accent bg-dc-surface text-dc-text"
123
+ })]
124
+ })]
125
+ }),
126
+ /* @__PURE__ */ a("div", {
127
+ className: "dc:space-y-1",
128
+ children: [/* @__PURE__ */ i("label", {
129
+ className: "dc:text-xs text-dc-text-secondary",
130
+ children: f("chart.runtime.axisFormat.abbreviation")
131
+ }), /* @__PURE__ */ a("div", {
132
+ className: "dc:flex dc:border border-dc-border dc:rounded-sm dc:overflow-hidden",
133
+ children: [/* @__PURE__ */ i("button", {
134
+ type: "button",
135
+ onClick: () => g({ abbreviate: !0 }),
136
+ className: `dc:flex-1 dc:px-3 dc:py-1.5 dc:text-sm dc:font-medium dc:transition-colors ${p.abbreviate === !1 ? "bg-dc-surface text-dc-text hover:bg-dc-border" : "bg-dc-primary text-white"}`,
137
+ children: f("chart.runtime.axisFormat.yes")
138
+ }), /* @__PURE__ */ i("button", {
139
+ type: "button",
140
+ onClick: () => g({ abbreviate: !1 }),
141
+ className: `dc:flex-1 dc:px-3 dc:py-1.5 dc:text-sm dc:font-medium dc:transition-colors ${p.abbreviate === !1 ? "bg-dc-primary text-white" : "bg-dc-surface text-dc-text hover:bg-dc-border"}`,
142
+ children: f("chart.runtime.axisFormat.no")
143
+ })]
144
+ })]
145
+ }),
146
+ /* @__PURE__ */ a("div", {
147
+ className: "dc:space-y-1",
148
+ children: [/* @__PURE__ */ i("label", {
149
+ className: "dc:text-xs text-dc-text-secondary",
150
+ children: f("chart.runtime.axisFormat.decimals")
151
+ }), /* @__PURE__ */ a("div", {
152
+ className: "dc:flex dc:gap-2",
153
+ children: [/* @__PURE__ */ i("button", {
154
+ type: "button",
155
+ onClick: () => {
156
+ let e = p.decimals ?? 2;
157
+ e > 0 && g({ decimals: e - 1 });
158
+ },
159
+ disabled: (p.decimals ?? 2) <= 0,
160
+ className: "dc:flex-1 dc:px-3 dc:py-2 dc:text-sm dc:border border-dc-border dc:rounded-sm bg-dc-surface text-dc-text hover:bg-dc-border dc:disabled:opacity-40 dc:disabled:cursor-not-allowed dc:transition-colors",
161
+ children: "← .0"
162
+ }), /* @__PURE__ */ i("button", {
163
+ type: "button",
164
+ onClick: () => {
165
+ let e = p.decimals ?? 2;
166
+ e < 4 && g({ decimals: e + 1 });
167
+ },
168
+ disabled: (p.decimals ?? 2) >= 4,
169
+ className: "dc:flex-1 dc:px-3 dc:py-2 dc:text-sm dc:border border-dc-border dc:rounded-sm bg-dc-surface text-dc-text hover:bg-dc-border dc:disabled:opacity-40 dc:disabled:cursor-not-allowed dc:transition-colors",
170
+ children: ".00 →"
171
+ })]
172
+ })]
173
+ }),
174
+ /* @__PURE__ */ a("div", {
175
+ className: "dc:space-y-1",
176
+ children: [/* @__PURE__ */ i("label", {
177
+ className: "dc:text-xs text-dc-text-secondary",
178
+ children: f("chart.runtime.axisFormat.preview")
179
+ }), /* @__PURE__ */ i("div", {
180
+ className: "dc:text-sm dc:font-mono text-dc-text",
181
+ children: h
182
+ })]
183
+ })
184
+ ]
185
+ });
186
+ }
187
+ //#endregion
188
+ export { o as n, c as t };
189
+
190
+ //# sourceMappingURL=charts-core-DnirPG1F.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"charts-core-DnirPG1F.js","names":[],"sources":["../../../src/client/components/AnalysisBuilder/SectionHeading.tsx","../../../src/client/components/charts/AxisFormatControls.tsx"],"sourcesContent":["/**\n * SectionHeading Component\n *\n * A reusable section heading for the Analysis Builder panels.\n * Provides consistent styling that can be easily adjusted in one place.\n */\n\nimport type { ReactNode } from 'react'\n\ninterface SectionHeadingProps {\n children: ReactNode\n /** Optional className to add additional styles */\n className?: string\n}\n\n/**\n * Consistent section heading style for Analysis Builder panels.\n * Change the styles here to update all section headings at once.\n */\nexport default function SectionHeading({ children, className = '' }: SectionHeadingProps) {\n return (\n <h3 className={`dc:text-sm dc:font-semibold text-dc-primary dc:uppercase dc:tracking-wide ${className}`}>\n {children}\n </h3>\n )\n}\n","/**\n * AxisFormatControls Component\n *\n * A reusable component for configuring axis number formatting.\n * Provides controls for unit type, abbreviation, decimal places, and custom labels.\n */\n\nimport { useMemo } from 'react'\nimport { useTranslation } from '../../hooks/useTranslation.js'\nimport SectionHeading from '../AnalysisBuilder/SectionHeading.js'\nimport type { AxisFormatConfig } from '../../types.js'\nimport { formatAxisValue } from '../../utils/chartUtils.js'\nimport { getCurrencyCodeForLocale } from '../../utils/axisValueFormatting.js'\n\ninterface AxisFormatControlsProps {\n value: AxisFormatConfig\n onChange: (config: AxisFormatConfig) => void\n axisLabel: string // \"X-Axis\", \"Left Y-Axis\", \"Right Y-Axis\"\n /** Sample value for preview (default: 1250000) */\n previewValue?: number\n}\n\n/**\n * Get the currency symbol for the user's locale\n */\nfunction getLocaleCurrencySymbol(): string {\n const locale = typeof navigator !== 'undefined' ? navigator.language : 'en-US'\n // Format a number as currency and extract just the symbol\n const formatted = new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: getCurrencyCodeForLocale(locale),\n currencyDisplay: 'narrowSymbol'\n }).format(0)\n // Extract the currency symbol (remove digits, spaces, and common separators)\n return formatted.replace(/[\\d.,\\s]/g, '').trim() || '$'\n}\n\n/**\n * Single axis format control section\n */\nexport function AxisFormatControls({\n value,\n onChange,\n axisLabel,\n previewValue = 1250000\n}: AxisFormatControlsProps) {\n const { t } = useTranslation()\n const config = useMemo(() => value || {}, [value])\n\n // Get locale-aware currency symbol for the button\n const currencySymbol = useMemo(() => getLocaleCurrencySymbol(), [])\n\n // Generate preview of formatted value\n const preview = useMemo(() => {\n return formatAxisValue(previewValue, config)\n }, [previewValue, config])\n\n const handleChange = (updates: Partial<AxisFormatConfig>) => {\n onChange({ ...config, ...updates })\n }\n\n const unitButtons: Array<{ value: AxisFormatConfig['unit']; label: string }> = [\n { value: 'currency', label: currencySymbol },\n { value: 'percent', label: '%' },\n { value: 'number', label: '#' },\n { value: 'custom', label: t('chart.runtime.axisFormat.custom') }\n ]\n\n return (\n <div className=\"dc:space-y-3 dc:pb-4\">\n {/* Axis Header */}\n <SectionHeading>{axisLabel}</SectionHeading>\n\n {/* Label Input */}\n <div className=\"dc:space-y-1\">\n <label className=\"dc:text-xs text-dc-text-secondary\">{t('chart.runtime.axisFormat.label')}</label>\n <input\n type=\"text\"\n value={config.label || ''}\n onChange={(e) => handleChange({ label: e.target.value || undefined })}\n placeholder={t('chart.runtime.axisFormat.autoLabel')}\n className=\"dc:w-full dc:px-2 dc:py-1 dc:text-sm dc:border border-dc-border dc:rounded-sm focus:ring-dc-accent focus:border-dc-accent bg-dc-surface text-dc-text\"\n />\n </div>\n\n {/* Unit Type */}\n <div className=\"dc:space-y-1\">\n <label className=\"dc:text-xs text-dc-text-secondary\">{t('chart.runtime.axisFormat.unit')}</label>\n <div className=\"dc:flex dc:border border-dc-border dc:rounded-sm dc:overflow-hidden\">\n {unitButtons.map((btn) => (\n <button\n key={btn.value}\n type=\"button\"\n onClick={() => handleChange({ unit: btn.value })}\n className={`dc:flex-1 dc:px-2 dc:py-1.5 dc:text-sm dc:font-medium dc:transition-colors ${\n config.unit === btn.value\n ? 'bg-dc-primary text-white'\n : 'bg-dc-surface text-dc-text hover:bg-dc-border'\n }`}\n >\n {btn.label}\n </button>\n ))}\n </div>\n </div>\n\n {/* Currency code (only when Currency is selected) — without it the symbol\n follows the viewer's locale, so a GBP column renders $ to a US viewer. */}\n {config.unit === 'currency' && (\n <div className=\"dc:space-y-1\">\n <label className=\"dc:text-xs text-dc-text-secondary\">{t('chart.runtime.axisFormat.currencyCode')}</label>\n <input\n type=\"text\"\n value={config.currencyCode || ''}\n onChange={(e) => handleChange({ currencyCode: e.target.value.trim().toUpperCase() || undefined })}\n placeholder={getCurrencyCodeForLocale(typeof navigator !== 'undefined' ? navigator.language : 'en-US')}\n maxLength={3}\n className=\"dc:w-full dc:px-2 dc:py-1 dc:text-sm dc:border border-dc-border dc:rounded-sm focus:ring-dc-accent focus:border-dc-accent bg-dc-surface text-dc-text\"\n />\n <p className=\"dc:text-xs text-dc-text-muted\">{t('chart.runtime.axisFormat.currencyCodeHint')}</p>\n </div>\n )}\n\n {/* Custom Prefix/Suffix (only when Custom is selected) */}\n {config.unit === 'custom' && (\n <div className=\"dc:flex dc:gap-2\">\n <div className=\"dc:flex-1 dc:space-y-1\">\n <label className=\"dc:text-xs text-dc-text-secondary\">{t('chart.runtime.axisFormat.prefix')}</label>\n <input\n type=\"text\"\n value={config.customPrefix || ''}\n onChange={(e) => handleChange({ customPrefix: e.target.value || undefined })}\n placeholder={t('chart.runtime.axisFormat.prefixExample')}\n className=\"dc:w-full dc:px-2 dc:py-1 dc:text-sm dc:border border-dc-border dc:rounded-sm focus:ring-dc-accent focus:border-dc-accent bg-dc-surface text-dc-text\"\n />\n </div>\n <div className=\"dc:flex-1 dc:space-y-1\">\n <label className=\"dc:text-xs text-dc-text-secondary\">{t('chart.runtime.axisFormat.suffix')}</label>\n <input\n type=\"text\"\n value={config.customSuffix || ''}\n onChange={(e) => handleChange({ customSuffix: e.target.value || undefined })}\n placeholder={t('chart.runtime.axisFormat.suffixExample')}\n className=\"dc:w-full dc:px-2 dc:py-1 dc:text-sm dc:border border-dc-border dc:rounded-sm focus:ring-dc-accent focus:border-dc-accent bg-dc-surface text-dc-text\"\n />\n </div>\n </div>\n )}\n\n {/* Abbreviation Toggle */}\n <div className=\"dc:space-y-1\">\n <label className=\"dc:text-xs text-dc-text-secondary\">{t('chart.runtime.axisFormat.abbreviation')}</label>\n <div className=\"dc:flex dc:border border-dc-border dc:rounded-sm dc:overflow-hidden\">\n <button\n type=\"button\"\n onClick={() => handleChange({ abbreviate: true })}\n className={`dc:flex-1 dc:px-3 dc:py-1.5 dc:text-sm dc:font-medium dc:transition-colors ${\n config.abbreviate !== false\n ? 'bg-dc-primary text-white'\n : 'bg-dc-surface text-dc-text hover:bg-dc-border'\n }`}\n >\n {t('chart.runtime.axisFormat.yes')}\n </button>\n <button\n type=\"button\"\n onClick={() => handleChange({ abbreviate: false })}\n className={`dc:flex-1 dc:px-3 dc:py-1.5 dc:text-sm dc:font-medium dc:transition-colors ${\n config.abbreviate === false\n ? 'bg-dc-primary text-white'\n : 'bg-dc-surface text-dc-text hover:bg-dc-border'\n }`}\n >\n {t('chart.runtime.axisFormat.no')}\n </button>\n </div>\n </div>\n\n {/* Decimals */}\n <div className=\"dc:space-y-1\">\n <label className=\"dc:text-xs text-dc-text-secondary\">{t('chart.runtime.axisFormat.decimals')}</label>\n <div className=\"dc:flex dc:gap-2\">\n <button\n type=\"button\"\n onClick={() => {\n const current = config.decimals ?? 2\n if (current > 0) handleChange({ decimals: current - 1 })\n }}\n disabled={(config.decimals ?? 2) <= 0}\n className=\"dc:flex-1 dc:px-3 dc:py-2 dc:text-sm dc:border border-dc-border dc:rounded-sm bg-dc-surface text-dc-text hover:bg-dc-border dc:disabled:opacity-40 dc:disabled:cursor-not-allowed dc:transition-colors\"\n >\n ← .0\n </button>\n <button\n type=\"button\"\n onClick={() => {\n const current = config.decimals ?? 2\n if (current < 4) handleChange({ decimals: current + 1 })\n }}\n disabled={(config.decimals ?? 2) >= 4}\n className=\"dc:flex-1 dc:px-3 dc:py-2 dc:text-sm dc:border border-dc-border dc:rounded-sm bg-dc-surface text-dc-text hover:bg-dc-border dc:disabled:opacity-40 dc:disabled:cursor-not-allowed dc:transition-colors\"\n >\n .00 →\n </button>\n </div>\n </div>\n\n {/* Preview */}\n <div className=\"dc:space-y-1\">\n <label className=\"dc:text-xs text-dc-text-secondary\">{t('chart.runtime.axisFormat.preview')}</label>\n <div className=\"dc:text-sm dc:font-mono text-dc-text\">\n {preview}\n </div>\n </div>\n </div>\n )\n}\n\ninterface MultiAxisFormatControlsProps {\n displayConfig: {\n xAxisFormat?: AxisFormatConfig\n leftYAxisFormat?: AxisFormatConfig\n rightYAxisFormat?: AxisFormatConfig\n }\n onChange: (updates: {\n xAxisFormat?: AxisFormatConfig\n leftYAxisFormat?: AxisFormatConfig\n rightYAxisFormat?: AxisFormatConfig\n }) => void\n /** Which axes to show controls for */\n showAxes?: {\n xAxis?: boolean\n leftYAxis?: boolean\n rightYAxis?: boolean\n }\n}\n\ntype AxisKey = 'xAxisFormat' | 'leftYAxisFormat' | 'rightYAxisFormat'\n\ninterface AxisEntry {\n show: boolean | undefined\n key: AxisKey\n labelKey: string\n previewValue?: number\n}\n\n/**\n * Container component for multiple axis format controls. Each configured axis\n * renders an `AxisFormatControls`; the per-axis entries are data-driven so the\n * three branches collapse into a single map.\n */\nexport function MultiAxisFormatControls({\n displayConfig,\n onChange,\n showAxes = { leftYAxis: true, rightYAxis: true }\n}: MultiAxisFormatControlsProps) {\n const { t } = useTranslation()\n\n const entries: AxisEntry[] = [\n { show: showAxes.leftYAxis, key: 'leftYAxisFormat', labelKey: 'chart.runtime.axisFormat.leftYAxis' },\n { show: showAxes.rightYAxis, key: 'rightYAxisFormat', labelKey: 'chart.runtime.axisFormat.rightYAxis' },\n // Use a year-like number for X-axis preview\n { show: showAxes.xAxis, key: 'xAxisFormat', labelKey: 'chart.runtime.axisFormat.xAxis', previewValue: 2024 }\n ]\n\n const updateAxis = (key: AxisKey, config: AxisFormatConfig) =>\n onChange({ ...displayConfig, [key]: Object.keys(config).length > 0 ? config : undefined })\n\n return (\n <div className=\"dc:space-y-4\">\n {entries.filter((entry) => entry.show).map((entry) => (\n <AxisFormatControls\n key={entry.key}\n axisLabel={t(entry.labelKey)}\n value={displayConfig[entry.key] || {}}\n onChange={(config) => updateAxis(entry.key, config)}\n previewValue={entry.previewValue}\n />\n ))}\n </div>\n )\n}\n\nexport default AxisFormatControls\n"],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import { f as e, g as t, h as n, m as r, p as i } from "./chart-data-table-Cou9qOab.js";
2
+ import { Suspense as a, lazy as o } from "react";
3
+ import { jsx as s } from "react/jsx-runtime";
4
+ //#region src/client/charts/ChartLoader.tsx
5
+ var c = {
6
+ bar: () => import("./chart-bar-D9kiSOCT.js").then((e) => e.n),
7
+ line: () => import("./chart-line-IwXqPY80.js").then((e) => e.n),
8
+ area: () => import("./chart-area-C66dgy84.js").then((e) => e.n),
9
+ pie: () => import("./chart-pie-LDJfDXfX.js").then((e) => e.n),
10
+ scatter: () => import("./chart-scatter-DP-nn9hH.js").then((e) => e.n),
11
+ radar: () => import("./chart-radar-BZY6TP9m.js").then((e) => e.n),
12
+ radialBar: () => import("./chart-radial-bar-aga05X7h.js").then((e) => e.n),
13
+ treemap: () => import("./chart-tree-map-C3O6uQcP.js").then((e) => e.n),
14
+ bubble: () => import("./chart-bubble-BzyvrqKs.js").then((e) => e.t),
15
+ table: () => import("./chart-data-table-Cou9qOab.js").then((e) => e.n),
16
+ recordsTable: () => import("./RecordsTable-aG-QYXOH.js"),
17
+ activityGrid: () => import("./chart-activity-grid-CJzxC18G.js").then((e) => e.t),
18
+ kpiNumber: () => import("./chart-kpi-number-BnsofbTf.js").then((e) => e.t),
19
+ kpiDelta: () => import("./chart-kpi-delta-lfskDdx4.js").then((e) => e.t),
20
+ kpiText: () => import("./chart-kpi-text-U5EdmdkV.js").then((e) => e.t),
21
+ markdown: () => import("./chart-markdown-yxN_xBP9.js").then((e) => e.n),
22
+ funnel: () => import("./chart-funnel-B0775aaT.js").then((e) => e.n),
23
+ sankey: () => import("./chart-sankey-MRCoWFd4.js").then((e) => e.t),
24
+ sunburst: () => import("./chart-sunburst-DE4EX7zi.js").then((e) => e.t),
25
+ heatmap: () => import("./chart-heat-map-EzVGe6fl.js").then((e) => e.t),
26
+ retentionHeatmap: () => import("./RetentionHeatmap-LkTt89pK.js"),
27
+ retentionCombined: () => import("./RetentionCombinedChart-BRZ9w7ah.js"),
28
+ boxPlot: () => import("./chart-box-plot-FsLIMisc.js").then((e) => e.t),
29
+ dotStrip: () => import("./DotStripChart-ChwsVeRU.js"),
30
+ waterfall: () => import("./chart-waterfall-DU2Fg_7P.js").then((e) => e.t),
31
+ candlestick: () => import("./chart-candlestick-6lD35bLw.js").then((e) => e.t),
32
+ measureProfile: () => import("./chart-measure-profile-Bs4vhBJQ.js").then((e) => e.t),
33
+ proportionBar: () => import("./ProportionBarChart-D-Qt9nkF.js"),
34
+ gauge: () => import("./chart-gauge-pf-2E8w9.js").then((e) => e.t)
35
+ };
36
+ function l(t) {
37
+ let a = n.get(t);
38
+ if (a) return a;
39
+ if (e.has(t)) return e.get(t);
40
+ let s = c[t];
41
+ if (s) {
42
+ let n = i(t, s);
43
+ return e.set(t, o(n)), e.get(t);
44
+ }
45
+ return o(() => Promise.resolve({ default: r(t) }));
46
+ }
47
+ function u(e) {
48
+ return e in c || n.has(e);
49
+ }
50
+ function d({ height: e }) {
51
+ return /* @__PURE__ */ s("div", {
52
+ className: "dc:flex dc:items-center dc:justify-center dc:w-full",
53
+ style: { height: typeof e == "number" ? `${e}px` : e || "200px" },
54
+ children: /* @__PURE__ */ s("div", { className: "dc:animate-pulse bg-dc-surface-secondary dc:rounded-sm dc:w-full dc:h-full dc:min-h-[100px]" })
55
+ });
56
+ }
57
+ function f({ chartType: e, fallback: t, height: n, ...r }) {
58
+ let i = l(e);
59
+ return /* @__PURE__ */ s(a, {
60
+ fallback: t ?? /* @__PURE__ */ s(d, { height: n }),
61
+ children: /* @__PURE__ */ s(i, {
62
+ height: n,
63
+ ...r
64
+ })
65
+ });
66
+ }
67
+ function p(e) {
68
+ let t = c[e];
69
+ t && t();
70
+ }
71
+ function m(e) {
72
+ e.forEach(p);
73
+ }
74
+ function h() {
75
+ let e = Object.keys(c), t = Array.from(n.keys());
76
+ return [.../* @__PURE__ */ new Set([...e, ...t])];
77
+ }
78
+ function g(e) {
79
+ return !t.has(e);
80
+ }
81
+ function _() {
82
+ return Array.from(t);
83
+ }
84
+ //#endregion
85
+ export { u as a, g as i, h as n, p as o, _ as r, m as s, f as t };
86
+
87
+ //# sourceMappingURL=charts-loader-tCSbqT7H.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"charts-loader-tCSbqT7H.js","names":[],"sources":["../../../src/client/charts/ChartLoader.tsx"],"sourcesContent":["/**\n * Lazy Chart Loader\n *\n * Provides React.lazy-based dynamic loading for chart components.\n * This enables code splitting - each chart type loads only when needed.\n *\n * Handles missing optional dependencies gracefully by showing a fallback\n * component instead of crashing the application.\n */\n\nimport { lazy, Suspense, ReactNode, LazyExoticComponent } from 'react'\nimport type { BuiltInChartType, ChartType, ChartProps } from '../types.js'\nimport {\n type LazyChartComponent,\n chartLoaderCache,\n failedChartTypes,\n customChartMap,\n createSafeImport,\n createUnknownChartFallback\n} from './chartComponentRegistry.js'\n// Dynamic import functions for built-in chart **components** (the DOM-bearing,\n// client-only side of a chart). This stays separate from `chartRegistry` — which\n// is DOM-free and shared with the server — so importing the unified registry\n// never drags the chart component graph into server/agent code. Lazy loading is\n// a client-only optimisation.\n\n// The custom-chart registration API lives in chartComponentRegistry to avoid an\n// import cycle (chartPlugin → ChartLoader → DataTable → CubeProvider → chartPlugin).\n// Re-exported here so existing import paths keep working.\nexport { registerChartComponent, unregisterChartComponent } from './chartComponentRegistry.js'\n\n// Dynamic import functions for built-in chart **components** — the DOM-bearing,\n// client-only side of a chart. Kept separate from the unified `chartRegistry`\n// (which is DOM-free and shared with the server agent) so importing the registry\n// never drags the chart component graph into server/MCP/agent code. Lazy loading\n// is a client-only optimisation.\nconst chartImportMap: Record<BuiltInChartType, () => Promise<{ default: LazyChartComponent }>> = {\n bar: () => import('../components/charts/BarChart.js'),\n line: () => import('../components/charts/LineChart.js'),\n area: () => import('../components/charts/AreaChart.js'),\n pie: () => import('../components/charts/PieChart.js'),\n scatter: () => import('../components/charts/ScatterChart.js'),\n radar: () => import('../components/charts/RadarChart.js'),\n radialBar: () => import('../components/charts/RadialBarChart.js'),\n treemap: () => import('../components/charts/TreeMapChart.js'),\n bubble: () => import('../components/charts/BubbleChart.js'),\n table: () => import('../components/charts/DataTable.js'),\n recordsTable: () => import('../components/charts/RecordsTable.js'),\n activityGrid: () => import('../components/charts/ActivityGridChart.js'),\n kpiNumber: () => import('../components/charts/KpiNumber.js'),\n kpiDelta: () => import('../components/charts/KpiDelta.js'),\n kpiText: () => import('../components/charts/KpiText.js'),\n markdown: () => import('../components/charts/MarkdownChart.js'),\n funnel: () => import('../components/charts/FunnelChart.js'),\n sankey: () => import('../components/charts/SankeyChart.js'),\n sunburst: () => import('../components/charts/SunburstChart.js'),\n heatmap: () => import('../components/charts/HeatMapChart.js'),\n retentionHeatmap: () => import('../components/charts/RetentionHeatmap.js'),\n retentionCombined: () => import('../components/charts/RetentionCombinedChart.js'),\n boxPlot: () => import('../components/charts/BoxPlotChart.js'),\n dotStrip: () => import('../components/charts/DotStripChart.js'),\n waterfall: () => import('../components/charts/WaterfallChart.js'),\n candlestick: () => import('../components/charts/CandlestickChart.js'),\n measureProfile: () => import('../components/charts/MeasureProfileChart.js'),\n proportionBar: () => import('../components/charts/ProportionBarChart.js'),\n gauge: () => import('../components/charts/GaugeChart.js'),\n}\n\n/**\n * Get or create a lazy component for a chart type.\n * Checks custom (plugin) charts first, then built-in charts.\n * Returns an unknown chart fallback for unregistered types instead of throwing.\n */\nfunction getLazyChart(chartType: ChartType): LazyExoticComponent<LazyChartComponent> {\n // 1. Check custom charts first (allows overriding built-ins)\n const customChart = customChartMap.get(chartType)\n if (customChart) {\n return customChart\n }\n\n // 2. Check built-in cache\n if (chartLoaderCache.has(chartType)) {\n return chartLoaderCache.get(chartType)!\n }\n\n // 3. Check built-in import map (the client component registry)\n const importFn = chartImportMap[chartType as BuiltInChartType]\n if (importFn) {\n const safeImport = createSafeImport(chartType, importFn)\n chartLoaderCache.set(chartType, lazy(safeImport))\n return chartLoaderCache.get(chartType)!\n }\n\n // 4. Unknown chart type — return graceful fallback\n return lazy(() => Promise.resolve({ default: createUnknownChartFallback(chartType) }))\n}\n\n/**\n * Check if a chart type is supported (built-in or custom plugin)\n */\nexport function isValidChartType(chartType: string): chartType is ChartType {\n return chartType in chartImportMap || customChartMap.has(chartType)\n}\n\n// Props for the LazyChart wrapper\nexport interface LazyChartProps extends ChartProps {\n chartType: ChartType\n fallback?: ReactNode\n}\n\n/**\n * Default loading placeholder for charts\n */\nfunction DefaultChartFallback({ height }: { height?: string | number }) {\n return (\n <div\n className=\"dc:flex dc:items-center dc:justify-center dc:w-full\"\n style={{ height: typeof height === 'number' ? `${height}px` : height || '200px' }}\n >\n <div className=\"dc:animate-pulse bg-dc-surface-secondary dc:rounded-sm dc:w-full dc:h-full dc:min-h-[100px]\" />\n </div>\n )\n}\n\n/**\n * Lazy Chart Component\n *\n * Renders a chart component with React.lazy dynamic loading.\n * The chart type determines which chart component is loaded.\n *\n * @example\n * ```tsx\n * <LazyChart\n * chartType=\"bar\"\n * data={chartData}\n * chartConfig={{ yAxis: ['value'] }}\n * height={300}\n * />\n * ```\n */\nexport function LazyChart({\n chartType,\n fallback,\n height,\n ...chartProps\n}: LazyChartProps) {\n const ChartComponent = getLazyChart(chartType)\n\n return (\n <Suspense fallback={fallback ?? <DefaultChartFallback height={height} />}>\n <ChartComponent height={height} {...chartProps} />\n </Suspense>\n )\n}\n\n/**\n * Preload a chart type\n *\n * Triggers the dynamic import without rendering.\n * Useful for prefetching charts that will likely be needed.\n *\n * @example\n * ```tsx\n * // Preload bar chart on hover\n * onMouseEnter={() => preloadChart('bar')}\n * ```\n */\nexport function preloadChart(chartType: ChartType): void {\n const importFn = chartImportMap[chartType as BuiltInChartType]\n if (importFn) {\n importFn()\n }\n}\n\n/**\n * Preload multiple chart types\n *\n * @example\n * ```tsx\n * // Preload common charts on app init\n * useEffect(() => {\n * preloadCharts(['bar', 'line', 'pie'])\n * }, [])\n * ```\n */\nexport function preloadCharts(chartTypes: ChartType[]): void {\n chartTypes.forEach(preloadChart)\n}\n\n/**\n * Get all available chart types (built-in + custom plugins)\n */\nexport function getAvailableChartTypes(): ChartType[] {\n const builtIn = Object.keys(chartImportMap) as ChartType[]\n const custom = Array.from(customChartMap.keys())\n // Deduplicate in case a custom chart overrides a built-in\n return [...new Set([...builtIn, ...custom])]\n}\n\n/**\n * Check if a chart type has loaded successfully.\n * Returns false if the chart failed to load due to missing dependencies.\n *\n * Note: This only returns accurate results after the chart has been attempted to load.\n * Use this for conditional UI logic (e.g., hiding unavailable chart types).\n */\nexport function isChartTypeAvailable(chartType: ChartType): boolean {\n return !failedChartTypes.has(chartType)\n}\n\n/**\n * Get list of chart types that failed to load due to missing dependencies.\n */\nexport function getUnavailableChartTypes(): ChartType[] {\n return Array.from(failedChartTypes)\n}\n"],"mappings":"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"}
@@ -25,6 +25,8 @@ var e = {
25
25
  "chart.option.showCentreLabel.label": "Show Center Label",
26
26
  "chart.option.showCentreLabel.description": "Display current value and field name in the center of the gauge",
27
27
  "chart.option.accentBorder.description": "Add an accent-colored border on one side of the content",
28
+ "chart.recordsTable.columnFormats.badgeColours": "Value colors",
29
+ "chart.recordsTable.columnFormats.badgeColour": "Color",
28
30
  "chart.scatter.dropZone.series.empty": "Drop a dimension to color points",
29
31
  "chart.bubble.dropZone.colorField.empty": "Drop a field for bubble color (optional)",
30
32
  "chart.treemap.dropZone.series.empty": "Drop a dimension for color grouping"
@@ -32,4 +34,4 @@ var e = {
32
34
  //#endregion
33
35
  export { e as default };
34
36
 
35
- //# sourceMappingURL=en-US-BE6VoG0o.js.map
37
+ //# sourceMappingURL=en-US-HP6FHuNy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"en-US-BE6VoG0o.js","names":[],"sources":["../../../src/i18n/locales/en-US.json"],"sourcesContent":["{\n \"analysis.modes.flow.description\": \"Bidirectional path analysis with Sankey visualization\",\n\n \"chart.area.description\": \"Emphasize magnitude of change over time\",\n \"chart.radialBar.description\": \"Circular progress and KPI visualization\",\n \"chart.treemap.description\": \"Visualize hierarchical data with nested rectangles\",\n \"chart.activityGrid.description\": \"GitHub-style activity grid showing temporal patterns across different time scales\",\n \"chart.activityGrid.useCase\": \"Best for visualizing activity patterns over time. Supports hour (3hr blocks × days), day (days × weeks), week (weeks × months), month (months × quarters), and quarter (quarters × years) granularities\",\n \"chart.kpiText.description\": \"Display key performance indicators as customizable text\",\n \"chart.funnel.useCase\": \"Best for visualizing user journey funnels, sales pipelines, or multi-step processes\",\n \"chart.sankey.useCase\": \"Best for visualizing user journey flows, path analysis, or state transitions\",\n \"chart.sunburst.useCase\": \"Best for visualizing forward paths from a starting event in a compact radial layout\",\n \"chart.heatmap.description\": \"Visualize intensity across two dimensions\",\n \"chart.retentionHeatmap.description\": \"Cohort retention matrix visualization\",\n \"chart.retentionHeatmap.useCase\": \"Visualize user retention over time by cohort\",\n \"chart.retentionCombined.description\": \"Combined retention visualization with line chart and heatmap modes\",\n \"chart.retentionCombined.useCase\": \"Visualize user retention over time with optional breakdown segmentation\",\n \"chart.measureProfile.description\": \"Plot N measures as sequential X-axis points to visualize a profile or shape across intervals\",\n \"chart.gauge.useCase\": \"Best for high-water marks vs equity, margin utilization, or any single value progress toward a goal\",\n\n \"chart.option.innerRadius.description\": \"Hollow center size (0% = solid pie, higher = donut style)\",\n \"chart.option.bullColor.label\": \"Bullish Color\",\n \"chart.option.bullColor.description\": \"Candle color when close ≥ open\",\n \"chart.option.bearColor.label\": \"Bearish Color\",\n \"chart.option.bearColor.description\": \"Candle color when close < open\",\n \"chart.option.showCentreLabel.label\": \"Show Center Label\",\n \"chart.option.showCentreLabel.description\": \"Display current value and field name in the center of the gauge\",\n \"chart.option.accentBorder.description\": \"Add an accent-colored border on one side of the content\",\n\n \"chart.scatter.dropZone.series.empty\": \"Drop a dimension to color points\",\n \"chart.bubble.dropZone.colorField.empty\": \"Drop a field for bubble color (optional)\",\n \"chart.treemap.dropZone.series.empty\": \"Drop a dimension for color grouping\"\n}\n"],"mappings":""}
1
+ {"version":3,"file":"en-US-HP6FHuNy.js","names":[],"sources":["../../../src/i18n/locales/en-US.json"],"sourcesContent":["{\n \"analysis.modes.flow.description\": \"Bidirectional path analysis with Sankey visualization\",\n\n \"chart.area.description\": \"Emphasize magnitude of change over time\",\n \"chart.radialBar.description\": \"Circular progress and KPI visualization\",\n \"chart.treemap.description\": \"Visualize hierarchical data with nested rectangles\",\n \"chart.activityGrid.description\": \"GitHub-style activity grid showing temporal patterns across different time scales\",\n \"chart.activityGrid.useCase\": \"Best for visualizing activity patterns over time. Supports hour (3hr blocks × days), day (days × weeks), week (weeks × months), month (months × quarters), and quarter (quarters × years) granularities\",\n \"chart.kpiText.description\": \"Display key performance indicators as customizable text\",\n \"chart.funnel.useCase\": \"Best for visualizing user journey funnels, sales pipelines, or multi-step processes\",\n \"chart.sankey.useCase\": \"Best for visualizing user journey flows, path analysis, or state transitions\",\n \"chart.sunburst.useCase\": \"Best for visualizing forward paths from a starting event in a compact radial layout\",\n \"chart.heatmap.description\": \"Visualize intensity across two dimensions\",\n \"chart.retentionHeatmap.description\": \"Cohort retention matrix visualization\",\n \"chart.retentionHeatmap.useCase\": \"Visualize user retention over time by cohort\",\n \"chart.retentionCombined.description\": \"Combined retention visualization with line chart and heatmap modes\",\n \"chart.retentionCombined.useCase\": \"Visualize user retention over time with optional breakdown segmentation\",\n \"chart.measureProfile.description\": \"Plot N measures as sequential X-axis points to visualize a profile or shape across intervals\",\n \"chart.gauge.useCase\": \"Best for high-water marks vs equity, margin utilization, or any single value progress toward a goal\",\n\n \"chart.option.innerRadius.description\": \"Hollow center size (0% = solid pie, higher = donut style)\",\n \"chart.option.bullColor.label\": \"Bullish Color\",\n \"chart.option.bullColor.description\": \"Candle color when close ≥ open\",\n \"chart.option.bearColor.label\": \"Bearish Color\",\n \"chart.option.bearColor.description\": \"Candle color when close < open\",\n \"chart.option.showCentreLabel.label\": \"Show Center Label\",\n \"chart.option.showCentreLabel.description\": \"Display current value and field name in the center of the gauge\",\n \"chart.option.accentBorder.description\": \"Add an accent-colored border on one side of the content\",\n\n \"chart.recordsTable.columnFormats.badgeColours\": \"Value colors\",\n \"chart.recordsTable.columnFormats.badgeColour\": \"Color\",\n\n \"chart.scatter.dropZone.series.empty\": \"Drop a dimension to color points\",\n \"chart.bubble.dropZone.colorField.empty\": \"Drop a field for bubble color (optional)\",\n \"chart.treemap.dropZone.series.empty\": \"Drop a dimension for color grouping\"\n}\n"],"mappings":""}
@@ -259,6 +259,9 @@ var e = {
259
259
  "chart.table.label": "Gegevens Tabel",
260
260
  "chart.table.description": "Weergave gedetailleerde tabular gegevens",
261
261
  "chart.table.useCase": "Beste voor precise waarden, gedetailleerde analyse, sortable/filterable gegevens exploration",
262
+ "chart.recordsTable.label": "Recordstabel",
263
+ "chart.recordsTable.description": "Toon losse records met opmaak per kolom",
264
+ "chart.recordsTable.useCase": "Het beste voor het doorbladeren van detailrecords — badges, voortgangsbalken en links per kolom",
262
265
  "chart.activityGrid.label": "Activiteit Raster",
263
266
  "chart.activityGrid.description": "GitHub-stijl activiteitenraster dat temporele patronen over verschillende tijdschalen toont",
264
267
  "chart.activityGrid.useCase": "Beste voor het visualiseren van activiteitspatronen in de tijd. Ondersteunt uur (3-uursblokken × dagen), dag (dagen × weken), week (weken × maanden), maand (maanden × kwartalen) en kwartaal (kwartalen × jaren) granulariteit",
@@ -295,6 +298,9 @@ var e = {
295
298
  "chart.boxPlot.label": "Boxplot",
296
299
  "chart.boxPlot.description": "Toon statistische verdeling (mediaan, IQR, whiskers) over categorieën",
297
300
  "chart.boxPlot.useCase": "Beste voor P&L-spreiding per symbool, verdeling van handelsgrootte en latentieverdeling over platforms",
301
+ "chart.dotStrip.label": "Puntenstrookdiagram",
302
+ "chart.dotStrip.description": "Toon elke individuele waarde als een punt, gegroepeerd in categoriebanden",
303
+ "chart.dotStrip.useCase": "Beste voor het vergelijken van individuen binnen een groep — spreiding van output per team, salaris per schaal, latentie per endpoint",
298
304
  "chart.waterfall.label": "Waterfall Grafiek",
299
305
  "chart.waterfall.description": "Toon cumulative effect of sequential positive en negative waarden",
300
306
  "chart.waterfall.useCase": "Beste voor P&L decomposition, cash flow analyse, budget variance, of elke sequential contribution breakdown",
@@ -352,6 +358,44 @@ var e = {
352
358
  "chart.treemap.dropZone.yAxis.empty": "Sleep een meting voor grootte",
353
359
  "chart.treemap.dropZone.series.empty": "Sleep een dimensie voor kleurgroepering",
354
360
  "chart.table.dropZone.xAxis.empty": "Sleep velden om als kolommen weer te geven (of laat leeg voor alles)",
361
+ "chart.recordsTable.dropZone.columns.label": "Kolommen",
362
+ "chart.recordsTable.dropZone.columns.description": "Velden die als kolommen worden getoond, in deze volgorde",
363
+ "chart.recordsTable.dropZone.columns.empty": "Sleep velden hierheen om als kolom te tonen (of laat leeg voor alle)",
364
+ "chart.recordsTable.dropZone.hiddenColumns.label": "Verborgen velden",
365
+ "chart.recordsTable.dropZone.hiddenColumns.description": "Opgehaald voor rijcontext en links, maar nooit getoond",
366
+ "chart.recordsTable.dropZone.hiddenColumns.empty": "Sleep velden hierheen om ze op te halen zonder ze te tonen",
367
+ "chart.recordsTable.option.columnFormats.label": "Kolomopmaak",
368
+ "chart.recordsTable.option.columnFormats.description": "Kies hoe elke kolom zijn waarde weergeeft",
369
+ "chart.recordsTable.option.pageSize.label": "Rijen per pagina",
370
+ "chart.recordsTable.option.pageSize.description": "Hoeveel records tegelijk worden getoond",
371
+ "chart.recordsTable.option.pageSize.option.25": "25",
372
+ "chart.recordsTable.option.pageSize.option.50": "50",
373
+ "chart.recordsTable.option.pageSize.option.100": "100",
374
+ "chart.recordsTable.option.rowLink.label": "Rijlink",
375
+ "chart.recordsTable.option.rowLink.description": "Maak van elke rij een link. Gebruik {Cube.field}-tokens — verborgen velden werken ook. Alleen relatieve paden en http(s)-URL's.",
376
+ "chart.recordsTable.rowLink.urlTemplate": "URL-sjabloon",
377
+ "chart.recordsTable.rowLink.placeholder": "/employees/{Employees.id}",
378
+ "chart.recordsTable.rowLink.target.self": "Zelfde tabblad",
379
+ "chart.recordsTable.rowLink.target.blank": "Nieuw tabblad",
380
+ "chart.recordsTable.columnFormats.noColumns": "Wijs eerst kolommen toe — elke kolom kan hier daarna worden opgemaakt",
381
+ "chart.recordsTable.columnFormats.kind.text": "Tekst",
382
+ "chart.recordsTable.columnFormats.kind.number": "Getal",
383
+ "chart.recordsTable.columnFormats.kind.date": "Datum",
384
+ "chart.recordsTable.columnFormats.kind.badge": "Label",
385
+ "chart.recordsTable.columnFormats.kind.progress": "Voortgang",
386
+ "chart.recordsTable.columnFormats.numberFormat": "Getalopmaak",
387
+ "chart.recordsTable.columnFormats.granularity": "Granulariteit",
388
+ "chart.recordsTable.columnFormats.badgeColours": "Waardekleuren",
389
+ "chart.recordsTable.columnFormats.badgeColour": "Kleur",
390
+ "chart.recordsTable.columnFormats.badgeValue": "Waarde",
391
+ "chart.recordsTable.columnFormats.badgeAdd": "Waarde toevoegen",
392
+ "chart.recordsTable.columnFormats.badgeRemove": "Waarde verwijderen",
393
+ "chart.recordsTable.columnFormats.progressMin": "Minimum",
394
+ "chart.recordsTable.columnFormats.progressMax": "Maximum",
395
+ "chart.recordsTable.columnFormats.progressStyle": "Stijl",
396
+ "chart.recordsTable.columnFormats.progressStyle.bar": "Balk",
397
+ "chart.recordsTable.columnFormats.progressStyle.circle": "Cirkel",
398
+ "chart.recordsTable.columnFormats.header": "Kopregel",
355
399
  "chart.activityGrid.dropZone.dateField.empty": "Sleep een tijdsdimensie (granulariteit beïnvloedt rasterstructuur)",
356
400
  "chart.activityGrid.dropZone.valueField.empty": "Sleep een meting voor activiteitsintensiteit",
357
401
  "chart.kpiNumber.dropZone.yAxis.empty": "Sleep een meting hierheen",
@@ -369,6 +413,15 @@ var e = {
369
413
  "chart.heatmap.dropZone.valueField.empty": "Sleep één meting hierheen",
370
414
  "chart.boxPlot.dropZone.xAxis.empty": "Sleep een dimensie hierheen",
371
415
  "chart.boxPlot.dropZone.yAxis.empty": "Sleep 1, 3 of 5 metingen hierheen",
416
+ "chart.dotStrip.dropZone.xAxis.label": "Banden (rijen)",
417
+ "chart.dotStrip.dropZone.xAxis.description": "Dimensie die punten in rijen groepeert, bijv. team, schaal, regio",
418
+ "chart.dotStrip.dropZone.xAxis.empty": "Sleep een dimensie om op te groeperen",
419
+ "chart.dotStrip.dropZone.yAxis.label": "Waarde (horizontale positie)",
420
+ "chart.dotStrip.dropZone.yAxis.description": "Meting die elk punt langs de horizontale as positioneert",
421
+ "chart.dotStrip.dropZone.yAxis.empty": "Sleep een meting hierheen",
422
+ "chart.dotStrip.dropZone.series.label": "Puntidentiteit",
423
+ "chart.dotStrip.dropZone.series.description": "Dimensie die elk punt een eigen rij geeft — één punt per waarde, benoemd in de tooltip",
424
+ "chart.dotStrip.dropZone.series.empty": "Sleep een dimensie om in losse punten te splitsen",
372
425
  "chart.waterfall.dropZone.xAxis.empty": "Sleep een dimensie hierheen",
373
426
  "chart.waterfall.dropZone.yAxis.empty": "Sleep een meting hierheen",
374
427
  "chart.candlestick.dropZone.xAxis.empty": "Sleep een tijd- of dimensie hierheen",
@@ -469,6 +522,23 @@ var e = {
469
522
  "chart.option.showDataLabels.description": "Toon de waarde bij elk datapunt",
470
523
  "chart.option.showReferenceLineAtZero.label": "Toon Zero Reference Lijn",
471
524
  "chart.option.showReferenceLineAtZero.description": "Tekenen een dashed regel bij Y = 0",
525
+ "chart.option.showMedianMarker.label": "Mediaanmarkering tonen",
526
+ "chart.option.showMedianMarker.description": "Teken een streepje bij de mediaan van elke band",
527
+ "chart.option.showBandStats.label": "Bandstatistieken tonen",
528
+ "chart.option.showBandStats.description": "Toon het aantal punten en de spreiding naast elke bandnaam",
529
+ "chart.option.showExtremeLabels.label": "Uitersten labelen",
530
+ "chart.option.showExtremeLabels.description": "Benoem het laagste en hoogste punt in elke band",
531
+ "chart.option.dotSize.label": "Puntgrootte",
532
+ "chart.option.dotSize.description": "Grotere punten zijn beter zichtbaar maar spreiden de zwerm verder uit",
533
+ "chart.option.dotSize.small": "Klein",
534
+ "chart.option.dotSize.medium": "Middel",
535
+ "chart.option.dotSize.large": "Groot",
536
+ "chart.option.bandSort.label": "Bandvolgorde",
537
+ "chart.option.bandSort.description": "Hoe de banden van boven naar beneden worden geordend",
538
+ "chart.option.bandSort.none": "Queryvolgorde",
539
+ "chart.option.bandSort.valueDesc": "Hoogste mediaan eerst",
540
+ "chart.option.bandSort.valueAsc": "Laagste mediaan eerst",
541
+ "chart.option.bandSort.count": "Meeste punten eerst",
472
542
  "chart.option.lineType.label": "Lijn Interpolation",
473
543
  "chart.option.lineType.smooth": "Vloeiend (monotoon)",
474
544
  "chart.option.lineType.linear": "Lineair",
@@ -749,6 +819,7 @@ var e = {
749
819
  "server.validation.chart.barNeedsDimension": "Staafgrafieken hebben een xAxis-dimensie nodig voor categorielabels. Voeg een dimensie toe aan de query of gebruik in plaats daarvan het grafiektype \"table\".",
750
820
  "server.validation.chart.barXAxisRequired": "chartConfig.xAxis is vereist voor staaf grafieken. Put een dimensie in xAxis so bars hebben categorie labels.",
751
821
  "server.validation.chart.dropZoneRequired": "chartConfig.{key} is vereist voor {chartType} grafiek ({label}). Accepts: {acceptDesc}.",
822
+ "server.validation.chart.recordGrainNeedsUngrouped": "{chartType} toont één rij per record, dus de query moet \"ungrouped\": true instellen. Voeg dit toe aan de query en verwijder count/countDistinct metingen — die kunnen niet ongegroepeerd worden. Een ongegroepeerde query kan ook niet twee cubes omvatten die via hasMany verbonden zijn, dus beperk deze tot één cube plus zijn to-one joins.",
752
823
  "server.validation.chart.seriesDuplicatesXAxis": "chartConfig.series mag niet hetzelfde veld bevatten als xAxis (gevonden: {duplicates}). Het series-veld is alleen bedoeld om te splitsen in gegroepeerde/gestapelde subseries met een ANDERE dimensie. Verwijder het duplicaat uit series.",
753
824
  "server.validation.flow.bindingKeyCubeNotFound": "Koppeling sleutel cube niet gevonden: {cubeName}",
754
825
  "server.validation.flow.bindingKeyDimNotFound": "Koppeling sleutel dimensie niet gevonden: {dimName} in cube {cubeName}",
@@ -958,6 +1029,7 @@ var e = {
958
1029
  "chart.runtime.noDataHint.treemap": "Geen datapunten om weer te geven in boomkaart",
959
1030
  "chart.runtime.noDataHint.bubble": "Geen datapunten om weer te geven in bellendiagram",
960
1031
  "chart.runtime.noDataHint.boxPlot": "Geen datapunten om weer te geven in boxplot",
1032
+ "chart.runtime.noDataHint.dotStrip": "Geen gegevenspunten om te tonen in het puntenstrookdiagram",
961
1033
  "chart.runtime.noDataHint.waterfall": "Geen datapunten om weer te geven in watervalgrafiek",
962
1034
  "chart.runtime.noDataHint.candlestick": "Geen datapunten om weer te geven in candlestickgrafiek",
963
1035
  "chart.runtime.noDataHint.gauge": "Geen datapunten om weer te geven in meterdiagram",
@@ -980,6 +1052,14 @@ var e = {
980
1052
  "chart.runtime.noValidDataHint.pie": "Geen datapunten om weer te geven in cirkeldiagram",
981
1053
  "chart.runtime.noValidDataHint.pieFiltered": "Uitgefilterd {count} gegevens punten (zero van ongeldig waarden)",
982
1054
  "chart.runtime.noValidDataHint.boxPlot": "Kon boxplotstatistieken niet berekenen uit de opgegeven gegevens",
1055
+ "chart.runtime.noValidDataHint.dotStrip": "Geen geldige numerieke waarden voor het puntenstrookdiagram",
1056
+ "chart.runtime.configErrorHint.dotStrip": "Een puntenstrookdiagram heeft een dimensie om op te groeperen en één meting nodig",
1057
+ "chart.runtime.dotStrip.unlabelledBand": "(geen waarde)",
1058
+ "chart.runtime.dotStrip.count": "n={count}",
1059
+ "chart.runtime.dotStrip.countTruncated": "n={count}+",
1060
+ "chart.runtime.dotStrip.noDataRecorded": "geen gegevens vastgelegd",
1061
+ "chart.runtime.dotStrip.spread": "spreiding {spread}×",
1062
+ "chart.runtime.dotStrip.truncated": "De eerste {max} banden worden getoond",
983
1063
  "chart.runtime.noValidDataHint.gauge": "Gauge-waarde is geen geldig getal",
984
1064
  "chart.runtime.noValidDataHint.kpiText": "Alle waarden are null of ongeldig",
985
1065
  "chart.runtime.configError": "Configuratiefout",
@@ -1004,6 +1084,11 @@ var e = {
1004
1084
  "chart.runtime.responsiveContainerError": "Maken van responsieve container mislukt",
1005
1085
  "chart.runtime.noDataToDisplay": "Geen gegevens om weer te geven",
1006
1086
  "chart.runtime.table.invalidStructure": "Gegevens structure is ongeldig",
1087
+ "chart.runtime.recordsTable.noColumns": "Geen kolommen beschikbaar",
1088
+ "chart.runtime.recordsTable.rowRange": "{from}–{to} van {total}",
1089
+ "chart.runtime.recordsTable.pageOf": "Pagina {page} van {pages}",
1090
+ "chart.runtime.recordsTable.previousPage": "Vorige pagina",
1091
+ "chart.runtime.recordsTable.nextPage": "Volgende pagina",
1007
1092
  "chart.runtime.heatmapNoResults": "De query retourneerde geen resultaten voor de heatmap",
1008
1093
  "chart.runtime.heatmapConfigRequired": "Configuratie vereist",
1009
1094
  "chart.runtime.heatmapXRequired": "X-asdimensie vereist.",
@@ -1050,6 +1135,8 @@ var e = {
1050
1135
  "chart.runtime.axisFormat.prefixExample": "bijv., $",
1051
1136
  "chart.runtime.axisFormat.suffix": "Achtervoegsel",
1052
1137
  "chart.runtime.axisFormat.suffixExample": "bijv., eenheden",
1138
+ "chart.runtime.axisFormat.currencyCode": "Valutacode",
1139
+ "chart.runtime.axisFormat.currencyCodeHint": "Laat leeg om de landinstelling van de kijker te volgen",
1053
1140
  "chart.runtime.axisFormat.abbreviation": "Afkorting",
1054
1141
  "chart.runtime.axisFormat.yes": "Ja",
1055
1142
  "chart.runtime.axisFormat.no": "Nee",
@@ -1455,6 +1542,7 @@ var e = {
1455
1542
  "portlet.invalidQuery": "Ongeldig query of no results",
1456
1543
  "portlet.unsupportedChartType": "Unsupported grafiek type",
1457
1544
  "portlet.unableToRender": "Kan niet renderen grafiek",
1545
+ "portlet.droppedMembers": "Verborgen — niet meer in het model: {members}",
1458
1546
  "portlet.enterTitle": "Enter portlet title...",
1459
1547
  "portlet.enterPortletTitle": "Voer een titel in voor de portlet.",
1460
1548
  "portlet.configureQuery": "Configureer een query voordat je opslaat.",
@@ -1578,4 +1666,4 @@ var e = {
1578
1666
  //#endregion
1579
1667
  export { e as default };
1580
1668
 
1581
- //# sourceMappingURL=nl-NL-CMXHDBr0.js.map
1669
+ //# sourceMappingURL=nl-NL-B9VnaVAm.js.map