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
@@ -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",
@@ -312,6 +315,9 @@ var v = (e, t, n) => {
312
315
  "chart.boxPlot.label": "Box Plot",
313
316
  "chart.boxPlot.description": "Show statistical distribution (median, IQR, whiskers) across categories",
314
317
  "chart.boxPlot.useCase": "Best for P&L spread per symbol, trade size distribution, latency distribution across platforms",
318
+ "chart.dotStrip.label": "Dot Strip Plot",
319
+ "chart.dotStrip.description": "Show every individual value as a dot, grouped into category bands",
320
+ "chart.dotStrip.useCase": "Best for comparing individuals within a group — spread of output per team, salary per band, latency per endpoint",
315
321
  "chart.waterfall.label": "Waterfall Chart",
316
322
  "chart.waterfall.description": "Show cumulative effect of sequential positive and negative values",
317
323
  "chart.waterfall.useCase": "Best for P&L decomposition, cash flow analysis, budget variance, or any sequential contribution breakdown",
@@ -369,6 +375,44 @@ var v = (e, t, n) => {
369
375
  "chart.treemap.dropZone.yAxis.empty": "Drop a measure for size",
370
376
  "chart.treemap.dropZone.series.empty": "Drop a dimension for colour grouping",
371
377
  "chart.table.dropZone.xAxis.empty": "Drop fields to display as columns (or leave empty for all)",
378
+ "chart.recordsTable.dropZone.columns.label": "Columns",
379
+ "chart.recordsTable.dropZone.columns.description": "Fields rendered as columns, in this order",
380
+ "chart.recordsTable.dropZone.columns.empty": "Drop fields to display as columns (or leave empty for all)",
381
+ "chart.recordsTable.dropZone.hiddenColumns.label": "Hidden fields",
382
+ "chart.recordsTable.dropZone.hiddenColumns.description": "Fetched for row context and links, never displayed",
383
+ "chart.recordsTable.dropZone.hiddenColumns.empty": "Drop fields to fetch without showing them",
384
+ "chart.recordsTable.option.columnFormats.label": "Column formats",
385
+ "chart.recordsTable.option.columnFormats.description": "Choose how each column renders its value",
386
+ "chart.recordsTable.option.pageSize.label": "Rows per page",
387
+ "chart.recordsTable.option.pageSize.description": "How many records to show at a time",
388
+ "chart.recordsTable.option.pageSize.option.25": "25",
389
+ "chart.recordsTable.option.pageSize.option.50": "50",
390
+ "chart.recordsTable.option.pageSize.option.100": "100",
391
+ "chart.recordsTable.option.rowLink.label": "Row link",
392
+ "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.",
393
+ "chart.recordsTable.rowLink.urlTemplate": "URL template",
394
+ "chart.recordsTable.rowLink.placeholder": "/employees/{Employees.id}",
395
+ "chart.recordsTable.rowLink.target.self": "Same tab",
396
+ "chart.recordsTable.rowLink.target.blank": "New tab",
397
+ "chart.recordsTable.columnFormats.noColumns": "Assign columns first — each one can then be formatted here",
398
+ "chart.recordsTable.columnFormats.kind.text": "Text",
399
+ "chart.recordsTable.columnFormats.kind.number": "Number",
400
+ "chart.recordsTable.columnFormats.kind.date": "Date",
401
+ "chart.recordsTable.columnFormats.kind.badge": "Badge",
402
+ "chart.recordsTable.columnFormats.kind.progress": "Progress",
403
+ "chart.recordsTable.columnFormats.numberFormat": "Number format",
404
+ "chart.recordsTable.columnFormats.granularity": "Granularity",
405
+ "chart.recordsTable.columnFormats.badgeColours": "Value colours",
406
+ "chart.recordsTable.columnFormats.badgeColour": "Colour",
407
+ "chart.recordsTable.columnFormats.badgeValue": "Value",
408
+ "chart.recordsTable.columnFormats.badgeAdd": "Add value",
409
+ "chart.recordsTable.columnFormats.badgeRemove": "Remove value",
410
+ "chart.recordsTable.columnFormats.progressMin": "Minimum",
411
+ "chart.recordsTable.columnFormats.progressMax": "Maximum",
412
+ "chart.recordsTable.columnFormats.progressStyle": "Style",
413
+ "chart.recordsTable.columnFormats.progressStyle.bar": "Bar",
414
+ "chart.recordsTable.columnFormats.progressStyle.circle": "Circle",
415
+ "chart.recordsTable.columnFormats.header": "Header",
372
416
  "chart.activityGrid.dropZone.dateField.empty": "Drop a time dimension (granularity affects grid structure)",
373
417
  "chart.activityGrid.dropZone.valueField.empty": "Drop a measure for activity intensity",
374
418
  "chart.kpiNumber.dropZone.yAxis.empty": "Drop a measure here",
@@ -386,6 +430,15 @@ var v = (e, t, n) => {
386
430
  "chart.heatmap.dropZone.valueField.empty": "Drop one measure here",
387
431
  "chart.boxPlot.dropZone.xAxis.empty": "Drop a dimension here",
388
432
  "chart.boxPlot.dropZone.yAxis.empty": "Drop 1, 3, or 5 measures here",
433
+ "chart.dotStrip.dropZone.xAxis.label": "Bands (rows)",
434
+ "chart.dotStrip.dropZone.xAxis.description": "Dimension that groups dots into rows, e.g. team, band, region",
435
+ "chart.dotStrip.dropZone.xAxis.empty": "Drop a dimension to band by",
436
+ "chart.dotStrip.dropZone.yAxis.label": "Value (horizontal position)",
437
+ "chart.dotStrip.dropZone.yAxis.description": "Measure that positions each dot along the horizontal axis",
438
+ "chart.dotStrip.dropZone.yAxis.empty": "Drop a measure here",
439
+ "chart.dotStrip.dropZone.series.label": "Dot identity",
440
+ "chart.dotStrip.dropZone.series.description": "Dimension that gives each dot its own row — one dot per value, named in the tooltip",
441
+ "chart.dotStrip.dropZone.series.empty": "Drop a dimension to split into individual dots",
389
442
  "chart.waterfall.dropZone.xAxis.empty": "Drop a dimension here",
390
443
  "chart.waterfall.dropZone.yAxis.empty": "Drop a measure here",
391
444
  "chart.candlestick.dropZone.xAxis.empty": "Drop a time or dimension here",
@@ -486,6 +539,23 @@ var v = (e, t, n) => {
486
539
  "chart.option.showDataLabels.description": "Display the value at each data point",
487
540
  "chart.option.showReferenceLineAtZero.label": "Show Zero Reference Line",
488
541
  "chart.option.showReferenceLineAtZero.description": "Draw a dashed line at Y = 0",
542
+ "chart.option.showMedianMarker.label": "Show Median Marker",
543
+ "chart.option.showMedianMarker.description": "Draw a tick at each band's median value",
544
+ "chart.option.showBandStats.label": "Show Band Statistics",
545
+ "chart.option.showBandStats.description": "Show the dot count and spread beside each band name",
546
+ "chart.option.showExtremeLabels.label": "Label Extremes",
547
+ "chart.option.showExtremeLabels.description": "Name the lowest and highest dot in each band",
548
+ "chart.option.dotSize.label": "Dot Size",
549
+ "chart.option.dotSize.description": "Larger dots are easier to see but spread the swarm further",
550
+ "chart.option.dotSize.small": "Small",
551
+ "chart.option.dotSize.medium": "Medium",
552
+ "chart.option.dotSize.large": "Large",
553
+ "chart.option.bandSort.label": "Band Order",
554
+ "chart.option.bandSort.description": "How to order the bands from top to bottom",
555
+ "chart.option.bandSort.none": "Query order",
556
+ "chart.option.bandSort.valueDesc": "Highest median first",
557
+ "chart.option.bandSort.valueAsc": "Lowest median first",
558
+ "chart.option.bandSort.count": "Most dots first",
489
559
  "chart.option.lineType.label": "Line Interpolation",
490
560
  "chart.option.lineType.smooth": "Smooth (monotone)",
491
561
  "chart.option.lineType.linear": "Linear",
@@ -766,6 +836,7 @@ var v = (e, t, n) => {
766
836
  "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
837
  "server.validation.chart.barXAxisRequired": "chartConfig.xAxis is required for bar charts. Put a dimension in xAxis so bars have category labels.",
768
838
  "server.validation.chart.dropZoneRequired": "chartConfig.{key} is required for {chartType} chart ({label}). Accepts: {acceptDesc}.",
839
+ "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
840
  "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
841
  "server.validation.flow.bindingKeyCubeNotFound": "Binding key cube not found: {cubeName}",
771
842
  "server.validation.flow.bindingKeyDimNotFound": "Binding key dimension not found: {dimName} in cube {cubeName}",
@@ -975,6 +1046,7 @@ var v = (e, t, n) => {
975
1046
  "chart.runtime.noDataHint.treemap": "No data points to display in treemap chart",
976
1047
  "chart.runtime.noDataHint.bubble": "No data points to display in bubble chart",
977
1048
  "chart.runtime.noDataHint.boxPlot": "No data points to display in box plot chart",
1049
+ "chart.runtime.noDataHint.dotStrip": "No data points to display in dot strip plot",
978
1050
  "chart.runtime.noDataHint.waterfall": "No data points to display in waterfall chart",
979
1051
  "chart.runtime.noDataHint.candlestick": "No data points to display in candlestick chart",
980
1052
  "chart.runtime.noDataHint.gauge": "No data points to display in gauge chart",
@@ -997,6 +1069,14 @@ var v = (e, t, n) => {
997
1069
  "chart.runtime.noValidDataHint.pie": "No data points to display in pie chart",
998
1070
  "chart.runtime.noValidDataHint.pieFiltered": "Filtered out {count} data points (zero or invalid values)",
999
1071
  "chart.runtime.noValidDataHint.boxPlot": "Could not compute box plot statistics from the provided data",
1072
+ "chart.runtime.noValidDataHint.dotStrip": "No valid numeric values for the dot strip plot",
1073
+ "chart.runtime.configErrorHint.dotStrip": "Dot strip plot needs a dimension to band by and one measure",
1074
+ "chart.runtime.dotStrip.unlabelledBand": "(no value)",
1075
+ "chart.runtime.dotStrip.count": "n={count}",
1076
+ "chart.runtime.dotStrip.countTruncated": "n={count}+",
1077
+ "chart.runtime.dotStrip.noDataRecorded": "no data recorded",
1078
+ "chart.runtime.dotStrip.spread": "spread {spread}×",
1079
+ "chart.runtime.dotStrip.truncated": "Showing the first {max} bands",
1000
1080
  "chart.runtime.noValidDataHint.gauge": "Gauge value is not a valid number",
1001
1081
  "chart.runtime.noValidDataHint.kpiText": "All values are null or invalid",
1002
1082
  "chart.runtime.configError": "Configuration Error",
@@ -1021,6 +1101,11 @@ var v = (e, t, n) => {
1021
1101
  "chart.runtime.responsiveContainerError": "Failed to create responsive container",
1022
1102
  "chart.runtime.noDataToDisplay": "No data to display",
1023
1103
  "chart.runtime.table.invalidStructure": "Data structure is invalid",
1104
+ "chart.runtime.recordsTable.noColumns": "No columns available",
1105
+ "chart.runtime.recordsTable.rowRange": "{from}–{to} of {total}",
1106
+ "chart.runtime.recordsTable.pageOf": "Page {page} of {pages}",
1107
+ "chart.runtime.recordsTable.previousPage": "Previous page",
1108
+ "chart.runtime.recordsTable.nextPage": "Next page",
1024
1109
  "chart.runtime.heatmapNoResults": "The query returned no results for the heatmap",
1025
1110
  "chart.runtime.heatmapConfigRequired": "Configuration required",
1026
1111
  "chart.runtime.heatmapXRequired": "X-axis dimension required. ",
@@ -1067,6 +1152,8 @@ var v = (e, t, n) => {
1067
1152
  "chart.runtime.axisFormat.prefixExample": "e.g., $",
1068
1153
  "chart.runtime.axisFormat.suffix": "Suffix",
1069
1154
  "chart.runtime.axisFormat.suffixExample": "e.g., units",
1155
+ "chart.runtime.axisFormat.currencyCode": "Currency code",
1156
+ "chart.runtime.axisFormat.currencyCodeHint": "Leave blank to follow the viewer's locale",
1070
1157
  "chart.runtime.axisFormat.abbreviation": "Abbreviation",
1071
1158
  "chart.runtime.axisFormat.yes": "Yes",
1072
1159
  "chart.runtime.axisFormat.no": "No",
@@ -1472,6 +1559,7 @@ var v = (e, t, n) => {
1472
1559
  "portlet.invalidQuery": "Invalid query or no results",
1473
1560
  "portlet.unsupportedChartType": "Unsupported chart type",
1474
1561
  "portlet.unableToRender": "Unable to render chart",
1562
+ "portlet.droppedMembers": "Hidden — no longer in the model: {members}",
1475
1563
  "portlet.enterTitle": "Enter portlet title...",
1476
1564
  "portlet.enterPortletTitle": "Please enter a title for the portlet.",
1477
1565
  "portlet.configureQuery": "Please configure a query before saving.",
@@ -1610,9 +1698,9 @@ async function te(e) {
1610
1698
  try {
1611
1699
  let t = await v(/* #__PURE__ */ Object.assign({
1612
1700
  "./locales/af-ZA.json": () => import("./af-ZA-C0dGb_53.js"),
1613
- "./locales/en-US.json": () => import("./en-US-BE6VoG0o.js"),
1701
+ "./locales/en-US.json": () => import("./en-US-HP6FHuNy.js"),
1614
1702
  "./locales/en.json": () => Promise.resolve().then(() => y),
1615
- "./locales/nl-NL.json": () => import("./nl-NL-CMXHDBr0.js")
1703
+ "./locales/nl-NL.json": () => import("./nl-NL-B9VnaVAm.js")
1616
1704
  }), `./locales/${e}.json`, 3);
1617
1705
  x = e, S = {
1618
1706
  ...b,
@@ -1674,7 +1762,7 @@ function D(e) {
1674
1762
  }
1675
1763
  //#endregion
1676
1764
  //#region src/client/utils/axisValueFormatting.ts
1677
- function ae(e) {
1765
+ function O(e) {
1678
1766
  return {
1679
1767
  US: "USD",
1680
1768
  CA: "CAD",
@@ -1720,7 +1808,7 @@ function ae(e) {
1720
1808
  TR: "TRY"
1721
1809
  }[e.split("-")[1]?.toUpperCase()] || "USD";
1722
1810
  }
1723
- function oe(e, t) {
1811
+ function ae(e, t) {
1724
1812
  if (!t) return {
1725
1813
  displayValue: e,
1726
1814
  abbreviationSuffix: ""
@@ -1740,8 +1828,11 @@ function oe(e, t) {
1740
1828
  abbreviationSuffix: ""
1741
1829
  };
1742
1830
  }
1831
+ function oe(e, t) {
1832
+ return e && /^[A-Za-z]{3}$/.test(e) ? e.toUpperCase() : O(t);
1833
+ }
1743
1834
  function se(e) {
1744
- let { displayValue: t, abbreviate: n, abbreviationSuffix: r, decimals: i, locale: a } = e, o = ae(a);
1835
+ let { displayValue: t, abbreviate: n, abbreviationSuffix: r, decimals: i, locale: a } = e, o = oe(e.config.currencyCode, a);
1745
1836
  if (n && r) {
1746
1837
  let e = new Intl.NumberFormat(a, {
1747
1838
  style: "currency",
@@ -1775,7 +1866,7 @@ function le(e) {
1775
1866
  maximumFractionDigits: r
1776
1867
  }).format(t) + n + s;
1777
1868
  }
1778
- function O(e) {
1869
+ function k(e) {
1779
1870
  let { displayValue: t, abbreviationSuffix: n, decimals: r, locale: i } = e;
1780
1871
  return new Intl.NumberFormat(i, {
1781
1872
  minimumFractionDigits: r,
@@ -1786,10 +1877,10 @@ var ue = {
1786
1877
  currency: se,
1787
1878
  percent: ce,
1788
1879
  custom: le,
1789
- number: O
1880
+ number: k
1790
1881
  };
1791
1882
  function de(e) {
1792
- return ((e.config.unit ? ue[e.config.unit] : void 0) || O)(e);
1883
+ return ((e.config.unit ? ue[e.config.unit] : void 0) || k)(e);
1793
1884
  }
1794
1885
  //#endregion
1795
1886
  //#region src/client/utils/timeValueFormatting.ts
@@ -1826,27 +1917,27 @@ function me(e) {
1826
1917
  }
1827
1918
  //#endregion
1828
1919
  //#region src/client/utils/chartUtils.ts
1829
- function k(e) {
1920
+ function A(e) {
1830
1921
  return e != null && !isNaN(Number(e));
1831
1922
  }
1832
- function A(e) {
1923
+ function j(e) {
1833
1924
  if (e == null) return null;
1834
1925
  let t = typeof e == "string" ? parseFloat(e) : Number(e);
1835
1926
  return isNaN(t) ? null : t;
1836
1927
  }
1837
- function j(e) {
1928
+ function M(e) {
1838
1929
  if (e == null) return "No data";
1839
1930
  let t = typeof e == "number" ? e : parseFloat(e);
1840
1931
  return isNaN(t) ? String(e) : Number.isInteger(t) ? t.toLocaleString() : parseFloat(t.toFixed(2)).toLocaleString();
1841
1932
  }
1842
- function M(e, t, n) {
1933
+ function N(e, t, n) {
1843
1934
  if (e == null) return "No data";
1844
1935
  let r = typeof e == "number" ? e : parseFloat(String(e));
1845
1936
  if (isNaN(r)) return String(e);
1846
1937
  if (!isFinite(r)) return r > 0 ? "∞" : "-∞";
1847
1938
  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);
1939
+ if (!t) return M(e);
1940
+ let { abbreviate: a = !0, decimals: o } = t, { displayValue: s, abbreviationSuffix: c } = ae(r, a);
1850
1941
  return de({
1851
1942
  displayValue: s,
1852
1943
  abbreviate: a,
@@ -1857,15 +1948,15 @@ function M(e, t, n) {
1857
1948
  });
1858
1949
  }
1859
1950
  function he(e) {
1860
- return (t) => M(t, e);
1951
+ return (t) => N(t, e);
1861
1952
  }
1862
- function N(e, t) {
1953
+ function P(e, t) {
1863
1954
  return t[e] || e;
1864
1955
  }
1865
1956
  function ge(e, t) {
1866
- return e.map((e) => N(e, t));
1957
+ return e.map((e) => P(e, t));
1867
1958
  }
1868
- function P(e, t) {
1959
+ function F(e, t) {
1869
1960
  if (!e) return "Unknown";
1870
1961
  let n = String(e), r = fe(n);
1871
1962
  if (!r) return n;
@@ -1875,7 +1966,7 @@ function P(e, t) {
1875
1966
  }
1876
1967
  return me(r);
1877
1968
  }
1878
- function F(e, t) {
1969
+ function I(e, t) {
1879
1970
  try {
1880
1971
  if (e?.timeDimensions) {
1881
1972
  let n = e.timeDimensions.find((e) => t === e.dimension || t.startsWith(e.dimension.replace(".", "_")) || t === `${e.dimension}_${e.granularity}`);
@@ -1900,18 +1991,18 @@ function F(e, t) {
1900
1991
  return;
1901
1992
  }
1902
1993
  }
1903
- function I(e, t, n, r, i = (e) => e) {
1994
+ function L(e, t, n, r, i = (e) => e) {
1904
1995
  if (!e || e.length === 0) return [];
1905
- let a = F(r, t);
1996
+ let a = I(r, t);
1906
1997
  return e.map((e) => {
1907
- let r = { name: P(e[t], a) || e[t] || "Unknown" };
1998
+ let r = { name: F(e[t], a) || e[t] || "Unknown" };
1908
1999
  return n.forEach((t) => {
1909
2000
  let n = i(t);
1910
- n !== "__proto__" && n !== "constructor" && n !== "prototype" && (r[n] = A(e[t]));
2001
+ n !== "__proto__" && n !== "constructor" && n !== "prototype" && (r[n] = j(e[t]));
1911
2002
  }), r;
1912
2003
  });
1913
2004
  }
1914
- function L(e, t, n, r, i, a = (e) => e) {
2005
+ function _e(e, t, n, r, i, a = (e) => e) {
1915
2006
  if (!e || e.length === 0) return {
1916
2007
  data: [],
1917
2008
  seriesKeys: [],
@@ -1921,11 +2012,11 @@ function L(e, t, n, r, i, a = (e) => e) {
1921
2012
  if (u.length > 0) {
1922
2013
  let n = {};
1923
2014
  return e.forEach((e) => {
1924
- let i = F(r, t), o = P(e[t], i) || e[t] || "Unknown";
2015
+ let i = I(r, t), o = F(e[t], i) || e[t] || "Unknown";
1925
2016
  o !== "__proto__" && o !== "constructor" && o !== "prototype" && (n[o] || (n[o] = { name: String(o) }), l.forEach((t) => {
1926
2017
  let r = a(t);
1927
2018
  if (r === "__proto__" || r === "constructor" || r === "prototype") return;
1928
- let i = A(e[t]);
2019
+ let i = j(e[t]);
1929
2020
  if (i !== null) {
1930
2021
  let e = n[o][r];
1931
2022
  n[o][r] = e == null ? i : e + i;
@@ -1936,7 +2027,7 @@ function L(e, t, n, r, i, a = (e) => e) {
1936
2027
  let t = String(r), i = l[0] || c.find((e) => e.includes("totalCost") || e.includes("count") || e.includes("sum")) || c[0];
1937
2028
  if (i) {
1938
2029
  if (t === "__proto__" || t === "constructor" || t === "prototype") return;
1939
- let r = A(e[i]);
2030
+ let r = j(e[i]);
1940
2031
  if (r !== null) {
1941
2032
  let e = n[o][t];
1942
2033
  n[o][t] = e == null ? r : e + r;
@@ -1954,7 +2045,7 @@ function L(e, t, n, r, i, a = (e) => e) {
1954
2045
  };
1955
2046
  }
1956
2047
  return {
1957
- data: I(e, t, n, r, a),
2048
+ data: L(e, t, n, r, a),
1958
2049
  seriesKeys: n.map((e) => a(e)),
1959
2050
  hasDimensions: !1
1960
2051
  };
@@ -1968,18 +2059,18 @@ function R() {
1968
2059
  }
1969
2060
  //#endregion
1970
2061
  //#region src/client/theme/index.ts
1971
- function _e(e) {
2062
+ function ve(e) {
1972
2063
  return typeof window > "u" ? "" : getComputedStyle(document.documentElement).getPropertyValue(`--dc-${e}`).trim();
1973
2064
  }
1974
2065
  function z(e, t) {
1975
2066
  typeof window > "u" || document.documentElement.style.setProperty(`--dc-${e}`, t);
1976
2067
  }
1977
- function ve(e) {
2068
+ function ye(e) {
1978
2069
  typeof window > "u" || Object.entries(e.colors).forEach(([e, t]) => {
1979
2070
  t && z(e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`), t);
1980
2071
  });
1981
2072
  }
1982
- function ye() {
2073
+ function be() {
1983
2074
  if (typeof window > "u") return;
1984
2075
  let e = document.documentElement.style;
1985
2076
  Array.from(e).forEach((t) => {
@@ -1993,10 +2084,10 @@ function B() {
1993
2084
  let t = document.documentElement.getAttribute("data-theme");
1994
2085
  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
2086
  }
1996
- function be(e) {
2087
+ function xe(e) {
1997
2088
  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
2089
  }
1999
- function xe() {
2090
+ function Se() {
2000
2091
  let e = B();
2001
2092
  return e === "dark" || e === "neon";
2002
2093
  }
@@ -2014,7 +2105,7 @@ function V(e) {
2014
2105
  t.disconnect(), n.removeEventListener("change", r);
2015
2106
  };
2016
2107
  }
2017
- var Se = {
2108
+ var Ce = {
2018
2109
  light: {
2019
2110
  name: "light",
2020
2111
  colors: {
@@ -2062,7 +2153,7 @@ var Se = {
2062
2153
  danger: "#ff1493"
2063
2154
  }
2064
2155
  }
2065
- }, Ce = [
2156
+ }, we = [
2066
2157
  "#3b82f6",
2067
2158
  "#10b981",
2068
2159
  "#f59e0b",
@@ -2078,12 +2169,12 @@ var Se = {
2078
2169
  "#22a884",
2079
2170
  "#7ad151",
2080
2171
  "#fde725"
2081
- ], we = "#10b981", Te = "#ef4444", U = {
2172
+ ], Te = "#10b981", Ee = "#ef4444", U = {
2082
2173
  top: 5,
2083
2174
  right: 30,
2084
2175
  left: 20,
2085
2176
  bottom: 5
2086
- }, Ee = {
2177
+ }, De = {
2087
2178
  top: 5,
2088
2179
  right: 30,
2089
2180
  left: 20,
@@ -2139,7 +2230,7 @@ function W() {
2139
2230
  }
2140
2231
  //#endregion
2141
2232
  //#region src/client/components/charts/BubbleChart.helpers.ts
2142
- function De(e) {
2233
+ function Oe(e) {
2143
2234
  return {
2144
2235
  showLegend: e?.showLegend ?? !0,
2145
2236
  showGrid: e?.showGrid ?? !0,
@@ -2151,7 +2242,7 @@ function De(e) {
2151
2242
  leftYAxisFormat: e?.leftYAxisFormat
2152
2243
  };
2153
2244
  }
2154
- function Oe(e) {
2245
+ function ke(e) {
2155
2246
  if (!e?.xAxis || !e?.yAxis || !e?.series) return null;
2156
2247
  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
2248
  return !t || !n || !r || !i ? null : {
@@ -2162,7 +2253,7 @@ function Oe(e) {
2162
2253
  colorFieldName: Array.isArray(e.colorField) ? e.colorField[0] : e.colorField
2163
2254
  };
2164
2255
  }
2165
- function ke(e, t, n) {
2256
+ function Ae(e, t, n) {
2166
2257
  if (t && e) {
2167
2258
  let t = String(e), r;
2168
2259
  if (t.match(/^\d{4}-\d{2}-\d{2}[T ]/)) {
@@ -2171,19 +2262,19 @@ function ke(e, t, n) {
2171
2262
  } else r = new Date(t);
2172
2263
  return {
2173
2264
  xNum: isNaN(r.getTime()) ? parseFloat(t) : r.getTime(),
2174
- xLabel: P(e, n)
2265
+ xLabel: F(e, n)
2175
2266
  };
2176
2267
  }
2177
- let r = P(e, n) || e;
2268
+ let r = F(e, n) || e;
2178
2269
  return {
2179
2270
  xNum: typeof r == "string" ? parseFloat(r) : r,
2180
2271
  xLabel: String(r)
2181
2272
  };
2182
2273
  }
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;
2274
+ function je(e, t, n) {
2275
+ 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
2276
  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];
2277
+ let { xNum: t, xLabel: n } = Ae(e[r], l, c), u = j(e[i]), d = j(e[a]), f = e[o];
2187
2278
  return {
2188
2279
  x: t,
2189
2280
  xLabel: n,
@@ -2192,14 +2283,14 @@ function Ae(e, t, n) {
2192
2283
  color: s ? e[s] : f,
2193
2284
  series: f,
2194
2285
  label: `${f || "Unknown"}`,
2195
- isValid: k(t) && u !== null && d !== null && d > 0
2286
+ isValid: A(t) && u !== null && d !== null && d > 0
2196
2287
  };
2197
2288
  }).filter((e) => e.isValid && e.size > 0).map(({ isValid: e, ...t }) => t);
2198
2289
  }
2199
2290
  function G(e, t) {
2200
2291
  return getComputedStyle(document.documentElement).getPropertyValue(e).trim() || t;
2201
2292
  }
2202
- function je(e) {
2293
+ function Me(e) {
2203
2294
  return {
2204
2295
  textColor: e ? G("--dc-text-muted", "#cbd5e1") : G("--dc-text-secondary", "#374151"),
2205
2296
  gridColor: e ? G("--dc-border", "#475569") : "#9ca3af"
@@ -2207,7 +2298,7 @@ function je(e) {
2207
2298
  }
2208
2299
  //#endregion
2209
2300
  //#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 = [
2301
+ 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
2302
  "J",
2212
2303
  "F",
2213
2304
  "M",
@@ -2253,7 +2344,7 @@ var K = (e) => Math.floor(e.getMonth() / 3) + 1, Me = (e) => e.getMonth() % 3 +
2253
2344
  "18-21",
2254
2345
  "21-00"
2255
2346
  ];
2256
- function Fe(e) {
2347
+ function Ie(e) {
2257
2348
  let t = new Date(Date.UTC(e.getFullYear(), e.getMonth(), e.getDate())), n = t.getUTCDay() || 7;
2258
2349
  t.setUTCDate(t.getUTCDate() + 4 - n);
2259
2350
  let r = t.getUTCFullYear(), i = new Date(Date.UTC(r, 0, 1));
@@ -2262,7 +2353,7 @@ function Fe(e) {
2262
2353
  week: Math.ceil(((t.getTime() - i.getTime()) / 864e5 + 1) / 7)
2263
2354
  };
2264
2355
  }
2265
- var Ie = {
2356
+ var Le = {
2266
2357
  quarter: {
2267
2358
  extractX: (e) => e.getFullYear(),
2268
2359
  extractY: (e) => K(e) - 1,
@@ -2275,7 +2366,7 @@ var Ie = {
2275
2366
  },
2276
2367
  month: {
2277
2368
  extractX: (e) => e.getFullYear() * 10 + K(e),
2278
- extractY: (e) => Me(e) - 1,
2369
+ extractY: (e) => Ne(e) - 1,
2279
2370
  xLabels: [],
2280
2371
  yLabels: J,
2281
2372
  xFormat: (e) => `Q${e % 10}`,
@@ -2287,10 +2378,10 @@ var Ie = {
2287
2378
  },
2288
2379
  week: {
2289
2380
  extractX: (e) => e.getFullYear() * 100 + (e.getMonth() + 1),
2290
- extractY: (e) => Ne(e) - 1,
2381
+ extractY: (e) => Pe(e) - 1,
2291
2382
  xLabels: [],
2292
2383
  yLabels: Y,
2293
- xFormat: (e) => Pe[e % 100 - 1] || "",
2384
+ xFormat: (e) => Fe[e % 100 - 1] || "",
2294
2385
  yFormat: (e) => Y[e] || "",
2295
2386
  cellWidth: 16,
2296
2387
  cellHeight: 16,
@@ -2299,7 +2390,7 @@ var Ie = {
2299
2390
  },
2300
2391
  day: {
2301
2392
  extractX: (e) => {
2302
- let { year: t, week: n } = Fe(e);
2393
+ let { year: t, week: n } = Ie(e);
2303
2394
  return t * 100 + n;
2304
2395
  },
2305
2396
  extractY: (e) => e.getDay(),
@@ -2325,13 +2416,13 @@ var Ie = {
2325
2416
  getYearFromX: (e) => Math.floor(e / 100)
2326
2417
  }
2327
2418
  };
2328
- function Le(e) {
2329
- return Ie[e?.toLowerCase()] ?? null;
2419
+ function Re(e) {
2420
+ return Le[e?.toLowerCase()] ?? null;
2330
2421
  }
2331
2422
  function Q(e) {
2332
2423
  if (e) return Array.isArray(e) ? e[0] : e;
2333
2424
  }
2334
- function Re(e, t) {
2425
+ function ze(e, t) {
2335
2426
  let n = e?.timeDimensions;
2336
2427
  if (!n || n.length === 0) return "day";
2337
2428
  let r = n.find((e) => e.dimension === t || e.dimension.includes(t));
@@ -2339,28 +2430,28 @@ function Re(e, t) {
2339
2430
  let i = n[0];
2340
2431
  return i && i.granularity ? i.granularity : "day";
2341
2432
  }
2342
- function ze(e) {
2433
+ function Be(e) {
2343
2434
  if (typeof e == "string") {
2344
2435
  let t = e;
2345
2436
  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
2437
  }
2347
2438
  return new Date(e);
2348
2439
  }
2349
- function Be(e, t, n, r, i) {
2440
+ function Ve(e, t, n, r, i) {
2350
2441
  return e.map((e) => {
2351
- let a = e[t], o = typeof e[n] == "string" ? parseFloat(e[n]) : e[n] || 0, s = ze(a);
2442
+ let a = e[t], o = typeof e[n] == "string" ? parseFloat(e[n]) : e[n] || 0, s = Be(a);
2352
2443
  return isNaN(s.getTime()) ? null : {
2353
2444
  x: r.extractX(s),
2354
2445
  y: r.extractY(s),
2355
2446
  value: o,
2356
2447
  date: s,
2357
- label: P(a, i)
2448
+ label: F(a, i)
2358
2449
  };
2359
2450
  }).filter((e) => e !== null);
2360
2451
  }
2361
2452
  //#endregion
2362
2453
  //#region src/client/components/charts/ActivityGridChart.render.ts
2363
- var Ve = [
2454
+ var He = [
2364
2455
  "Jan",
2365
2456
  "Feb",
2366
2457
  "Mar",
@@ -2374,7 +2465,7 @@ var Ve = [
2374
2465
  "Nov",
2375
2466
  "Dec"
2376
2467
  ];
2377
- function $(e) {
2468
+ function Ue(e) {
2378
2469
  return {
2379
2470
  textColor: e ? G("--dc-text-muted", "#cbd5e1") : G("--dc-text-secondary", "#374151"),
2380
2471
  lineColor: G("--dc-border", "#e5e7eb"),
@@ -2382,7 +2473,7 @@ function $(e) {
2382
2473
  cellStrokeColor: e ? G("--dc-border", "#334155") : G("--dc-bg", "#ffffff")
2383
2474
  };
2384
2475
  }
2385
- function He(e) {
2476
+ function We(e) {
2386
2477
  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
2478
  ...U,
2388
2479
  left: 60,
@@ -2402,10 +2493,10 @@ function He(e) {
2402
2493
  svgWidth: y
2403
2494
  };
2404
2495
  }
2405
- function Ue() {
2496
+ function Ge() {
2406
2497
  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
2498
  }
2408
- function We(e, t, n, r, i) {
2499
+ function $(e, t, n, r, i) {
2409
2500
  e.style("cursor", t.drillEnabled ? "pointer" : "default").on("mouseover", function(e) {
2410
2501
  if (h(this).style("stroke", "#000").style("stroke-width", 2), n) {
2411
2502
  let i = [`<strong>${n.label}</strong>`, `${t.getFieldLabel(t.valueField)}: ${n.value}`].join("<br>");
@@ -2417,14 +2508,14 @@ function We(e, t, n, r, i) {
2417
2508
  h(this).style("stroke", i).style("stroke-width", 1), r.transition().duration(200).style("opacity", 0);
2418
2509
  });
2419
2510
  }
2420
- function Ge(e, t, n, r, i, a) {
2511
+ function Ke(e, t, n, r, i, a) {
2421
2512
  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
2513
  o.forEach((e) => _.set(`${e.x}-${e.y}`, e));
2423
2514
  let v = /* @__PURE__ */ new Map();
2424
2515
  f.forEach((e, t) => v.set(e, t));
2425
2516
  for (let n of f) for (let o = p; o <= m; o++) {
2426
2517
  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) {
2518
+ d.showTooltip ? $(y, e, f, i, a.cellStrokeColor) : l && y.style("cursor", "pointer"), l && u && f && y.on("click", function(e) {
2428
2519
  u({
2429
2520
  dataPoint: {
2430
2521
  [s]: f.value,
@@ -2441,14 +2532,14 @@ function Ge(e, t, n, r, i, a) {
2441
2532
  });
2442
2533
  }
2443
2534
  }
2444
- function Ke(e) {
2535
+ function qe(e) {
2445
2536
  if (e > 9999) {
2446
2537
  let t = Math.floor(e / 100);
2447
- return `${Ve[e % 100 - 1]} '${t.toString().slice(-2)}`;
2538
+ return `${He[e % 100 - 1]} '${t.toString().slice(-2)}`;
2448
2539
  }
2449
2540
  return `'${e.toString().slice(-2)}`;
2450
2541
  }
2451
- function qe(e, t, n, r) {
2542
+ function Je(e, t, n, r) {
2452
2543
  let { gridMapping: i } = e, { completeXRange: a, finalCellWidth: o } = n, s = /* @__PURE__ */ new Map();
2453
2544
  a.forEach((e, t) => s.set(e, t));
2454
2545
  let c = /* @__PURE__ */ new Map();
@@ -2463,29 +2554,29 @@ function qe(e, t, n, r) {
2463
2554
  for (let [e, n] of c) {
2464
2555
  if (n.length === 0) continue;
2465
2556
  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);
2557
+ 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
2558
  }
2468
2559
  }
2469
- function Je(e, t, n, r) {
2560
+ function Ye(e, t, n, r) {
2470
2561
  let { gridMapping: i } = e, { completeXRange: a, finalCellWidth: o } = n, s = Math.max(1, Math.floor(a.length / 10));
2471
2562
  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
2563
  }
2473
- function Ye(e, t, n, r) {
2564
+ function Xe(e, t, n, r) {
2474
2565
  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);
2566
+ i.hasHierarchicalLabels && i.getYearFromX ? Je(e, t, n, r) : Ye(e, t, n, r);
2476
2567
  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
2568
  }
2478
- function Xe(e) {
2569
+ function Ze(e) {
2479
2570
  let { svgEl: t, gridData: n, dimensions: r, colorPalette: i, isDark: a, safeDisplayConfig: o } = e;
2480
2571
  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), () => {
2572
+ 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();
2573
+ return Ke(e, c, s, u, g, d), o.showLabels && Xe(e, c, s, d), () => {
2483
2574
  g.remove();
2484
2575
  };
2485
2576
  }
2486
2577
  //#endregion
2487
2578
  //#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 }) {
2579
+ 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
2580
  let { t: m } = D(), h = c(null), { containerRef: g, dimensions: _, dimensionsReady: v } = W(), [y, b] = l("light"), x = R();
2490
2581
  a(() => (b(B()), V((e) => b(e))), []);
2491
2582
  let S = s(() => ({
@@ -2501,10 +2592,10 @@ var Ze = /* @__PURE__ */ e({ default: () => Qe }), Qe = t.memo(function({ data:
2501
2592
  if (!e || e.length === 0 || !h.current || !v || _.width === 0 || !t?.dateField || !t?.valueField) return;
2502
2593
  let n = Q(t.dateField), i = Q(t.valueField);
2503
2594
  if (!n || !i) return;
2504
- let a = Re(r, n), s = Le(a);
2595
+ let a = ze(r, n), s = Re(a);
2505
2596
  if (!s) return;
2506
- let c = Be(e, n, i, s, a);
2507
- return Xe({
2597
+ let c = Ve(e, n, i, s, a);
2598
+ return Ze({
2508
2599
  svgEl: h.current,
2509
2600
  gridData: c,
2510
2601
  gridMapping: s,
@@ -2606,6 +2697,6 @@ var Ze = /* @__PURE__ */ e({ default: () => Qe }), Qe = t.memo(function({ data:
2606
2697
  });
2607
2698
  });
2608
2699
  //#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 };
2700
+ 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
2701
 
2611
- //# sourceMappingURL=chart-activity-grid-DvD_4wJz.js.map
2702
+ //# sourceMappingURL=chart-activity-grid-CJzxC18G.js.map