drizzle-cube 0.4.28 → 0.4.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. package/dist/adapters/anthropic-BIva8k1r.cjs +1 -0
  2. package/dist/adapters/anthropic-B_rg0BhK.js +140 -0
  3. package/dist/adapters/dist-Boc63-1q.cjs +2 -0
  4. package/dist/adapters/dist-De5fzUEM.js +581 -0
  5. package/dist/adapters/express/index.cjs +2 -10
  6. package/dist/adapters/express/index.js +232 -342
  7. package/dist/adapters/fastify/index.cjs +2 -10
  8. package/dist/adapters/fastify/index.js +275 -424
  9. package/dist/adapters/google-CT4kgmBf.js +154 -0
  10. package/dist/adapters/google-Dgo9-Kb5.cjs +2 -0
  11. package/dist/adapters/handler-B8vuFQYP.cjs +25 -0
  12. package/dist/adapters/handler-D-2-6uLM.js +2951 -0
  13. package/dist/adapters/hono/index.cjs +2 -10
  14. package/dist/adapters/hono/index.js +307 -402
  15. package/dist/adapters/mcp-prompts-BAutSQYA.js +344 -0
  16. package/dist/adapters/mcp-prompts-DsAkafVn.cjs +5 -0
  17. package/dist/adapters/mcp-transport-CuugoG8t.js +7821 -0
  18. package/dist/adapters/mcp-transport-Dpp6hdZe.cjs +253 -0
  19. package/dist/adapters/nextjs/index.cjs +1 -9
  20. package/dist/adapters/nextjs/index.js +377 -600
  21. package/dist/adapters/openai-CjBvA6mK.js +4114 -0
  22. package/dist/adapters/openai-DhLE0A9Z.cjs +1 -0
  23. package/dist/adapters/openai-Zjw4Zo4R.js +153 -0
  24. package/dist/adapters/openai-eJBw3LfQ.cjs +16 -0
  25. package/dist/adapters/types.cjs +0 -1
  26. package/dist/adapters/types.js +0 -1
  27. package/dist/adapters/utils-ChhNGUOF.js +5396 -0
  28. package/dist/adapters/utils-CwJplXR5.cjs +15 -0
  29. package/dist/adapters/utils.cjs +1 -19
  30. package/dist/adapters/utils.js +2 -21333
  31. package/dist/client/charts.js +15 -186
  32. package/dist/client/chunks/DashboardEditModal-C076pscL.js +6678 -0
  33. package/dist/client/chunks/DashboardEditModal-C076pscL.js.map +1 -0
  34. package/dist/client/chunks/FieldSearchModal-C0DjSWk3.js +2631 -0
  35. package/dist/client/chunks/FieldSearchModal-C0DjSWk3.js.map +1 -0
  36. package/dist/client/chunks/RetentionCombinedChart-DuGXc-AP.js +270 -0
  37. package/dist/client/chunks/RetentionCombinedChart-DuGXc-AP.js.map +1 -0
  38. package/dist/client/chunks/RetentionCombinedChart.config-DprbXd1N.js +56 -0
  39. package/dist/client/chunks/RetentionCombinedChart.config-DprbXd1N.js.map +1 -0
  40. package/dist/client/chunks/RetentionHeatmap-BoGY6mlZ.js +193 -0
  41. package/dist/client/chunks/RetentionHeatmap-BoGY6mlZ.js.map +1 -0
  42. package/dist/client/chunks/RetentionHeatmap.config-cbaNExVy.js +25 -0
  43. package/dist/client/chunks/RetentionHeatmap.config-cbaNExVy.js.map +1 -0
  44. package/dist/client/chunks/analysis-builder-DF0XntqC.js +6111 -0
  45. package/dist/client/chunks/analysis-builder-DF0XntqC.js.map +1 -0
  46. package/dist/client/chunks/analysis-builder-shared-2QhKYbs6.js +3114 -0
  47. package/dist/client/chunks/analysis-builder-shared-2QhKYbs6.js.map +1 -0
  48. package/dist/client/chunks/chart-activity-grid-CNES9VBk.js +803 -0
  49. package/dist/client/chunks/chart-activity-grid-CNES9VBk.js.map +1 -0
  50. package/dist/client/chunks/chart-area-CRJc3KOu.js +449 -0
  51. package/dist/client/chunks/chart-area-CRJc3KOu.js.map +1 -0
  52. package/dist/client/chunks/chart-bar-DD2PjJ5n.js +270 -0
  53. package/dist/client/chunks/chart-bar-DD2PjJ5n.js.map +1 -0
  54. package/dist/client/chunks/chart-box-plot-BcqleldJ.js +377 -0
  55. package/dist/client/chunks/chart-box-plot-BcqleldJ.js.map +1 -0
  56. package/dist/client/chunks/chart-bubble-BmQkVk4K.js +273 -0
  57. package/dist/client/chunks/chart-bubble-BmQkVk4K.js.map +1 -0
  58. package/dist/client/chunks/chart-candlestick-C3Rep469.js +306 -0
  59. package/dist/client/chunks/chart-candlestick-C3Rep469.js.map +1 -0
  60. package/dist/client/chunks/chart-config-activity-grid-USo7JrPh.js +51 -0
  61. package/dist/client/chunks/chart-config-activity-grid-USo7JrPh.js.map +1 -0
  62. package/dist/client/chunks/chart-config-area-D_ZufYzg.js +93 -0
  63. package/dist/client/chunks/chart-config-area-D_ZufYzg.js.map +1 -0
  64. package/dist/client/chunks/chart-config-bar-BCi2Wmd6.js +87 -0
  65. package/dist/client/chunks/chart-config-bar-BCi2Wmd6.js.map +1 -0
  66. package/dist/client/chunks/chart-config-box-plot-afKLzJSp.js +35 -0
  67. package/dist/client/chunks/chart-config-box-plot-afKLzJSp.js.map +1 -0
  68. package/dist/client/chunks/chart-config-bubble-CgbBjPv8.js +82 -0
  69. package/dist/client/chunks/chart-config-bubble-CgbBjPv8.js.map +1 -0
  70. package/dist/client/chunks/chart-config-candlestick-7boGjZ-A.js +72 -0
  71. package/dist/client/chunks/chart-config-candlestick-7boGjZ-A.js.map +1 -0
  72. package/dist/client/chunks/chart-config-data-table-Cl7sBasW.js +30 -0
  73. package/dist/client/chunks/chart-config-data-table-Cl7sBasW.js.map +1 -0
  74. package/dist/client/chunks/chart-config-funnel-CXPYQtTl.js +93 -0
  75. package/dist/client/chunks/chart-config-funnel-CXPYQtTl.js.map +1 -0
  76. package/dist/client/chunks/chart-config-gauge-DUNEUCvh.js +64 -0
  77. package/dist/client/chunks/chart-config-gauge-DUNEUCvh.js.map +1 -0
  78. package/dist/client/chunks/chart-config-heat-map-BFf1tO11.js +91 -0
  79. package/dist/client/chunks/chart-config-heat-map-BFf1tO11.js.map +1 -0
  80. package/dist/client/chunks/chart-config-kpi-delta-C5k2waIJ.js +94 -0
  81. package/dist/client/chunks/chart-config-kpi-delta-C5k2waIJ.js.map +1 -0
  82. package/dist/client/chunks/chart-config-kpi-number-DptOyhk0.js +75 -0
  83. package/dist/client/chunks/chart-config-kpi-number-DptOyhk0.js.map +1 -0
  84. package/dist/client/chunks/chart-config-kpi-text-D9DdVWqd.js +47 -0
  85. package/dist/client/chunks/chart-config-kpi-text-D9DdVWqd.js.map +1 -0
  86. package/dist/client/chunks/chart-config-line-B3NgLF7K.js +104 -0
  87. package/dist/client/chunks/chart-config-line-B3NgLF7K.js.map +1 -0
  88. package/dist/client/chunks/chart-config-markdown-tlfivQTt.js +117 -0
  89. package/dist/client/chunks/chart-config-markdown-tlfivQTt.js.map +1 -0
  90. package/dist/client/chunks/chart-config-measure-profile-D7XDwrU2.js +82 -0
  91. package/dist/client/chunks/chart-config-measure-profile-D7XDwrU2.js.map +1 -0
  92. package/dist/client/chunks/chart-config-pie-wY0B52PC.js +68 -0
  93. package/dist/client/chunks/chart-config-pie-wY0B52PC.js.map +1 -0
  94. package/dist/client/chunks/chart-config-radar-DRpJBy1M.js +49 -0
  95. package/dist/client/chunks/chart-config-radar-DRpJBy1M.js.map +1 -0
  96. package/dist/client/chunks/chart-config-radial-bar-DCUpXv9G.js +38 -0
  97. package/dist/client/chunks/chart-config-radial-bar-DCUpXv9G.js.map +1 -0
  98. package/dist/client/chunks/chart-config-sankey-CdOhlm4h.js +66 -0
  99. package/dist/client/chunks/chart-config-sankey-CdOhlm4h.js.map +1 -0
  100. package/dist/client/chunks/chart-config-scatter-B2su_x8f.js +61 -0
  101. package/dist/client/chunks/chart-config-scatter-B2su_x8f.js.map +1 -0
  102. package/dist/client/chunks/chart-config-sunburst-BPdjbk18.js +45 -0
  103. package/dist/client/chunks/chart-config-sunburst-BPdjbk18.js.map +1 -0
  104. package/dist/client/chunks/chart-config-tree-map-Cbsh2fe2.js +51 -0
  105. package/dist/client/chunks/chart-config-tree-map-Cbsh2fe2.js.map +1 -0
  106. package/dist/client/chunks/chart-config-waterfall-DGmuZfQF.js +59 -0
  107. package/dist/client/chunks/chart-config-waterfall-DGmuZfQF.js.map +1 -0
  108. package/dist/client/chunks/chart-data-table-DehW1C1G.js +4088 -0
  109. package/dist/client/chunks/chart-data-table-DehW1C1G.js.map +1 -0
  110. package/dist/client/chunks/chart-funnel-BjkpnG5g.js +447 -0
  111. package/dist/client/chunks/chart-funnel-BjkpnG5g.js.map +1 -0
  112. package/dist/client/chunks/chart-gauge-BWW_HEfg.js +424 -0
  113. package/dist/client/chunks/chart-gauge-BWW_HEfg.js.map +1 -0
  114. package/dist/client/chunks/chart-heat-map-BWuOuDcm.js +236 -0
  115. package/dist/client/chunks/chart-heat-map-BWuOuDcm.js.map +1 -0
  116. package/dist/client/chunks/chart-kpi-delta-D5OHtDJx.js +343 -0
  117. package/dist/client/chunks/chart-kpi-delta-D5OHtDJx.js.map +1 -0
  118. package/dist/client/chunks/chart-kpi-number-C9zH-aKC.js +326 -0
  119. package/dist/client/chunks/chart-kpi-number-C9zH-aKC.js.map +1 -0
  120. package/dist/client/chunks/chart-kpi-text-ChVn3S7j.js +149 -0
  121. package/dist/client/chunks/chart-kpi-text-ChVn3S7j.js.map +1 -0
  122. package/dist/client/chunks/chart-line-DOIMkP0b.js +431 -0
  123. package/dist/client/chunks/chart-line-DOIMkP0b.js.map +1 -0
  124. package/dist/client/chunks/chart-markdown-DXxc43w1.js +3457 -0
  125. package/dist/client/chunks/chart-markdown-DXxc43w1.js.map +1 -0
  126. package/dist/client/chunks/chart-measure-profile-C6wrr9il.js +179 -0
  127. package/dist/client/chunks/chart-measure-profile-C6wrr9il.js.map +1 -0
  128. package/dist/client/chunks/chart-pie-BU_FgwDc.js +172 -0
  129. package/dist/client/chunks/chart-pie-BU_FgwDc.js.map +1 -0
  130. package/dist/client/chunks/chart-radar-DlufwnAX.js +154 -0
  131. package/dist/client/chunks/chart-radar-DlufwnAX.js.map +1 -0
  132. package/dist/client/chunks/chart-radial-bar-B5vS_Aw5.js +148 -0
  133. package/dist/client/chunks/chart-radial-bar-B5vS_Aw5.js.map +1 -0
  134. package/dist/client/chunks/chart-sankey-FChb26UX.js +222 -0
  135. package/dist/client/chunks/chart-sankey-FChb26UX.js.map +1 -0
  136. package/dist/client/chunks/chart-scatter-DW0cAZ2H.js +255 -0
  137. package/dist/client/chunks/chart-scatter-DW0cAZ2H.js.map +1 -0
  138. package/dist/client/chunks/chart-sunburst-Clf-6WxW.js +221 -0
  139. package/dist/client/chunks/chart-sunburst-Clf-6WxW.js.map +1 -0
  140. package/dist/client/chunks/chart-tree-map-p_VwUJPF.js +298 -0
  141. package/dist/client/chunks/chart-tree-map-p_VwUJPF.js.map +1 -0
  142. package/dist/client/chunks/chart-waterfall-jt44IQ-w.js +237 -0
  143. package/dist/client/chunks/chart-waterfall-jt44IQ-w.js.map +1 -0
  144. package/dist/client/chunks/charts-core-CUVzf4cV.js +215 -0
  145. package/dist/client/chunks/charts-core-CUVzf4cV.js.map +1 -0
  146. package/dist/client/chunks/charts-loader-AGpph8_I.js +259 -0
  147. package/dist/client/chunks/charts-loader-AGpph8_I.js.map +1 -0
  148. package/dist/client/chunks/core-D1TOj17W.js +845 -0
  149. package/dist/client/chunks/core-D1TOj17W.js.map +1 -0
  150. package/dist/client/chunks/dist-DDBeV_JI.js +847 -0
  151. package/dist/client/chunks/dist-DDBeV_JI.js.map +1 -0
  152. package/dist/client/chunks/javascript-BBwTSo6e.js +438 -0
  153. package/dist/client/chunks/javascript-BBwTSo6e.js.map +1 -0
  154. package/dist/client/chunks/json-BpTrLZSh.js +38 -0
  155. package/dist/client/chunks/json-BpTrLZSh.js.map +1 -0
  156. package/dist/client/chunks/lazyChartConfigRegistry-BjhxDaSf.js +149 -0
  157. package/dist/client/chunks/lazyChartConfigRegistry-BjhxDaSf.js.map +1 -0
  158. package/dist/client/chunks/providers-DX3Vw5kc.js +7 -0
  159. package/dist/client/chunks/providers-DX3Vw5kc.js.map +1 -0
  160. package/dist/client/chunks/retention-UEXlSdZ-.js +132 -0
  161. package/dist/client/chunks/retention-UEXlSdZ-.js.map +1 -0
  162. package/dist/client/chunks/rolldown-runtime-lc2dmIiU.js +20 -0
  163. package/dist/client/chunks/schema-visualization-ZugB4Io9.js +1073 -0
  164. package/dist/client/chunks/schema-visualization-ZugB4Io9.js.map +1 -0
  165. package/dist/client/chunks/sql-B0chxcEK.js +120 -0
  166. package/dist/client/chunks/sql-B0chxcEK.js.map +1 -0
  167. package/dist/client/chunks/syntaxHighlighting-87bOwTxj.js +30 -0
  168. package/dist/client/chunks/syntaxHighlighting-87bOwTxj.js.map +1 -0
  169. package/dist/client/chunks/useDebounce-BQjNWndQ.js +1394 -0
  170. package/dist/client/chunks/useDebounce-BQjNWndQ.js.map +1 -0
  171. package/dist/client/chunks/useDirtyStateTracking-CgKZWkel.js +66 -0
  172. package/dist/client/chunks/useDirtyStateTracking-CgKZWkel.js.map +1 -0
  173. package/dist/client/chunks/useExplainAI-c_bHxZe5.js +203 -0
  174. package/dist/client/chunks/useExplainAI-c_bHxZe5.js.map +1 -0
  175. package/dist/client/chunks/useNotebookLayout-BFZ_33Kb.js +37 -0
  176. package/dist/client/chunks/useNotebookLayout-BFZ_33Kb.js.map +1 -0
  177. package/dist/client/chunks/utils-A54Ny29G.js +128 -0
  178. package/dist/client/chunks/utils-A54Ny29G.js.map +1 -0
  179. package/dist/client/chunks/vendor-CoPBRumI.js +828 -0
  180. package/dist/client/chunks/vendor-CoPBRumI.js.map +1 -0
  181. package/dist/client/components.js +4 -18
  182. package/dist/client/hooks.js +6 -58
  183. package/dist/client/icons.js +2 -15
  184. package/dist/client/index.js +1061 -1295
  185. package/dist/client/index.js.map +1 -1
  186. package/dist/client/providers.js +3 -9
  187. package/dist/client/styles.css +2 -1
  188. package/dist/client/types.d.ts +1 -0
  189. package/dist/client/utils.js +7 -74
  190. package/dist/client-bundle-stats.html +1 -1
  191. package/dist/server/anthropic-BsNspi1r.js +140 -0
  192. package/dist/server/anthropic-DsCEX6Fm.cjs +1 -0
  193. package/dist/server/dist-CMWZC51B.js +581 -0
  194. package/dist/server/dist-DxegvyZF.cjs +2 -0
  195. package/dist/server/google-BXwMolCu.js +154 -0
  196. package/dist/server/google-DzQWXFwF.cjs +2 -0
  197. package/dist/server/index.cjs +109 -127
  198. package/dist/server/index.d.ts +13 -4
  199. package/dist/server/index.js +15089 -34349
  200. package/dist/server/openai-BPhmb8mi.js +4114 -0
  201. package/dist/server/openai-CLsoLaue.cjs +1 -0
  202. package/dist/server/openai-D1kZ5sdM.js +153 -0
  203. package/dist/server/openai-DkOKbVLC.cjs +16 -0
  204. package/package.json +5 -5
  205. package/dist/adapters/anthropic-BTkjgFpT.cjs +0 -1
  206. package/dist/adapters/anthropic-CTu9E801.js +0 -126
  207. package/dist/adapters/google-BAK9pnQf.cjs +0 -2
  208. package/dist/adapters/google-DficVAsJ.js +0 -146
  209. package/dist/adapters/handler-BV2_dul8.js +0 -2713
  210. package/dist/adapters/handler-LMRPeTNJ.cjs +0 -39
  211. package/dist/adapters/index-BgCeQBuN.cjs +0 -2
  212. package/dist/adapters/index-C3PskWTr.js +0 -5353
  213. package/dist/adapters/index-C45_meK_.js +0 -719
  214. package/dist/adapters/index-ht4NPca9.cjs +0 -23
  215. package/dist/adapters/mcp-transport-B6ZudTSk.js +0 -11010
  216. package/dist/adapters/mcp-transport-DCiSGtp1.cjs +0 -257
  217. package/dist/adapters/openai-BvA6eLs8.cjs +0 -1
  218. package/dist/adapters/openai-mcE24du8.js +0 -131
  219. package/dist/client/charts.js.map +0 -1
  220. package/dist/client/chunks/RetentionCombinedChart--SnU4Y_I.js +0 -256
  221. package/dist/client/chunks/RetentionCombinedChart--SnU4Y_I.js.map +0 -1
  222. package/dist/client/chunks/RetentionCombinedChart.config-Bbp2ghim.js +0 -48
  223. package/dist/client/chunks/RetentionCombinedChart.config-Bbp2ghim.js.map +0 -1
  224. package/dist/client/chunks/RetentionHeatmap-BHYU8MXY.js +0 -178
  225. package/dist/client/chunks/RetentionHeatmap-BHYU8MXY.js.map +0 -1
  226. package/dist/client/chunks/RetentionHeatmap.config-BWf_-vdj.js +0 -29
  227. package/dist/client/chunks/RetentionHeatmap.config-BWf_-vdj.js.map +0 -1
  228. package/dist/client/chunks/analysis-builder-DMFoAkjT.js +0 -6203
  229. package/dist/client/chunks/analysis-builder-DMFoAkjT.js.map +0 -1
  230. package/dist/client/chunks/analysis-builder-shared-CunrT3gi.js +0 -3140
  231. package/dist/client/chunks/analysis-builder-shared-CunrT3gi.js.map +0 -1
  232. package/dist/client/chunks/chart-activity-grid-DCznpK6N.js +0 -347
  233. package/dist/client/chunks/chart-activity-grid-DCznpK6N.js.map +0 -1
  234. package/dist/client/chunks/chart-area-CqKRIUpj.js +0 -234
  235. package/dist/client/chunks/chart-area-CqKRIUpj.js.map +0 -1
  236. package/dist/client/chunks/chart-bar-Bl5jvrU_.js +0 -267
  237. package/dist/client/chunks/chart-bar-Bl5jvrU_.js.map +0 -1
  238. package/dist/client/chunks/chart-box-plot-CzMb00z_.js +0 -322
  239. package/dist/client/chunks/chart-box-plot-CzMb00z_.js.map +0 -1
  240. package/dist/client/chunks/chart-bubble-BF8Z52eW.js +0 -249
  241. package/dist/client/chunks/chart-bubble-BF8Z52eW.js.map +0 -1
  242. package/dist/client/chunks/chart-candlestick-ByWS945g.js +0 -269
  243. package/dist/client/chunks/chart-candlestick-ByWS945g.js.map +0 -1
  244. package/dist/client/chunks/chart-config-activity-grid-CmOqDuOT.js +0 -50
  245. package/dist/client/chunks/chart-config-activity-grid-CmOqDuOT.js.map +0 -1
  246. package/dist/client/chunks/chart-config-area-CK_GVApT.js +0 -77
  247. package/dist/client/chunks/chart-config-area-CK_GVApT.js.map +0 -1
  248. package/dist/client/chunks/chart-config-bar-C8uzktxl.js +0 -71
  249. package/dist/client/chunks/chart-config-bar-C8uzktxl.js.map +0 -1
  250. package/dist/client/chunks/chart-config-box-plot-D_E_SSc2.js +0 -38
  251. package/dist/client/chunks/chart-config-box-plot-D_E_SSc2.js.map +0 -1
  252. package/dist/client/chunks/chart-config-bubble-q3DoQX5F.js +0 -71
  253. package/dist/client/chunks/chart-config-bubble-q3DoQX5F.js.map +0 -1
  254. package/dist/client/chunks/chart-config-candlestick-CRCpD43-.js +0 -70
  255. package/dist/client/chunks/chart-config-candlestick-CRCpD43-.js.map +0 -1
  256. package/dist/client/chunks/chart-config-data-table-B20Y5JCm.js +0 -28
  257. package/dist/client/chunks/chart-config-data-table-B20Y5JCm.js.map +0 -1
  258. package/dist/client/chunks/chart-config-funnel-3eYnGg8M.js +0 -92
  259. package/dist/client/chunks/chart-config-funnel-3eYnGg8M.js.map +0 -1
  260. package/dist/client/chunks/chart-config-gauge-CQx9w3d4.js +0 -64
  261. package/dist/client/chunks/chart-config-gauge-CQx9w3d4.js.map +0 -1
  262. package/dist/client/chunks/chart-config-heat-map-_wEnTnRA.js +0 -77
  263. package/dist/client/chunks/chart-config-heat-map-_wEnTnRA.js.map +0 -1
  264. package/dist/client/chunks/chart-config-kpi-delta-DLGZ2A3X.js +0 -97
  265. package/dist/client/chunks/chart-config-kpi-delta-DLGZ2A3X.js.map +0 -1
  266. package/dist/client/chunks/chart-config-kpi-number-K-wzviXF.js +0 -75
  267. package/dist/client/chunks/chart-config-kpi-number-K-wzviXF.js.map +0 -1
  268. package/dist/client/chunks/chart-config-kpi-text-BjYqwqaJ.js +0 -47
  269. package/dist/client/chunks/chart-config-kpi-text-BjYqwqaJ.js.map +0 -1
  270. package/dist/client/chunks/chart-config-line-JNagi9tf.js +0 -88
  271. package/dist/client/chunks/chart-config-line-JNagi9tf.js.map +0 -1
  272. package/dist/client/chunks/chart-config-markdown-BWQSjJpy.js +0 -97
  273. package/dist/client/chunks/chart-config-markdown-BWQSjJpy.js.map +0 -1
  274. package/dist/client/chunks/chart-config-measure-profile-ZYaMrtws.js +0 -70
  275. package/dist/client/chunks/chart-config-measure-profile-ZYaMrtws.js.map +0 -1
  276. package/dist/client/chunks/chart-config-pie-CNLXb-fr.js +0 -39
  277. package/dist/client/chunks/chart-config-pie-CNLXb-fr.js.map +0 -1
  278. package/dist/client/chunks/chart-config-radar-oxHfRAa3.js +0 -44
  279. package/dist/client/chunks/chart-config-radar-oxHfRAa3.js.map +0 -1
  280. package/dist/client/chunks/chart-config-radial-bar-_Aw3jAEm.js +0 -37
  281. package/dist/client/chunks/chart-config-radial-bar-_Aw3jAEm.js.map +0 -1
  282. package/dist/client/chunks/chart-config-sankey-C8FX9hGF.js +0 -61
  283. package/dist/client/chunks/chart-config-sankey-C8FX9hGF.js.map +0 -1
  284. package/dist/client/chunks/chart-config-scatter-DFKM80eO.js +0 -53
  285. package/dist/client/chunks/chart-config-scatter-DFKM80eO.js.map +0 -1
  286. package/dist/client/chunks/chart-config-sunburst-BmC0NLTU.js +0 -50
  287. package/dist/client/chunks/chart-config-sunburst-BmC0NLTU.js.map +0 -1
  288. package/dist/client/chunks/chart-config-tree-map-DGMbNTaa.js +0 -47
  289. package/dist/client/chunks/chart-config-tree-map-DGMbNTaa.js.map +0 -1
  290. package/dist/client/chunks/chart-config-waterfall-DTyXV_fo.js +0 -60
  291. package/dist/client/chunks/chart-config-waterfall-DTyXV_fo.js.map +0 -1
  292. package/dist/client/chunks/chart-data-table-HwfF-Ujv.js +0 -293
  293. package/dist/client/chunks/chart-data-table-HwfF-Ujv.js.map +0 -1
  294. package/dist/client/chunks/chart-funnel-WmuoWlCq.js +0 -259
  295. package/dist/client/chunks/chart-funnel-WmuoWlCq.js.map +0 -1
  296. package/dist/client/chunks/chart-gauge-Cot4By-w.js +0 -374
  297. package/dist/client/chunks/chart-gauge-Cot4By-w.js.map +0 -1
  298. package/dist/client/chunks/chart-heat-map-bGNtsZMr.js +0 -231
  299. package/dist/client/chunks/chart-heat-map-bGNtsZMr.js.map +0 -1
  300. package/dist/client/chunks/chart-kpi-delta-DeyKMxgq.js +0 -351
  301. package/dist/client/chunks/chart-kpi-delta-DeyKMxgq.js.map +0 -1
  302. package/dist/client/chunks/chart-kpi-number-D1z1gxXO.js +0 -476
  303. package/dist/client/chunks/chart-kpi-number-D1z1gxXO.js.map +0 -1
  304. package/dist/client/chunks/chart-kpi-text-b7q6KWc0.js +0 -165
  305. package/dist/client/chunks/chart-kpi-text-b7q6KWc0.js.map +0 -1
  306. package/dist/client/chunks/chart-line-3Nf-EPqJ.js +0 -450
  307. package/dist/client/chunks/chart-line-3Nf-EPqJ.js.map +0 -1
  308. package/dist/client/chunks/chart-markdown-BT_-MBq1.js +0 -2721
  309. package/dist/client/chunks/chart-markdown-BT_-MBq1.js.map +0 -1
  310. package/dist/client/chunks/chart-measure-profile-BVjUonqU.js +0 -114
  311. package/dist/client/chunks/chart-measure-profile-BVjUonqU.js.map +0 -1
  312. package/dist/client/chunks/chart-pie-DblG6w7g.js +0 -137
  313. package/dist/client/chunks/chart-pie-DblG6w7g.js.map +0 -1
  314. package/dist/client/chunks/chart-radar-BHZbeeTg.js +0 -129
  315. package/dist/client/chunks/chart-radar-BHZbeeTg.js.map +0 -1
  316. package/dist/client/chunks/chart-radial-bar-AlEJC1Jo.js +0 -119
  317. package/dist/client/chunks/chart-radial-bar-AlEJC1Jo.js.map +0 -1
  318. package/dist/client/chunks/chart-sankey-E8vYKjQF.js +0 -189
  319. package/dist/client/chunks/chart-sankey-E8vYKjQF.js.map +0 -1
  320. package/dist/client/chunks/chart-scatter-Bbxqi0iw.js +0 -202
  321. package/dist/client/chunks/chart-scatter-Bbxqi0iw.js.map +0 -1
  322. package/dist/client/chunks/chart-sunburst-BgnTKolT.js +0 -188
  323. package/dist/client/chunks/chart-sunburst-BgnTKolT.js.map +0 -1
  324. package/dist/client/chunks/chart-tree-map-i9LGCLwl.js +0 -284
  325. package/dist/client/chunks/chart-tree-map-i9LGCLwl.js.map +0 -1
  326. package/dist/client/chunks/chart-waterfall-BeIhCm83.js +0 -191
  327. package/dist/client/chunks/chart-waterfall-BeIhCm83.js.map +0 -1
  328. package/dist/client/chunks/charts-core-BUUO36OM.js +0 -692
  329. package/dist/client/chunks/charts-core-BUUO36OM.js.map +0 -1
  330. package/dist/client/chunks/charts-loader-goTYnavu.js +0 -258
  331. package/dist/client/chunks/charts-loader-goTYnavu.js.map +0 -1
  332. package/dist/client/chunks/components-BFgYvFq6.js +0 -10066
  333. package/dist/client/chunks/components-BFgYvFq6.js.map +0 -1
  334. package/dist/client/chunks/core-Y9e-sNfb.js +0 -1068
  335. package/dist/client/chunks/core-Y9e-sNfb.js.map +0 -1
  336. package/dist/client/chunks/flow-utils-CjQZG5qq.js +0 -16
  337. package/dist/client/chunks/flow-utils-CjQZG5qq.js.map +0 -1
  338. package/dist/client/chunks/funnel-utils-CyonoNeC.js +0 -135
  339. package/dist/client/chunks/funnel-utils-CyonoNeC.js.map +0 -1
  340. package/dist/client/chunks/icons-CwvgmdIP.js +0 -1636
  341. package/dist/client/chunks/icons-CwvgmdIP.js.map +0 -1
  342. package/dist/client/chunks/index-CApFCBF9.js +0 -81
  343. package/dist/client/chunks/index-CApFCBF9.js.map +0 -1
  344. package/dist/client/chunks/index-_2PSgbkC.js +0 -1046
  345. package/dist/client/chunks/index-_2PSgbkC.js.map +0 -1
  346. package/dist/client/chunks/javascript-DII1YQGr.js +0 -659
  347. package/dist/client/chunks/javascript-DII1YQGr.js.map +0 -1
  348. package/dist/client/chunks/json-C_6Prymp.js +0 -39
  349. package/dist/client/chunks/json-C_6Prymp.js.map +0 -1
  350. package/dist/client/chunks/providers-Ds7DRmnO.js +0 -554
  351. package/dist/client/chunks/providers-Ds7DRmnO.js.map +0 -1
  352. package/dist/client/chunks/retention-CzCo8262.js +0 -120
  353. package/dist/client/chunks/retention-CzCo8262.js.map +0 -1
  354. package/dist/client/chunks/schema-visualization-B97a1Ybu.js +0 -772
  355. package/dist/client/chunks/schema-visualization-B97a1Ybu.js.map +0 -1
  356. package/dist/client/chunks/sql-IeKX8fQ8.js +0 -616
  357. package/dist/client/chunks/sql-IeKX8fQ8.js.map +0 -1
  358. package/dist/client/chunks/syntaxHighlighting-DAMSW_A6.js +0 -34
  359. package/dist/client/chunks/syntaxHighlighting-DAMSW_A6.js.map +0 -1
  360. package/dist/client/chunks/theme-Dp3hFed1.js +0 -112
  361. package/dist/client/chunks/theme-Dp3hFed1.js.map +0 -1
  362. package/dist/client/chunks/useDirtyStateTracking-CyAXd07d.js +0 -1231
  363. package/dist/client/chunks/useDirtyStateTracking-CyAXd07d.js.map +0 -1
  364. package/dist/client/chunks/useExplainAI-CfQ_JmF1.js +0 -182
  365. package/dist/client/chunks/useExplainAI-CfQ_JmF1.js.map +0 -1
  366. package/dist/client/chunks/vendor-B2EH3V58.js +0 -2892
  367. package/dist/client/chunks/vendor-B2EH3V58.js.map +0 -1
  368. package/dist/client/components.js.map +0 -1
  369. package/dist/client/hooks.js.map +0 -1
  370. package/dist/client/icons.js.map +0 -1
  371. package/dist/client/providers.js.map +0 -1
  372. package/dist/client/utils.js.map +0 -1
  373. package/dist/server/anthropic-BTkjgFpT.cjs +0 -1
  374. package/dist/server/anthropic-CTu9E801.js +0 -126
  375. package/dist/server/google-BAK9pnQf.cjs +0 -2
  376. package/dist/server/google-DficVAsJ.js +0 -146
  377. package/dist/server/index-BgCeQBuN.cjs +0 -2
  378. package/dist/server/index-C3PskWTr.js +0 -5353
  379. package/dist/server/index-C45_meK_.js +0 -719
  380. package/dist/server/index-ht4NPca9.cjs +0 -23
  381. package/dist/server/openai-BvA6eLs8.cjs +0 -1
  382. package/dist/server/openai-mcE24du8.js +0 -131
@@ -0,0 +1,236 @@
1
+ import { n as e } from "./rolldown-runtime-lc2dmIiU.js";
2
+ import { S as t, x as n, y as r } from "./chart-activity-grid-CNES9VBk.js";
3
+ import i, { useMemo as a } from "react";
4
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
5
+ import { ResponsiveHeatMap as c } from "@nivo/heatmap";
6
+ //#region src/client/components/charts/HeatMapChart.tsx
7
+ var l = /* @__PURE__ */ e({ default: () => g });
8
+ function u(e) {
9
+ if (e.startsWith("#")) {
10
+ let t = e.slice(1);
11
+ return {
12
+ r: parseInt(t.substring(0, 2), 16),
13
+ g: parseInt(t.substring(2, 4), 16),
14
+ b: parseInt(t.substring(4, 6), 16)
15
+ };
16
+ }
17
+ let t = e.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/);
18
+ return t ? {
19
+ r: parseInt(t[1], 10),
20
+ g: parseInt(t[2], 10),
21
+ b: parseInt(t[3], 10)
22
+ } : null;
23
+ }
24
+ function d(e) {
25
+ let t = u(e);
26
+ if (!t) return .5;
27
+ let n = t.r / 255, r = t.g / 255, i = t.b / 255, a = n <= .03928 ? n / 12.92 : ((n + .055) / 1.055) ** 2.4, o = r <= .03928 ? r / 12.92 : ((r + .055) / 1.055) ** 2.4, s = i <= .03928 ? i / 12.92 : ((i + .055) / 1.055) ** 2.4;
28
+ return .2126 * a + .7152 * o + .0722 * s;
29
+ }
30
+ function f(e) {
31
+ return d(e) < .4 ? "#ffffff" : "#1f2937";
32
+ }
33
+ var p = 50, m = 50;
34
+ function h(e, t, r, i, a, o) {
35
+ if (!t || !r || !i) return {
36
+ data: [],
37
+ truncated: !1,
38
+ originalRows: 0,
39
+ originalCols: 0
40
+ };
41
+ let s = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Map();
42
+ for (let u of e) {
43
+ let e = u[r], d = u[t], f = n(e, o) || String(e ?? "(empty)"), p = n(d, a) || String(d ?? "(empty)"), m = Number(u[i]) || 0;
44
+ c.add(p), l.has(p) || l.set(p, d), s.has(f) || s.set(f, /* @__PURE__ */ new Map()), s.get(f).set(p, m);
45
+ }
46
+ let u = Array.from(c).sort((e, t) => {
47
+ let n = l.get(e), r = l.get(t);
48
+ return typeof n == "string" && typeof r == "string" && n.match(/^\d{4}-\d{2}-\d{2}/) && r.match(/^\d{4}-\d{2}-\d{2}/) ? n.localeCompare(r) : e.localeCompare(t);
49
+ }), d = s.size, f = u.length, h = d > p || f > m, g = u.slice(0, m), _ = [], v = 0;
50
+ for (let [e, t] of s) {
51
+ if (v >= p) break;
52
+ _.push({
53
+ id: e,
54
+ data: g.map((e) => ({
55
+ x: e,
56
+ y: t.get(e) ?? null
57
+ }))
58
+ }), v++;
59
+ }
60
+ return {
61
+ data: _,
62
+ truncated: h,
63
+ originalRows: d,
64
+ originalCols: f
65
+ };
66
+ }
67
+ var g = i.memo(function({ data: e, height: n = "100%", chartConfig: i, colorPalette: l, displayConfig: u, queryObject: d }) {
68
+ let g = u, _ = g?.showLabels ?? !1, v = g?.cellShape ?? "rect", y = g?.showLegend ?? !0, b = g?.xAxisFormat, x = g?.yAxisFormat, S = g?.valueFormat, C = i?.xAxis ? Array.isArray(i.xAxis) ? i.xAxis[0] : i.xAxis : void 0, w = i?.yAxis ? Array.isArray(i.yAxis) ? i.yAxis[0] : i.yAxis : void 0, T = i?.valueField ? Array.isArray(i.valueField) ? i.valueField[0] : i.valueField : void 0, E = C ? t(d, C) : void 0, D = w ? t(d, w) : void 0, { data: O, truncated: k, originalRows: A, originalCols: j } = a(() => !e || e.length === 0 ? {
69
+ data: [],
70
+ truncated: !1,
71
+ originalRows: 0,
72
+ originalCols: 0
73
+ } : h(e, C, w, T, E, D), [
74
+ e,
75
+ C,
76
+ w,
77
+ T,
78
+ E,
79
+ D
80
+ ]);
81
+ if (!e || e.length === 0) return /* @__PURE__ */ o("div", {
82
+ className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted",
83
+ style: { height: n },
84
+ children: /* @__PURE__ */ s("div", {
85
+ className: "dc:text-center",
86
+ children: [/* @__PURE__ */ o("div", {
87
+ className: "dc:text-sm dc:font-semibold dc:mb-1",
88
+ children: "No data available"
89
+ }), /* @__PURE__ */ o("div", {
90
+ className: "dc:text-xs text-dc-text-secondary",
91
+ children: "Run a query to see heatmap visualization"
92
+ })]
93
+ })
94
+ });
95
+ if (!C || !w || !T) return /* @__PURE__ */ o("div", {
96
+ className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted",
97
+ style: { height: n },
98
+ children: /* @__PURE__ */ s("div", {
99
+ className: "dc:text-center",
100
+ children: [/* @__PURE__ */ o("div", {
101
+ className: "dc:text-sm dc:font-semibold dc:mb-1",
102
+ children: "Configuration required"
103
+ }), /* @__PURE__ */ s("div", {
104
+ className: "dc:text-xs text-dc-text-secondary",
105
+ children: [
106
+ !C && "X-axis dimension required. ",
107
+ !w && "Y-axis dimension required. ",
108
+ !T && "Value measure required."
109
+ ]
110
+ })]
111
+ })
112
+ });
113
+ if (O.length === 0) return /* @__PURE__ */ o("div", {
114
+ className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted",
115
+ style: { height: n },
116
+ children: /* @__PURE__ */ s("div", {
117
+ className: "dc:text-center",
118
+ children: [/* @__PURE__ */ o("div", {
119
+ className: "dc:text-sm dc:font-semibold dc:mb-1",
120
+ children: "No data to display"
121
+ }), /* @__PURE__ */ o("div", {
122
+ className: "dc:text-xs text-dc-text-secondary",
123
+ children: "The query returned no results for the heatmap"
124
+ })]
125
+ })
126
+ });
127
+ let M = l?.gradient || [
128
+ "#eff3ff",
129
+ "#c6dbef",
130
+ "#9ecae1",
131
+ "#6baed6",
132
+ "#3182bd",
133
+ "#08519c"
134
+ ];
135
+ return /* @__PURE__ */ s("div", {
136
+ className: "dc:relative dc:w-full dc:h-full",
137
+ style: { height: n },
138
+ children: [k && /* @__PURE__ */ s("div", {
139
+ className: "dc:absolute dc:top-0 dc:left-0 dc:right-0 dc:z-10 dc:px-3 dc:py-1.5 dc:text-xs bg-dc-warning-bg text-dc-warning dc:border-b border-dc-border",
140
+ children: [
141
+ "Data truncated to ",
142
+ p,
143
+ "x",
144
+ m,
145
+ " cells (original: ",
146
+ A,
147
+ "x",
148
+ j,
149
+ "). Add filters to reduce dimensions."
150
+ ]
151
+ }), /* @__PURE__ */ o(c, {
152
+ data: O,
153
+ margin: {
154
+ top: k ? 40 : 20,
155
+ right: 20,
156
+ bottom: 120,
157
+ left: 120
158
+ },
159
+ valueFormat: S ? (e) => r(e, S) : ">-.2s",
160
+ axisTop: null,
161
+ axisRight: null,
162
+ axisBottom: {
163
+ tickSize: 5,
164
+ tickPadding: 5,
165
+ tickRotation: -45,
166
+ legend: b?.label || C?.split(".").pop() || "X Axis",
167
+ legendPosition: "middle",
168
+ legendOffset: 70,
169
+ format: b ? (e) => {
170
+ let t = parseFloat(String(e));
171
+ return isNaN(t) ? String(e) : r(t, b);
172
+ } : void 0
173
+ },
174
+ axisLeft: {
175
+ tickSize: 5,
176
+ tickPadding: 5,
177
+ tickRotation: 0,
178
+ legend: x?.label || w?.split(".").pop() || "Y Axis",
179
+ legendPosition: "middle",
180
+ legendOffset: -80,
181
+ format: x ? (e) => {
182
+ let t = parseFloat(String(e));
183
+ return isNaN(t) ? String(e) : r(t, x);
184
+ } : void 0
185
+ },
186
+ colors: M.length >= 2 ? {
187
+ type: "sequential",
188
+ colors: [M[0], M[M.length - 1]]
189
+ } : {
190
+ type: "sequential",
191
+ scheme: "greens"
192
+ },
193
+ emptyColor: "var(--dc-surface-tertiary)",
194
+ cellComponent: v === "circle" ? "circle" : "rect",
195
+ enableLabels: _,
196
+ labelTextColor: ({ color: e }) => f(e),
197
+ legends: y ? [{
198
+ anchor: "bottom",
199
+ translateX: 0,
200
+ translateY: 95,
201
+ length: 400,
202
+ thickness: 8,
203
+ direction: "row",
204
+ tickPosition: "after",
205
+ tickSize: 3,
206
+ tickSpacing: 4,
207
+ tickOverlap: !1,
208
+ title: T?.split(".").pop() || "Value",
209
+ titleAlign: "start",
210
+ titleOffset: 4
211
+ }] : [],
212
+ annotations: [],
213
+ theme: {
214
+ text: { fill: "var(--dc-text)" },
215
+ axis: {
216
+ legend: { text: { fill: "var(--dc-text)" } },
217
+ ticks: { text: { fill: "var(--dc-text-secondary)" } }
218
+ },
219
+ legends: {
220
+ text: { fill: "var(--dc-text-secondary)" },
221
+ title: { text: { fill: "var(--dc-text)" } }
222
+ },
223
+ tooltip: { container: {
224
+ background: "var(--dc-surface)",
225
+ color: "var(--dc-text)",
226
+ borderRadius: "4px",
227
+ boxShadow: "0 1px 2px rgba(0, 0, 0, 0.25)"
228
+ } }
229
+ }
230
+ })]
231
+ });
232
+ });
233
+ //#endregion
234
+ export { l as t };
235
+
236
+ //# sourceMappingURL=chart-heat-map-BWuOuDcm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-heat-map-BWuOuDcm.js","names":[],"sources":["../../../src/client/components/charts/HeatMapChart.tsx"],"sourcesContent":["/**\n * HeatMapChart Component\n *\n * Visualizes intensity across two categorical dimensions using a color matrix.\n * Uses @nivo/heatmap for rendering.\n *\n * The chart displays:\n * - Rows: Y-axis dimension values\n * - Columns: X-axis dimension values\n * - Cell color: Intensity based on measure value\n */\n\nimport React, { useMemo } from 'react'\nimport { ResponsiveHeatMap } from '@nivo/heatmap'\nimport { formatTimeValue, getFieldGranularity, formatAxisValue } from '../../utils/chartUtils'\nimport type { AxisFormatConfig } from '../../types'\nimport type { ChartProps } from '../../types'\n\n/**\n * Parse color string (hex or rgb) to RGB values\n */\nfunction parseColor(color: string): { r: number; g: number; b: number } | null {\n // Handle hex colors\n if (color.startsWith('#')) {\n const hex = color.slice(1)\n return {\n r: parseInt(hex.substring(0, 2), 16),\n g: parseInt(hex.substring(2, 4), 16),\n b: parseInt(hex.substring(4, 6), 16),\n }\n }\n\n // Handle rgb/rgba colors\n const rgbMatch = color.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)/)\n if (rgbMatch) {\n return {\n r: parseInt(rgbMatch[1], 10),\n g: parseInt(rgbMatch[2], 10),\n b: parseInt(rgbMatch[3], 10),\n }\n }\n\n return null\n}\n\n/**\n * Calculate relative luminance of a color\n * Returns value between 0 (black) and 1 (white)\n */\nfunction getLuminance(color: string): number {\n const rgb = parseColor(color)\n if (!rgb) return 0.5 // Default to mid-gray if parsing fails\n\n const r = rgb.r / 255\n const g = rgb.g / 255\n const b = rgb.b / 255\n\n // Apply gamma correction\n const rLinear = r <= 0.03928 ? r / 12.92 : Math.pow((r + 0.055) / 1.055, 2.4)\n const gLinear = g <= 0.03928 ? g / 12.92 : Math.pow((g + 0.055) / 1.055, 2.4)\n const bLinear = b <= 0.03928 ? b / 12.92 : Math.pow((b + 0.055) / 1.055, 2.4)\n\n // Calculate luminance using WCAG formula\n return 0.2126 * rLinear + 0.7152 * gLinear + 0.0722 * bLinear\n}\n\n/**\n * Get contrasting text color (white or dark) based on background color\n */\nfunction getContrastingTextColor(bgColor: string): string {\n const luminance = getLuminance(bgColor)\n // Use white text on dark backgrounds, dark text on light backgrounds\n return luminance < 0.4 ? '#ffffff' : '#1f2937'\n}\n\n/**\n * Maximum dimensions for heatmap to prevent browser lockup\n * 50x50 = 2500 cells max\n */\nconst MAX_HEATMAP_ROWS = 50\nconst MAX_HEATMAP_COLS = 50\n\n/**\n * Nivo heatmap data format\n */\ninterface HeatMapDatum {\n x: string\n y: number | null\n}\n\ninterface HeatMapSerie {\n id: string\n data: HeatMapDatum[]\n}\n\n/**\n * Result of heatmap transformation including truncation info\n */\ninterface HeatMapTransformResult {\n data: HeatMapSerie[]\n truncated: boolean\n originalRows: number\n originalCols: number\n}\n\n/**\n * Transform drizzle-cube flat query results to nivo heatmap format\n *\n * Input (drizzle-cube):\n * [\n * { \"Region.name\": \"East\", \"Product.category\": \"Electronics\", \"Sales.total\": 1500 },\n * { \"Region.name\": \"East\", \"Product.category\": \"Clothing\", \"Sales.total\": 800 },\n * ]\n *\n * Output (nivo format):\n * [\n * { id: \"East\", data: [{ x: \"Electronics\", y: 1500 }, { x: \"Clothing\", y: 800 }] }\n * ]\n *\n * Data is truncated to MAX_HEATMAP_ROWS x MAX_HEATMAP_COLS to prevent browser lockup\n */\nfunction transformToHeatMapFormat(\n data: Record<string, unknown>[],\n xAxisField: string | undefined,\n yAxisField: string | undefined,\n valueField: string | undefined,\n xGranularity?: string,\n yGranularity?: string\n): HeatMapTransformResult {\n if (!xAxisField || !yAxisField || !valueField) {\n return { data: [], truncated: false, originalRows: 0, originalCols: 0 }\n }\n\n // Group data by Y-axis dimension\n const groupedByY = new Map<string, Map<string, number>>()\n const allXValues = new Set<string>()\n // Keep original values for sorting timestamps correctly\n const xValueOriginals = new Map<string, unknown>()\n\n for (const row of data) {\n const rawYValue = row[yAxisField]\n const rawXValue = row[xAxisField]\n\n // Format time values based on granularity\n const yValue = formatTimeValue(rawYValue, yGranularity) || String(rawYValue ?? '(empty)')\n const xValue = formatTimeValue(rawXValue, xGranularity) || String(rawXValue ?? '(empty)')\n const value = Number(row[valueField]) || 0\n\n allXValues.add(xValue)\n // Store original for sorting\n if (!xValueOriginals.has(xValue)) {\n xValueOriginals.set(xValue, rawXValue)\n }\n\n if (!groupedByY.has(yValue)) {\n groupedByY.set(yValue, new Map())\n }\n groupedByY.get(yValue)!.set(xValue, value)\n }\n\n // Sort X values - try to sort by original timestamp if available\n const xValueArray = Array.from(allXValues).sort((a, b) => {\n const origA = xValueOriginals.get(a)\n const origB = xValueOriginals.get(b)\n // If both are date strings, sort chronologically\n if (typeof origA === 'string' && typeof origB === 'string' &&\n origA.match(/^\\d{4}-\\d{2}-\\d{2}/) && origB.match(/^\\d{4}-\\d{2}-\\d{2}/)) {\n return origA.localeCompare(origB)\n }\n // Otherwise sort alphabetically by formatted value\n return a.localeCompare(b)\n })\n\n // Track original dimensions for truncation warning\n const originalRows = groupedByY.size\n const originalCols = xValueArray.length\n const truncated = originalRows > MAX_HEATMAP_ROWS || originalCols > MAX_HEATMAP_COLS\n\n // Truncate X values if needed\n const limitedXValues = xValueArray.slice(0, MAX_HEATMAP_COLS)\n\n // Build result with truncation\n const result: HeatMapSerie[] = []\n let rowCount = 0\n for (const [yValue, xMap] of groupedByY) {\n if (rowCount >= MAX_HEATMAP_ROWS) break\n result.push({\n id: yValue,\n data: limitedXValues.map((x) => ({\n x,\n y: xMap.get(x) ?? null,\n })),\n })\n rowCount++\n }\n\n return { data: result, truncated, originalRows, originalCols }\n}\n\n/**\n * HeatMapChart Component\n *\n * Renders a heatmap visualization from query results.\n * Shows intensity patterns across two categorical dimensions.\n */\nconst HeatMapChart = React.memo(function HeatMapChart({\n data,\n height = '100%',\n chartConfig,\n colorPalette,\n displayConfig,\n queryObject,\n}: ChartProps) {\n // Get display config options\n const displayConfigAny = displayConfig as Record<string, unknown> | undefined\n const showLabels = (displayConfigAny?.showLabels as boolean) ?? false\n const cellShape = (displayConfigAny?.cellShape as 'rect' | 'circle') ?? 'rect'\n const showLegend = (displayConfigAny?.showLegend as boolean) ?? true\n const xAxisFormat = displayConfigAny?.xAxisFormat as AxisFormatConfig | undefined\n const yAxisFormat = displayConfigAny?.yAxisFormat as AxisFormatConfig | undefined\n const valueFormat = displayConfigAny?.valueFormat as AxisFormatConfig | undefined\n\n // Extract field names from chartConfig (handle both array and string formats)\n const xAxisField = chartConfig?.xAxis\n ? (Array.isArray(chartConfig.xAxis) ? chartConfig.xAxis[0] : chartConfig.xAxis)\n : undefined\n const yAxisField = chartConfig?.yAxis\n ? (Array.isArray(chartConfig.yAxis) ? chartConfig.yAxis[0] : chartConfig.yAxis)\n : undefined\n const valueField = chartConfig?.valueField\n ? (Array.isArray(chartConfig.valueField) ? chartConfig.valueField[0] : chartConfig.valueField)\n : undefined\n\n // Get granularity for time dimensions (only if field is defined)\n const xGranularity = xAxisField ? getFieldGranularity(queryObject, xAxisField) : undefined\n const yGranularity = yAxisField ? getFieldGranularity(queryObject, yAxisField) : undefined\n\n // Transform data to nivo format\n const { data: heatmapData, truncated, originalRows, originalCols } = useMemo(() => {\n if (!data || data.length === 0) {\n return { data: [], truncated: false, originalRows: 0, originalCols: 0 }\n }\n return transformToHeatMapFormat(\n data as Record<string, unknown>[],\n xAxisField,\n yAxisField,\n valueField,\n xGranularity,\n yGranularity\n )\n }, [data, xAxisField, yAxisField, valueField, xGranularity, yGranularity])\n\n // Handle no data or missing config\n if (!data || data.length === 0) {\n return (\n <div\n className=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted\"\n style={{ height }}\n >\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">No data available</div>\n <div className=\"dc:text-xs text-dc-text-secondary\">\n Run a query to see heatmap visualization\n </div>\n </div>\n </div>\n )\n }\n\n if (!xAxisField || !yAxisField || !valueField) {\n return (\n <div\n className=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted\"\n style={{ height }}\n >\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">Configuration required</div>\n <div className=\"dc:text-xs text-dc-text-secondary\">\n {!xAxisField && 'X-axis dimension required. '}\n {!yAxisField && 'Y-axis dimension required. '}\n {!valueField && 'Value measure required.'}\n </div>\n </div>\n </div>\n )\n }\n\n if (heatmapData.length === 0) {\n return (\n <div\n className=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted\"\n style={{ height }}\n >\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">No data to display</div>\n <div className=\"dc:text-xs text-dc-text-secondary\">\n The query returned no results for the heatmap\n </div>\n </div>\n </div>\n )\n }\n\n // Use gradient colors from palette, or default sequential blue gradient\n // Sequential single-hue gradients are ideal for heatmaps showing magnitude/intensity\n const colors = colorPalette?.gradient || [\n '#eff3ff', // lightest blue\n '#c6dbef',\n '#9ecae1',\n '#6baed6',\n '#3182bd',\n '#08519c', // darkest blue\n ]\n\n return (\n <div className=\"dc:relative dc:w-full dc:h-full\" style={{ height }}>\n {truncated && (\n <div className=\"dc:absolute dc:top-0 dc:left-0 dc:right-0 dc:z-10 dc:px-3 dc:py-1.5 dc:text-xs bg-dc-warning-bg text-dc-warning dc:border-b border-dc-border\">\n Data truncated to {MAX_HEATMAP_ROWS}x{MAX_HEATMAP_COLS} cells (original: {originalRows}x{originalCols}). Add filters to reduce dimensions.\n </div>\n )}\n <ResponsiveHeatMap\n data={heatmapData}\n margin={{ top: truncated ? 40 : 20, right: 20, bottom: 120, left: 120 }}\n valueFormat={valueFormat ? (v) => formatAxisValue(v, valueFormat) : '>-.2s'}\n axisTop={null}\n axisRight={null}\n axisBottom={{\n tickSize: 5,\n tickPadding: 5,\n tickRotation: -45,\n legend: xAxisFormat?.label || xAxisField?.split('.').pop() || 'X Axis',\n legendPosition: 'middle',\n legendOffset: 70,\n format: xAxisFormat\n ? (v) => {\n const num = parseFloat(String(v))\n return isNaN(num) ? String(v) : formatAxisValue(num, xAxisFormat)\n }\n : undefined,\n }}\n axisLeft={{\n tickSize: 5,\n tickPadding: 5,\n tickRotation: 0,\n legend: yAxisFormat?.label || yAxisField?.split('.').pop() || 'Y Axis',\n legendPosition: 'middle',\n legendOffset: -80,\n format: yAxisFormat\n ? (v) => {\n const num = parseFloat(String(v))\n return isNaN(num) ? String(v) : formatAxisValue(num, yAxisFormat)\n }\n : undefined,\n }}\n colors={\n colors.length >= 2\n // Sequential scale needs [minColor, maxColor] tuple\n // Use first color for low values, last color for high values\n ? { type: 'sequential', colors: [colors[0], colors[colors.length - 1]] as [string, string] }\n : { type: 'sequential', scheme: 'greens' } // Fallback to built-in scheme\n }\n emptyColor=\"var(--dc-surface-tertiary)\"\n cellComponent={cellShape === 'circle' ? 'circle' : 'rect'}\n enableLabels={showLabels}\n labelTextColor={({ color }) => getContrastingTextColor(color)}\n legends={\n showLegend\n ? [\n {\n anchor: 'bottom',\n translateX: 0,\n translateY: 95,\n length: 400,\n thickness: 8,\n direction: 'row',\n tickPosition: 'after',\n tickSize: 3,\n tickSpacing: 4,\n tickOverlap: false,\n title: valueField?.split('.').pop() || 'Value',\n titleAlign: 'start',\n titleOffset: 4,\n },\n ]\n : []\n }\n annotations={[]}\n theme={{\n text: {\n fill: 'var(--dc-text)',\n },\n axis: {\n legend: {\n text: {\n fill: 'var(--dc-text)',\n },\n },\n ticks: {\n text: {\n fill: 'var(--dc-text-secondary)',\n },\n },\n },\n legends: {\n text: {\n fill: 'var(--dc-text-secondary)',\n },\n title: {\n text: {\n fill: 'var(--dc-text)',\n },\n },\n },\n tooltip: {\n container: {\n background: 'var(--dc-surface)',\n color: 'var(--dc-text)',\n borderRadius: '4px',\n boxShadow: '0 1px 2px rgba(0, 0, 0, 0.25)',\n },\n },\n }}\n />\n </div>\n )\n})\n\nexport default HeatMapChart\n"],"mappings":"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"}
@@ -0,0 +1,343 @@
1
+ import { n as e } from "./rolldown-runtime-lc2dmIiU.js";
2
+ import { b as t, x as n } from "./chart-data-table-DehW1C1G.js";
3
+ import { _ as r } from "./chart-activity-grid-CNES9VBk.js";
4
+ import i, { useEffect as a, useRef as o, useState as s } from "react";
5
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
6
+ //#region src/client/utils/periodUtils.ts
7
+ function u(e, t) {
8
+ let n = new Date(e);
9
+ switch (t.toLowerCase()) {
10
+ case "day":
11
+ n.setHours(23, 59, 59, 999);
12
+ break;
13
+ case "week": {
14
+ let e = 6 - n.getDay();
15
+ n.setDate(n.getDate() + e), n.setHours(23, 59, 59, 999);
16
+ break;
17
+ }
18
+ case "month":
19
+ n.setMonth(n.getMonth() + 1, 0), n.setHours(23, 59, 59, 999);
20
+ break;
21
+ case "quarter": {
22
+ let e = n.getMonth(), t = Math.floor(e / 3) * 3 + 2;
23
+ n.setMonth(t + 1, 0), n.setHours(23, 59, 59, 999);
24
+ break;
25
+ }
26
+ case "year":
27
+ n.setMonth(11, 31), n.setHours(23, 59, 59, 999);
28
+ break;
29
+ default: n.setHours(23, 59, 59, 999);
30
+ }
31
+ return n;
32
+ }
33
+ function d(e, t, n) {
34
+ if (!e || !t || !n) return !0;
35
+ let r = e[t];
36
+ if (!r) return !0;
37
+ let i = new Date(r);
38
+ return isNaN(i.getTime()) ? !0 : u(i, n) <= /* @__PURE__ */ new Date();
39
+ }
40
+ function f(e, t) {
41
+ if (!e?.timeDimensions || e.timeDimensions.length === 0) return null;
42
+ if (t) {
43
+ let n = e.timeDimensions.find((e) => e.dimension === t || e.dimension?.includes(t) || t?.includes(e.dimension));
44
+ if (n?.granularity) return n.granularity;
45
+ }
46
+ return e.timeDimensions[0]?.granularity || null;
47
+ }
48
+ function p(e, t, n, r, i = !1) {
49
+ let a = {
50
+ filteredData: e,
51
+ excludedIncompletePeriod: !1,
52
+ skippedLastPeriod: !1,
53
+ granularity: null
54
+ };
55
+ if (e.length < 2) return a;
56
+ let o = f(n, t);
57
+ if (i) return {
58
+ filteredData: e.slice(0, -1),
59
+ excludedIncompletePeriod: !1,
60
+ skippedLastPeriod: !0,
61
+ granularity: o
62
+ };
63
+ if (!r || !t || !n?.timeDimensions || n.timeDimensions.length === 0) return {
64
+ ...a,
65
+ granularity: o
66
+ };
67
+ if (!o) return a;
68
+ let s = e[e.length - 1];
69
+ return d(s, t, o) ? {
70
+ ...a,
71
+ granularity: o
72
+ } : {
73
+ filteredData: e.slice(0, -1),
74
+ excludedIncompletePeriod: !0,
75
+ skippedLastPeriod: !1,
76
+ granularity: o
77
+ };
78
+ }
79
+ //#endregion
80
+ //#region src/client/components/charts/KpiDelta.tsx
81
+ var m = /* @__PURE__ */ e({ default: () => g });
82
+ function h({ values: e, lastValue: t, positiveColor: n, negativeColor: r, formatValue: i, width: a, height: o }) {
83
+ let s = Math.max(10, Math.floor(a / 10)), u = e.length > s ? e.slice(-s) : e, d = u.map((e) => e - t), f = Math.min(...d, 0), p = Math.max(...d, 0);
84
+ if (Math.max(Math.abs(f), Math.abs(p)) === 0 || d.length === 0) return /* @__PURE__ */ c("div", {
85
+ className: "dc:flex dc:items-center dc:justify-center bg-dc-bg-secondary dc:rounded-sm dc:border border-dc-border",
86
+ style: {
87
+ width: `${a}px`,
88
+ height: `${o}px`
89
+ },
90
+ children: /* @__PURE__ */ c("span", {
91
+ className: "dc:text-xs text-dc-text-muted",
92
+ children: "No variance data"
93
+ })
94
+ });
95
+ let m = a - (u.length - 1) * 2, h = Math.max(4, m / u.length), g = p - f, _ = g > 0 ? p / g * 100 : 50;
96
+ return /* @__PURE__ */ l("div", {
97
+ className: "dc:flex dc:items-center dc:space-x-2",
98
+ children: [/* @__PURE__ */ l("div", {
99
+ className: "dc:relative",
100
+ style: {
101
+ width: `${a}px`,
102
+ height: `${o}px`
103
+ },
104
+ children: [/* @__PURE__ */ c("div", {
105
+ className: "dc:absolute dc:left-0 dc:right-0",
106
+ style: {
107
+ height: "1px",
108
+ top: `${_}%`,
109
+ backgroundColor: "var(--dc-border)",
110
+ zIndex: 1
111
+ }
112
+ }), d.map((e, t) => {
113
+ let a = Math.abs(e) / g, s = Math.max(2, a * (o - 4)), l = e >= 0, d = t === u.length - 1, f = l ? n : r;
114
+ return /* @__PURE__ */ c("div", {
115
+ className: "dc:absolute rounded-xs",
116
+ style: {
117
+ left: `${t * (h + 2)}px`,
118
+ width: `${h}px`,
119
+ height: `${s}px`,
120
+ backgroundColor: f,
121
+ opacity: d ? 1 : .6,
122
+ ...l ? { bottom: `${100 - _}%` } : { top: `${_}%` },
123
+ zIndex: 2
124
+ },
125
+ title: `${i(u[t])}: ${e >= 0 ? "+" : ""}${i(e)} vs current`
126
+ }, t);
127
+ })]
128
+ }), /* @__PURE__ */ l("div", {
129
+ className: "dc:flex dc:flex-col dc:justify-between dc:text-xs text-dc-text-muted",
130
+ style: { height: `${o}px` },
131
+ children: [/* @__PURE__ */ l("span", { children: ["+", i(p)] }), /* @__PURE__ */ l("span", { children: ["", i(f)] })]
132
+ })]
133
+ });
134
+ }
135
+ var g = i.memo(function({ data: e, chartConfig: i, displayConfig: u = {}, queryObject: d, height: f = "100%", colorPalette: m }) {
136
+ let [g, _] = s(32), [v, y] = s(250), b = o(null), x = o(null), S = r();
137
+ if (a(() => {
138
+ let e = () => {
139
+ if (b.current) {
140
+ let e = b.current.getBoundingClientRect(), t = e.width, n = e.height;
141
+ if (t > 0 && n > 0) {
142
+ let e = t / 4, r = n / 4;
143
+ _(Math.max(28, Math.min(Math.min(e, r), 140))), setTimeout(() => {
144
+ if (x.current) {
145
+ let e = x.current.getBoundingClientRect().width, n = t - 100, r = Math.max(e, Math.min(n, t * .7));
146
+ y(Math.max(100, r));
147
+ }
148
+ }, 10);
149
+ }
150
+ }
151
+ }, t = setTimeout(e, 50), n = new ResizeObserver(() => {
152
+ setTimeout(e, 10);
153
+ });
154
+ return b.current && n.observe(b.current), () => {
155
+ clearTimeout(t), n.disconnect();
156
+ };
157
+ }, [e, i]), !e || e.length === 0) return /* @__PURE__ */ c("div", {
158
+ className: "dc:flex dc:items-center dc:justify-center dc:w-full dc:h-full",
159
+ style: {
160
+ height: f === "100%" ? "100%" : f,
161
+ minHeight: f === "100%" ? "200px" : void 0
162
+ },
163
+ children: /* @__PURE__ */ l("div", {
164
+ className: "dc:text-center text-dc-text-muted",
165
+ children: [/* @__PURE__ */ c("div", {
166
+ className: "dc:text-sm dc:font-semibold dc:mb-1",
167
+ children: "No data available"
168
+ }), /* @__PURE__ */ c("div", {
169
+ className: "dc:text-xs text-dc-text-secondary",
170
+ children: "No data points to display"
171
+ })]
172
+ })
173
+ });
174
+ let C = [], w = [];
175
+ if (i?.yAxis && (C = Array.isArray(i.yAxis) ? i.yAxis : [i.yAxis]), i?.xAxis && (w = Array.isArray(i.xAxis) ? i.xAxis : [i.xAxis]), C.length === 0) return /* @__PURE__ */ c("div", {
176
+ className: "dc:flex dc:items-center dc:justify-center dc:w-full dc:h-full",
177
+ style: {
178
+ height: f === "100%" ? "100%" : f,
179
+ minHeight: f === "100%" ? "200px" : void 0,
180
+ backgroundColor: "var(--dc-danger-bg)",
181
+ color: "var(--dc-danger)",
182
+ borderColor: "var(--dc-danger-border)"
183
+ },
184
+ children: /* @__PURE__ */ l("div", {
185
+ className: "dc:text-center",
186
+ children: [/* @__PURE__ */ c("div", {
187
+ className: "dc:text-sm dc:font-semibold dc:mb-1",
188
+ children: "Configuration Error"
189
+ }), /* @__PURE__ */ c("div", {
190
+ className: "dc:text-xs",
191
+ children: "No measure field configured"
192
+ })]
193
+ })
194
+ });
195
+ let T = C[0], E = w[0], D = [...e];
196
+ E && (D = D.sort((e, t) => {
197
+ let n = e[E], r = t[E];
198
+ return n < r ? -1 : n > r ? 1 : 0;
199
+ }));
200
+ let { useLastCompletePeriod: O = !0, skipLastPeriod: k = !1 } = u, { filteredData: A, excludedIncompletePeriod: j, skippedLastPeriod: M, granularity: N } = p(D, E, d, O, k), P = A.map((e) => e[T]).filter((e) => e != null && !isNaN(Number(e))).map((e) => Number(e));
201
+ if (P.length < 2) return /* @__PURE__ */ c("div", {
202
+ className: "dc:flex dc:items-center dc:justify-center dc:w-full dc:h-full",
203
+ style: {
204
+ height: f === "100%" ? "100%" : f,
205
+ minHeight: f === "100%" ? "200px" : void 0,
206
+ backgroundColor: "var(--dc-warning-bg)",
207
+ color: "var(--dc-warning)",
208
+ borderColor: "var(--dc-warning-border)"
209
+ },
210
+ children: /* @__PURE__ */ l("div", {
211
+ className: "dc:text-center",
212
+ children: [
213
+ /* @__PURE__ */ c("div", {
214
+ className: "dc:text-sm dc:font-semibold dc:mb-1",
215
+ children: "Insufficient Data"
216
+ }),
217
+ /* @__PURE__ */ c("div", {
218
+ className: "dc:text-xs",
219
+ children: "Delta calculation requires at least 2 data points"
220
+ }),
221
+ /* @__PURE__ */ l("div", {
222
+ className: "dc:text-xs",
223
+ children: ["Current data points: ", P.length]
224
+ })
225
+ ]
226
+ })
227
+ });
228
+ let F = P[P.length - 1], I = P[P.length - 2], L = F - I, R = I === 0 ? 0 : L / Math.abs(I) * 100, z = L >= 0, B = (e) => {
229
+ if (u.formatValue) return u.formatValue(e);
230
+ if (e == null) return "—";
231
+ let t = u.decimals ?? 0, n = u.prefix ?? "", r;
232
+ return r = Math.abs(e) >= 1e9 ? (e / 1e9).toFixed(t) + "B" : Math.abs(e) >= 1e6 ? (e / 1e6).toFixed(t) + "M" : Math.abs(e) >= 1e3 ? (e / 1e3).toFixed(t) + "K" : e.toFixed(t), n + r;
233
+ }, V = () => {
234
+ if (u.positiveColorIndex !== void 0 && m?.colors) {
235
+ let e = u.positiveColorIndex;
236
+ if (e >= 0 && e < m.colors.length) return m.colors[e];
237
+ }
238
+ return "#10b981";
239
+ }, H = () => {
240
+ if (u.negativeColorIndex !== void 0 && m?.colors) {
241
+ let e = u.negativeColorIndex;
242
+ if (e >= 0 && e < m.colors.length) return m.colors[e];
243
+ }
244
+ return "#ef4444";
245
+ }, U = V(), W = H(), G = z ? U : W;
246
+ return /* @__PURE__ */ l("div", {
247
+ ref: b,
248
+ className: "dc:flex dc:flex-col dc:items-center dc:justify-center dc:w-full dc:h-full dc:p-4",
249
+ style: {
250
+ height: f === "100%" ? "100%" : f,
251
+ minHeight: f === "100%" ? "200px" : void 0
252
+ },
253
+ children: [
254
+ /* @__PURE__ */ l("div", {
255
+ className: "text-dc-text-secondary dc:font-bold dc:text-center dc:mb-2 dc:flex dc:items-center dc:justify-center dc:gap-1",
256
+ style: {
257
+ fontSize: "14px",
258
+ lineHeight: "1.2"
259
+ },
260
+ children: [/* @__PURE__ */ c("span", { children: (() => {
261
+ let e = S(T);
262
+ return e && e.length > 1 ? e : T;
263
+ })() }), (j || M) && /* @__PURE__ */ c("span", {
264
+ title: M ? `Excludes last ${N || "period"}` : `Excludes current incomplete ${N}`,
265
+ className: "dc:cursor-help",
266
+ children: /* @__PURE__ */ c(n, {
267
+ icon: t,
268
+ className: "dc:w-4 dc:h-4 text-dc-text-muted dc:opacity-70"
269
+ })
270
+ })]
271
+ }),
272
+ /* @__PURE__ */ l("div", {
273
+ className: "dc:flex dc:items-center dc:justify-center dc:space-x-4 dc:mb-2",
274
+ children: [/* @__PURE__ */ c("div", {
275
+ ref: x,
276
+ className: "dc:font-bold dc:leading-none",
277
+ style: {
278
+ fontSize: `${g}px`,
279
+ color: "var(--dc-text)"
280
+ },
281
+ children: B(F)
282
+ }), /* @__PURE__ */ l("div", {
283
+ className: "dc:flex dc:items-center dc:space-x-1",
284
+ children: [/* @__PURE__ */ c("div", {
285
+ className: "dc:font-bold",
286
+ style: {
287
+ color: G,
288
+ fontSize: `${g * .35}px`
289
+ },
290
+ children: z ? "▲" : "▼"
291
+ }), /* @__PURE__ */ l("div", {
292
+ className: "dc:text-left",
293
+ children: [/* @__PURE__ */ l("div", {
294
+ className: "dc:font-bold dc:leading-tight",
295
+ style: {
296
+ fontSize: `${g * .35}px`,
297
+ color: G
298
+ },
299
+ children: [z ? "+" : "", B(L)]
300
+ }), /* @__PURE__ */ l("div", {
301
+ className: "dc:font-semibold dc:leading-tight",
302
+ style: {
303
+ fontSize: `${g * .28}px`,
304
+ color: G,
305
+ opacity: .8
306
+ },
307
+ children: [
308
+ z ? "+" : "",
309
+ R.toFixed(1),
310
+ "%"
311
+ ]
312
+ })]
313
+ })]
314
+ })]
315
+ }),
316
+ u.suffix && !u.formatValue && /* @__PURE__ */ c("div", {
317
+ className: "text-dc-text-muted dc:text-center dc:mb-3",
318
+ style: {
319
+ fontSize: "14px",
320
+ lineHeight: "1.2",
321
+ opacity: .8
322
+ },
323
+ children: u.suffix
324
+ }),
325
+ u.showHistogram !== !1 && P.length > 2 && /* @__PURE__ */ c("div", {
326
+ className: "dc:mt-2 dc:w-full dc:flex dc:justify-center dc:overflow-hidden",
327
+ children: /* @__PURE__ */ c(h, {
328
+ values: P,
329
+ lastValue: F,
330
+ positiveColor: U,
331
+ negativeColor: W,
332
+ formatValue: B,
333
+ width: v,
334
+ height: 64
335
+ })
336
+ })
337
+ ]
338
+ });
339
+ });
340
+ //#endregion
341
+ export { d as a, f as i, p as n, u as r, m as t };
342
+
343
+ //# sourceMappingURL=chart-kpi-delta-D5OHtDJx.js.map