drizzle-cube 0.7.1 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (363) hide show
  1. package/dist/adapters/ActivityGridChart.config-DXUUgx0N.cjs +1 -0
  2. package/dist/adapters/ActivityGridChart.config-Dyozu3VW.js +2 -0
  3. package/dist/adapters/AreaChart.config-Di5odBXp.cjs +1 -0
  4. package/dist/adapters/AreaChart.config-KEaXP_4K.js +2 -0
  5. package/dist/adapters/BarChart.config-B-hBHykR.cjs +1 -0
  6. package/dist/adapters/BarChart.config-C5sqbn0A.js +2 -0
  7. package/dist/adapters/BoxPlotChart.config-B1R4Br7L.js +2 -0
  8. package/dist/adapters/BoxPlotChart.config-C82Fhd3c.cjs +1 -0
  9. package/dist/adapters/BubbleChart.config-CoBxmmfp.js +2 -0
  10. package/dist/adapters/BubbleChart.config-DfOnNjL-.cjs +1 -0
  11. package/dist/adapters/CandlestickChart.config-C5ggV_3j.cjs +1 -0
  12. package/dist/adapters/CandlestickChart.config-ZaJpWVuL.js +2 -0
  13. package/dist/adapters/DataTable.config-Cx2_ACdY.cjs +1 -0
  14. package/dist/adapters/DataTable.config-DkAgD-iz.js +2 -0
  15. package/dist/adapters/FunnelChart.config-CvzcECUB.js +2 -0
  16. package/dist/adapters/FunnelChart.config-DVH7IFnb.cjs +1 -0
  17. package/dist/adapters/GaugeChart.config-Csx8rt8o.cjs +1 -0
  18. package/dist/adapters/GaugeChart.config-DEmrNgMa.js +2 -0
  19. package/dist/adapters/HeatMapChart.config-BfD_dpP7.js +2 -0
  20. package/dist/adapters/HeatMapChart.config-D_jlyPJL.cjs +1 -0
  21. package/dist/adapters/KpiDelta.config-CVBdUL_n.cjs +1 -0
  22. package/dist/adapters/KpiDelta.config-D4dCXOxl.js +2 -0
  23. package/dist/adapters/KpiNumber.config-BK5pgIKz.cjs +1 -0
  24. package/dist/adapters/KpiNumber.config-D6XqjZrm.js +2 -0
  25. package/dist/adapters/KpiText.config-ChphMwG5.js +2 -0
  26. package/dist/adapters/KpiText.config-fO1wc6FH.cjs +1 -0
  27. package/dist/adapters/LineChart.config-CXJrgz1s.js +2 -0
  28. package/dist/adapters/LineChart.config-Cg_h-SiJ.cjs +1 -0
  29. package/dist/adapters/MarkdownChart.config-ByPjX-4O.cjs +1 -0
  30. package/dist/adapters/MarkdownChart.config-Df2yY9AT.js +2 -0
  31. package/dist/adapters/MeasureProfileChart.config-BBWGIteF.cjs +1 -0
  32. package/dist/adapters/MeasureProfileChart.config-C9OFbN9Z.js +2 -0
  33. package/dist/adapters/PieChart.config-C6jJj6xm.js +2 -0
  34. package/dist/adapters/PieChart.config-CmCw_8eN.cjs +1 -0
  35. package/dist/adapters/ProportionBarChart.config-B9NEyFEe.js +2 -0
  36. package/dist/adapters/ProportionBarChart.config-C3GAVPWn.cjs +1 -0
  37. package/dist/adapters/RadarChart.config-5AMwEqUJ.cjs +1 -0
  38. package/dist/adapters/RadarChart.config-Ct_b7IM5.js +2 -0
  39. package/dist/adapters/RadialBarChart.config-Bp-Sl0cm.js +2 -0
  40. package/dist/adapters/RadialBarChart.config-D14yoexI.cjs +1 -0
  41. package/dist/adapters/RecordsTable.config-D2-qmG06.cjs +1 -0
  42. package/dist/adapters/RecordsTable.config-DIwoqZCU.js +2 -0
  43. package/dist/adapters/RetentionCombinedChart.config-BWHipi5M.cjs +1 -0
  44. package/dist/adapters/RetentionCombinedChart.config-D40UgTcl.js +2 -0
  45. package/dist/adapters/RetentionHeatmap.config-GlnSLrjn.js +2 -0
  46. package/dist/adapters/RetentionHeatmap.config-MlhZf26c.cjs +1 -0
  47. package/dist/adapters/SankeyChart.config-Bf1_NHiv.js +2 -0
  48. package/dist/adapters/SankeyChart.config-BoYf6BFE.cjs +1 -0
  49. package/dist/adapters/ScatterChart.config-CV2rdGJp.js +2 -0
  50. package/dist/adapters/ScatterChart.config-DywduGF3.cjs +1 -0
  51. package/dist/adapters/SunburstChart.config-CrqiE1UZ.js +2 -0
  52. package/dist/adapters/SunburstChart.config-D5tbF_GJ.cjs +1 -0
  53. package/dist/adapters/TreeMapChart.config-BJ8HnZU0.cjs +1 -0
  54. package/dist/adapters/TreeMapChart.config-DxgIqIIj.js +2 -0
  55. package/dist/adapters/WaterfallChart.config-Cns8fLFu.js +2 -0
  56. package/dist/adapters/WaterfallChart.config-D_kdL9SN.cjs +1 -0
  57. package/dist/adapters/compiler-BxZHh0UD.cjs +166 -0
  58. package/dist/adapters/{compiler-DiYxWAKg.js → compiler-CBGD_4Et.js} +1389 -1923
  59. package/dist/adapters/core/http-port.d.ts +34 -7
  60. package/dist/adapters/core/index.cjs +1 -1
  61. package/dist/adapters/core/index.d.ts +1 -0
  62. package/dist/adapters/core/index.js +2 -2
  63. package/dist/adapters/core/rest-handlers.d.ts +1 -1
  64. package/dist/adapters/core-CIGuwGuI.cjs +1 -0
  65. package/dist/adapters/{core-BOPRmxPc.js → core-DAAnqPyN.js} +81 -65
  66. package/dist/adapters/express/index.cjs +2 -2
  67. package/dist/adapters/express/index.d.ts +11 -2
  68. package/dist/adapters/express/index.js +14 -14
  69. package/dist/adapters/fastify/index.cjs +2 -2
  70. package/dist/adapters/fastify/index.d.ts +11 -2
  71. package/dist/adapters/fastify/index.js +29 -29
  72. package/dist/{server/google-eKAc20al.js → adapters/google-DRY7jnOh.js} +46 -28
  73. package/dist/adapters/{google-BhvizbFR.cjs → google-PsZzwedr.cjs} +2 -2
  74. package/dist/adapters/handler-BcYTw6zB.cjs +25 -0
  75. package/dist/adapters/{handler-DGud-C-w.js → handler-eA0VJDHj.js} +363 -266
  76. package/dist/adapters/hono/index.cjs +1 -1
  77. package/dist/adapters/hono/index.js +9 -9
  78. package/dist/adapters/mcp-tools-handlers.d.ts +10 -3
  79. package/dist/adapters/mcp-tools.cjs +1 -1
  80. package/dist/adapters/mcp-tools.js +18 -20
  81. package/dist/adapters/mcp-transport-BpG44Fvn.js +730 -0
  82. package/dist/adapters/mcp-transport-CDxZXpc-.cjs +42 -0
  83. package/dist/adapters/mcp-transport.d.ts +13 -2
  84. package/dist/adapters/nextjs/index.cjs +1 -1
  85. package/dist/adapters/nextjs/index.d.ts +5 -2
  86. package/dist/adapters/nextjs/index.js +32 -32
  87. package/dist/adapters/{openai-Crp3X_zg.js → openai-BZ48ioYp.js} +1 -1
  88. package/dist/adapters/{openai-CmdN7Sj1.cjs → openai-Bw1j-OiP.cjs} +1 -1
  89. package/dist/adapters/{openai-Dwt9bxOE.cjs → openai-CLjyL5_J.cjs} +2 -2
  90. package/dist/adapters/{openai-CGJM6Qun.js → openai-CYYjUG_3.js} +4 -4
  91. package/dist/adapters/{utils-DboNUT3A.js → utils-BagURNRb.js} +1963 -1135
  92. package/dist/adapters/utils-BiKIg2tk.cjs +128 -0
  93. package/dist/adapters/utils.cjs +1 -1
  94. package/dist/adapters/utils.d.ts +19 -5
  95. package/dist/adapters/utils.js +1 -1
  96. package/dist/cjs/adapters/core/http-port.d.ts +34 -7
  97. package/dist/cjs/adapters/core/index.d.ts +1 -0
  98. package/dist/cjs/adapters/core/rest-handlers.d.ts +1 -1
  99. package/dist/cjs/adapters/express/index.d.ts +11 -2
  100. package/dist/cjs/adapters/fastify/index.d.ts +11 -2
  101. package/dist/cjs/adapters/mcp-tools-handlers.d.ts +10 -3
  102. package/dist/cjs/adapters/mcp-transport.d.ts +13 -2
  103. package/dist/cjs/adapters/nextjs/index.d.ts +5 -2
  104. package/dist/cjs/adapters/utils.d.ts +19 -5
  105. package/dist/cjs/client/charts/chartConfigRegistry.d.ts +7 -0
  106. package/dist/cjs/client/charts/chartConfigs.d.ts +17 -1
  107. package/dist/cjs/client/client/CubeClient.d.ts +11 -1
  108. package/dist/cjs/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +4 -2
  109. package/dist/cjs/client/components/AnalysisBuilder/ColumnFormatsEditor.d.ts +10 -0
  110. package/dist/cjs/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +3 -2
  111. package/dist/cjs/client/components/AnalysisBuilder/utils/queryUtils.d.ts +7 -1
  112. package/dist/cjs/client/components/analyticsPortlet/PortletChart.d.ts +2 -1
  113. package/dist/cjs/client/components/analyticsPortlet/PortletChartView.d.ts +4 -1
  114. package/dist/cjs/client/components/analyticsPortlet/usePortletDeadMembers.d.ts +24 -0
  115. package/dist/cjs/client/components/analyticsPortlet/usePortletPagination.d.ts +21 -0
  116. package/dist/cjs/client/components/charts/RecordsTable.config.d.ts +10 -0
  117. package/dist/cjs/client/components/charts/RecordsTable.d.ts +4 -0
  118. package/dist/cjs/client/components/charts/recordsTableHooks.d.ts +68 -0
  119. package/dist/cjs/client/icons/types.d.ts +1 -0
  120. package/dist/cjs/client/index.d.ts +2 -2
  121. package/dist/cjs/client/types.d.ts +92 -1
  122. package/dist/cjs/client/utils/recordsTableUtils.d.ts +71 -0
  123. package/dist/cjs/client/utils/rowLinkUtils.d.ts +35 -0
  124. package/dist/cjs/server/adapters/base-adapter.d.ts +46 -0
  125. package/dist/cjs/server/adapters/databend-adapter.d.ts +5 -0
  126. package/dist/cjs/server/adapters/duckdb-adapter.d.ts +5 -0
  127. package/dist/cjs/server/adapters/mysql-adapter.d.ts +14 -0
  128. package/dist/cjs/server/adapters/postgres-adapter.d.ts +15 -0
  129. package/dist/cjs/server/adapters/snowflake-adapter.d.ts +6 -0
  130. package/dist/cjs/server/adapters/sqlite-adapter.d.ts +21 -0
  131. package/dist/cjs/server/agent/chart-validation.d.ts +1 -1
  132. package/dist/cjs/server/ai/chart-schema.d.ts +117 -0
  133. package/dist/cjs/server/ai/discovery-helpers.d.ts +14 -0
  134. package/dist/cjs/server/ai/discovery.d.ts +6 -0
  135. package/dist/cjs/server/ai/query-schema.d.ts +1 -1
  136. package/dist/cjs/server/attribute-dimensions.d.ts +102 -0
  137. package/dist/cjs/server/builders/group-by-builder.d.ts +15 -0
  138. package/dist/cjs/server/cache-utils.d.ts +5 -1
  139. package/dist/cjs/server/compiler-metadata.d.ts +24 -3
  140. package/dist/cjs/server/compiler.d.ts +159 -13
  141. package/dist/cjs/server/execution/query-result-cache.d.ts +1 -1
  142. package/dist/cjs/server/executor.d.ts +15 -0
  143. package/dist/cjs/server/index.d.ts +13 -3
  144. package/dist/cjs/server/query-handlers.d.ts +2 -1
  145. package/dist/cjs/server/query-validator.d.ts +36 -4
  146. package/dist/cjs/server/types/core.d.ts +13 -0
  147. package/dist/cjs/server/types/cube.d.ts +39 -2
  148. package/dist/cjs/server/types/query.d.ts +8 -0
  149. package/dist/cli/index.cjs +130 -52
  150. package/dist/client/charts/chartConfigRegistry.d.ts +7 -0
  151. package/dist/client/charts/chartConfigs.d.ts +17 -1
  152. package/dist/client/charts.js +13 -13
  153. package/dist/client/chunks/{DashboardEditModal-BOfLdTgV.js → DashboardEditModal-_ZDMwaGX.js} +1653 -1188
  154. package/dist/client/chunks/DashboardEditModal-_ZDMwaGX.js.map +1 -0
  155. package/dist/client/chunks/{ProportionBarChart-DwoXU5VP.js → ProportionBarChart-qfpAWhIg.js} +3 -3
  156. package/dist/client/chunks/{ProportionBarChart-DwoXU5VP.js.map → ProportionBarChart-qfpAWhIg.js.map} +1 -1
  157. package/dist/client/chunks/RecordsTable-KmJy94xN.js +556 -0
  158. package/dist/client/chunks/RecordsTable-KmJy94xN.js.map +1 -0
  159. package/dist/client/chunks/{RetentionCombinedChart-BqlSV7yF.js → RetentionCombinedChart-C7X6aj97.js} +3 -3
  160. package/dist/client/chunks/{RetentionCombinedChart-BqlSV7yF.js.map → RetentionCombinedChart-C7X6aj97.js.map} +1 -1
  161. package/dist/client/chunks/{RetentionHeatmap-VdVkBg8Q.js → RetentionHeatmap-PpRpiqR_.js} +2 -2
  162. package/dist/client/chunks/{RetentionHeatmap-VdVkBg8Q.js.map → RetentionHeatmap-PpRpiqR_.js.map} +1 -1
  163. package/dist/client/chunks/{analysis-builder-DXw60SEs.js → analysis-builder-DaqyOjLX.js} +169 -168
  164. package/dist/client/chunks/{analysis-builder-DXw60SEs.js.map → analysis-builder-DaqyOjLX.js.map} +1 -1
  165. package/dist/client/chunks/{analysis-builder-shared-CEvHIlmk.js → analysis-builder-shared-ow9KAHDP.js} +965 -954
  166. package/dist/client/chunks/analysis-builder-shared-ow9KAHDP.js.map +1 -0
  167. package/dist/client/chunks/{chart-activity-grid-4jfS8khG.js → chart-activity-grid-DO82rrbW.js} +140 -84
  168. package/dist/client/chunks/chart-activity-grid-DO82rrbW.js.map +1 -0
  169. package/dist/client/chunks/{chart-area-Dol6s9no.js → chart-area-9SBeG0GM.js} +21 -21
  170. package/dist/client/chunks/{chart-area-Dol6s9no.js.map → chart-area-9SBeG0GM.js.map} +1 -1
  171. package/dist/client/chunks/{chart-bar-5_niozi2.js → chart-bar-tfgmLK2D.js} +5 -5
  172. package/dist/client/chunks/{chart-bar-5_niozi2.js.map → chart-bar-tfgmLK2D.js.map} +1 -1
  173. package/dist/client/chunks/{chart-box-plot-Dhp-VwhD.js → chart-box-plot-BuYW6j6g.js} +2 -2
  174. package/dist/client/chunks/{chart-box-plot-Dhp-VwhD.js.map → chart-box-plot-BuYW6j6g.js.map} +1 -1
  175. package/dist/client/chunks/{chart-bubble-BM2BAMSo.js → chart-bubble-BNmonWqW.js} +2 -2
  176. package/dist/client/chunks/{chart-bubble-BM2BAMSo.js.map → chart-bubble-BNmonWqW.js.map} +1 -1
  177. package/dist/client/chunks/{chart-candlestick-BNwLIBfm.js → chart-candlestick-BYeWNkKl.js} +2 -2
  178. package/dist/client/chunks/{chart-candlestick-BNwLIBfm.js.map → chart-candlestick-BYeWNkKl.js.map} +1 -1
  179. package/dist/client/chunks/{chart-data-table-DoDHQRe7.js → chart-data-table-C_oHiK6N.js} +1094 -1029
  180. package/dist/client/chunks/chart-data-table-C_oHiK6N.js.map +1 -0
  181. package/dist/client/chunks/{chart-funnel-Cd7da_sa.js → chart-funnel-B_CWC3cL.js} +2 -2
  182. package/dist/client/chunks/{chart-funnel-Cd7da_sa.js.map → chart-funnel-B_CWC3cL.js.map} +1 -1
  183. package/dist/client/chunks/{chart-gauge-DOpul-Oz.js → chart-gauge-D7VxwPnx.js} +3 -3
  184. package/dist/client/chunks/{chart-gauge-DOpul-Oz.js.map → chart-gauge-D7VxwPnx.js.map} +1 -1
  185. package/dist/client/chunks/{chart-heat-map-CeKbK655.js → chart-heat-map-q7Vf_dog.js} +3 -3
  186. package/dist/client/chunks/{chart-heat-map-CeKbK655.js.map → chart-heat-map-q7Vf_dog.js.map} +1 -1
  187. package/dist/client/chunks/{chart-kpi-delta-Dq8qUOOT.js → chart-kpi-delta-PEuA3iGs.js} +3 -3
  188. package/dist/client/chunks/{chart-kpi-delta-Dq8qUOOT.js.map → chart-kpi-delta-PEuA3iGs.js.map} +1 -1
  189. package/dist/client/chunks/{chart-kpi-number-DgiqTi9g.js → chart-kpi-number-DlxrO6Pq.js} +5 -5
  190. package/dist/client/chunks/{chart-kpi-number-DgiqTi9g.js.map → chart-kpi-number-DlxrO6Pq.js.map} +1 -1
  191. package/dist/client/chunks/{chart-kpi-text-CsZMVEnM.js → chart-kpi-text-Cx6cJu2s.js} +3 -3
  192. package/dist/client/chunks/{chart-kpi-text-CsZMVEnM.js.map → chart-kpi-text-Cx6cJu2s.js.map} +1 -1
  193. package/dist/client/chunks/{chart-line-DlwOB7C7.js → chart-line-pDe25JzB.js} +3 -3
  194. package/dist/client/chunks/{chart-line-DlwOB7C7.js.map → chart-line-pDe25JzB.js.map} +1 -1
  195. package/dist/client/chunks/{chart-markdown-DPE34SjC.js → chart-markdown-CRY15yp0.js} +2 -2
  196. package/dist/client/chunks/{chart-markdown-DPE34SjC.js.map → chart-markdown-CRY15yp0.js.map} +1 -1
  197. package/dist/client/chunks/{chart-measure-profile-BpTz1fce.js → chart-measure-profile-DyQ-vvuC.js} +3 -3
  198. package/dist/client/chunks/{chart-measure-profile-BpTz1fce.js.map → chart-measure-profile-DyQ-vvuC.js.map} +1 -1
  199. package/dist/client/chunks/{chart-pie-FGw66XAH.js → chart-pie-ZrnBycy1.js} +15 -15
  200. package/dist/client/chunks/{chart-pie-FGw66XAH.js.map → chart-pie-ZrnBycy1.js.map} +1 -1
  201. package/dist/client/chunks/{chart-radar-D-eRDoiA.js → chart-radar-BXbnYMUJ.js} +13 -13
  202. package/dist/client/chunks/{chart-radar-D-eRDoiA.js.map → chart-radar-BXbnYMUJ.js.map} +1 -1
  203. package/dist/client/chunks/{chart-radial-bar-DgtkNTs3.js → chart-radial-bar-CYxH3ryh.js} +3 -3
  204. package/dist/client/chunks/{chart-radial-bar-DgtkNTs3.js.map → chart-radial-bar-CYxH3ryh.js.map} +1 -1
  205. package/dist/client/chunks/{chart-sankey-D0hhb_EQ.js → chart-sankey-C9R_TDDh.js} +2 -2
  206. package/dist/client/chunks/{chart-sankey-D0hhb_EQ.js.map → chart-sankey-C9R_TDDh.js.map} +1 -1
  207. package/dist/client/chunks/{chart-scatter-D9EcAiMQ.js → chart-scatter-DrwRkzzl.js} +3 -3
  208. package/dist/client/chunks/{chart-scatter-D9EcAiMQ.js.map → chart-scatter-DrwRkzzl.js.map} +1 -1
  209. package/dist/client/chunks/{chart-sunburst-DCYmJ5DU.js → chart-sunburst-Bs1yqIPp.js} +3 -3
  210. package/dist/client/chunks/{chart-sunburst-DCYmJ5DU.js.map → chart-sunburst-Bs1yqIPp.js.map} +1 -1
  211. package/dist/client/chunks/{chart-tree-map-D_ACSSiB.js → chart-tree-map-BNjHhhVq.js} +3 -3
  212. package/dist/client/chunks/{chart-tree-map-D_ACSSiB.js.map → chart-tree-map-BNjHhhVq.js.map} +1 -1
  213. package/dist/client/chunks/{chart-waterfall-CVUVNa1R.js → chart-waterfall-CyoC0uLT.js} +3 -3
  214. package/dist/client/chunks/{chart-waterfall-CVUVNa1R.js.map → chart-waterfall-CyoC0uLT.js.map} +1 -1
  215. package/dist/client/chunks/charts-core-DCQ7od_L.js +190 -0
  216. package/dist/client/chunks/charts-core-DCQ7od_L.js.map +1 -0
  217. package/dist/client/chunks/charts-loader-Bya_zDIA.js +86 -0
  218. package/dist/client/chunks/charts-loader-Bya_zDIA.js.map +1 -0
  219. package/dist/client/chunks/{en-US-BE6VoG0o.js → en-US-HP6FHuNy.js} +3 -1
  220. package/dist/client/chunks/{en-US-BE6VoG0o.js.map → en-US-HP6FHuNy.js.map} +1 -1
  221. package/dist/client/chunks/{exceljs.min-DWC_b8G9.js → exceljs.min-CiByP8VQ.js} +2 -3
  222. package/dist/client/chunks/{exceljs.min-DWC_b8G9.js.map → exceljs.min-CiByP8VQ.js.map} +1 -1
  223. package/dist/client/chunks/{nl-NL-DFLVORiD.js → nl-NL-CEdoCz6Q.js} +54 -1
  224. package/dist/client/chunks/nl-NL-CEdoCz6Q.js.map +1 -0
  225. package/dist/client/chunks/{schema-visualization-C6g_LCiA.js → schema-visualization-DfXxFBIY.js} +3 -3
  226. package/dist/client/chunks/{schema-visualization-C6g_LCiA.js.map → schema-visualization-DfXxFBIY.js.map} +1 -1
  227. package/dist/client/chunks/{useDirtyStateTracking-ZfChDEd3.js → useDirtyStateTracking-BFJHiiVK.js} +15 -15
  228. package/dist/client/chunks/{useDirtyStateTracking-ZfChDEd3.js.map → useDirtyStateTracking-BFJHiiVK.js.map} +1 -1
  229. package/dist/client/chunks/{useExplainAI-im9e1rVb.js → useExplainAI-_C4WQE5I.js} +16 -16
  230. package/dist/client/chunks/{useExplainAI-im9e1rVb.js.map → useExplainAI-_C4WQE5I.js.map} +1 -1
  231. package/dist/client/chunks/{vendor-Qa1s8oSX.js → vendor-Gb3lH0cc.js} +49 -49
  232. package/dist/client/chunks/vendor-Gb3lH0cc.js.map +1 -0
  233. package/dist/client/client/CubeClient.d.ts +11 -1
  234. package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +4 -2
  235. package/dist/client/components/AnalysisBuilder/ColumnFormatsEditor.d.ts +10 -0
  236. package/dist/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +3 -2
  237. package/dist/client/components/AnalysisBuilder/utils/queryUtils.d.ts +7 -1
  238. package/dist/client/components/analyticsPortlet/PortletChart.d.ts +2 -1
  239. package/dist/client/components/analyticsPortlet/PortletChartView.d.ts +4 -1
  240. package/dist/client/components/analyticsPortlet/usePortletDeadMembers.d.ts +24 -0
  241. package/dist/client/components/analyticsPortlet/usePortletPagination.d.ts +21 -0
  242. package/dist/client/components/charts/RecordsTable.config.d.ts +10 -0
  243. package/dist/client/components/charts/RecordsTable.d.ts +4 -0
  244. package/dist/client/components/charts/recordsTableHooks.d.ts +68 -0
  245. package/dist/client/components.js +1 -1
  246. package/dist/client/hooks.js +3 -3
  247. package/dist/client/icons/types.d.ts +1 -0
  248. package/dist/client/icons.js +2 -2
  249. package/dist/client/index.d.ts +2 -2
  250. package/dist/client/index.js +213 -213
  251. package/dist/client/providers.js +1 -1
  252. package/dist/client/schema.js +1 -1
  253. package/dist/client/styles.css +1 -1
  254. package/dist/client/types.d.ts +92 -1
  255. package/dist/client/utils/recordsTableUtils.d.ts +71 -0
  256. package/dist/client/utils/rowLinkUtils.d.ts +35 -0
  257. package/dist/client/utils.js +14 -14
  258. package/dist/client-bundle-stats.html +1 -1
  259. package/dist/mcp-app/mcp-app.html +109 -109
  260. package/dist/server/adapters/base-adapter.d.ts +46 -0
  261. package/dist/server/adapters/databend-adapter.d.ts +5 -0
  262. package/dist/server/adapters/duckdb-adapter.d.ts +5 -0
  263. package/dist/server/adapters/mysql-adapter.d.ts +14 -0
  264. package/dist/server/adapters/postgres-adapter.d.ts +15 -0
  265. package/dist/server/adapters/snowflake-adapter.d.ts +6 -0
  266. package/dist/server/adapters/sqlite-adapter.d.ts +21 -0
  267. package/dist/server/agent/chart-validation.d.ts +1 -1
  268. package/dist/server/ai/chart-schema.d.ts +117 -0
  269. package/dist/server/ai/discovery-helpers.d.ts +14 -0
  270. package/dist/server/ai/discovery.d.ts +6 -0
  271. package/dist/server/ai/query-schema.d.ts +1 -1
  272. package/dist/server/attribute-dimensions.d.ts +102 -0
  273. package/dist/server/builders/group-by-builder.d.ts +15 -0
  274. package/dist/server/cache-utils.d.ts +5 -1
  275. package/dist/server/compiler-metadata.d.ts +24 -3
  276. package/dist/server/compiler.d.ts +159 -13
  277. package/dist/server/execution/query-result-cache.d.ts +1 -1
  278. package/dist/server/executor.d.ts +15 -0
  279. package/dist/{adapters/google-eKAc20al.js → server/google-DRY7jnOh.js} +46 -28
  280. package/dist/server/{google-BhvizbFR.cjs → google-PsZzwedr.cjs} +2 -2
  281. package/dist/server/index.cjs +42 -38
  282. package/dist/server/index.d.ts +13 -3
  283. package/dist/server/index.js +2079 -1573
  284. package/dist/server/{openai-Czk1BdHa.js → openai-6uUf7h-5.js} +1 -1
  285. package/dist/server/{openai-DBwI1OSu.cjs → openai-BBe1XbZd.cjs} +1 -1
  286. package/dist/server/{openai-Cu4TXXjl.cjs → openai-BmADmD1e.cjs} +1 -1
  287. package/dist/server/{openai-CUf4vc3Q.js → openai-C1gLuR-0.js} +1 -1
  288. package/dist/server/query-handlers.d.ts +2 -1
  289. package/dist/server/query-validator.d.ts +36 -4
  290. package/dist/server/types/core.d.ts +13 -0
  291. package/dist/server/types/cube.d.ts +39 -2
  292. package/dist/server/types/query.d.ts +8 -0
  293. package/package.json +2 -2
  294. package/dist/adapters/ActivityGridChart.config-D6hhj345.cjs +0 -1
  295. package/dist/adapters/ActivityGridChart.config-QZKs_NYg.js +0 -2
  296. package/dist/adapters/AreaChart.config-B5XM6G22.js +0 -2
  297. package/dist/adapters/AreaChart.config-NP34BH5y.cjs +0 -1
  298. package/dist/adapters/BarChart.config-Bqlmr81N.js +0 -2
  299. package/dist/adapters/BarChart.config-C3bw-cAP.cjs +0 -1
  300. package/dist/adapters/BoxPlotChart.config-BOAvoj6x.cjs +0 -1
  301. package/dist/adapters/BoxPlotChart.config-CTXiycYY.js +0 -2
  302. package/dist/adapters/BubbleChart.config-CGFIkl4H.cjs +0 -1
  303. package/dist/adapters/BubbleChart.config-Njxx4Eq1.js +0 -2
  304. package/dist/adapters/CandlestickChart.config-BZ_yWaSo.cjs +0 -1
  305. package/dist/adapters/CandlestickChart.config-D4Svhmef.js +0 -2
  306. package/dist/adapters/DataTable.config-B-bT9puT.js +0 -2
  307. package/dist/adapters/DataTable.config-BHtt1cPM.cjs +0 -1
  308. package/dist/adapters/FunnelChart.config-C1e07O7B.cjs +0 -1
  309. package/dist/adapters/FunnelChart.config-CVEy0tV9.js +0 -2
  310. package/dist/adapters/GaugeChart.config-5PLNlQlu.js +0 -2
  311. package/dist/adapters/GaugeChart.config-Cdv6knjZ.cjs +0 -1
  312. package/dist/adapters/HeatMapChart.config-MGTfYpWJ.js +0 -2
  313. package/dist/adapters/HeatMapChart.config-jfBEi1ZI.cjs +0 -1
  314. package/dist/adapters/KpiDelta.config-D2IUsEYz.cjs +0 -1
  315. package/dist/adapters/KpiDelta.config-DT_MmAHw.js +0 -2
  316. package/dist/adapters/KpiNumber.config-ChgbKmx8.cjs +0 -1
  317. package/dist/adapters/KpiNumber.config-CvZ_FhyL.js +0 -2
  318. package/dist/adapters/KpiText.config-Bgkw8gr2.js +0 -2
  319. package/dist/adapters/KpiText.config-Bz9orqt6.cjs +0 -1
  320. package/dist/adapters/LineChart.config-BVew35dI.cjs +0 -1
  321. package/dist/adapters/LineChart.config-DSCCKXNg.js +0 -2
  322. package/dist/adapters/MarkdownChart.config-Bu6XUuhI.js +0 -2
  323. package/dist/adapters/MarkdownChart.config-E4aSVTf3.cjs +0 -1
  324. package/dist/adapters/MeasureProfileChart.config-BF249hc_.cjs +0 -1
  325. package/dist/adapters/MeasureProfileChart.config-lERVe38G.js +0 -2
  326. package/dist/adapters/PieChart.config-7Ujwp8R5.cjs +0 -1
  327. package/dist/adapters/PieChart.config-jQl2HIcA.js +0 -2
  328. package/dist/adapters/ProportionBarChart.config-o0w_Pnlt.js +0 -2
  329. package/dist/adapters/ProportionBarChart.config-phNohhhY.cjs +0 -1
  330. package/dist/adapters/RadarChart.config-BmrYBd9x.js +0 -2
  331. package/dist/adapters/RadarChart.config-Dlt3UflG.cjs +0 -1
  332. package/dist/adapters/RadialBarChart.config-CeEm8xRb.cjs +0 -1
  333. package/dist/adapters/RadialBarChart.config-Dishh6bC.js +0 -2
  334. package/dist/adapters/RetentionCombinedChart.config-BaD4ev85.cjs +0 -1
  335. package/dist/adapters/RetentionCombinedChart.config-m2FjBUi9.js +0 -2
  336. package/dist/adapters/RetentionHeatmap.config-DiMplGdk.js +0 -2
  337. package/dist/adapters/RetentionHeatmap.config-Dp6oYwQZ.cjs +0 -1
  338. package/dist/adapters/SankeyChart.config-C4Y6qzCS.cjs +0 -1
  339. package/dist/adapters/SankeyChart.config-CJHqgjQ1.js +0 -2
  340. package/dist/adapters/ScatterChart.config-C0QqvDrN.cjs +0 -1
  341. package/dist/adapters/ScatterChart.config-DywOsWPW.js +0 -2
  342. package/dist/adapters/SunburstChart.config-DE8RxpDR.cjs +0 -1
  343. package/dist/adapters/SunburstChart.config-DohowrO3.js +0 -2
  344. package/dist/adapters/TreeMapChart.config-D2gXz-zC.cjs +0 -1
  345. package/dist/adapters/TreeMapChart.config-HMlI29GG.js +0 -2
  346. package/dist/adapters/WaterfallChart.config-BO2WV2VB.js +0 -2
  347. package/dist/adapters/WaterfallChart.config-CzwGiheB.cjs +0 -1
  348. package/dist/adapters/compiler-BNjqYdmc.cjs +0 -166
  349. package/dist/adapters/core-CzFfrJzu.cjs +0 -1
  350. package/dist/adapters/handler-m6WgA9xu.cjs +0 -25
  351. package/dist/adapters/mcp-transport-B0b27YUB.cjs +0 -40
  352. package/dist/adapters/mcp-transport-BXyA4dTk.js +0 -603
  353. package/dist/adapters/utils-BoOeig94.cjs +0 -128
  354. package/dist/client/chunks/DashboardEditModal-BOfLdTgV.js.map +0 -1
  355. package/dist/client/chunks/analysis-builder-shared-CEvHIlmk.js.map +0 -1
  356. package/dist/client/chunks/chart-activity-grid-4jfS8khG.js.map +0 -1
  357. package/dist/client/chunks/chart-data-table-DoDHQRe7.js.map +0 -1
  358. package/dist/client/chunks/charts-core-BPD_hLaL.js +0 -215
  359. package/dist/client/chunks/charts-core-BPD_hLaL.js.map +0 -1
  360. package/dist/client/chunks/charts-loader-CwMcOfwT.js +0 -85
  361. package/dist/client/chunks/charts-loader-CwMcOfwT.js.map +0 -1
  362. package/dist/client/chunks/nl-NL-DFLVORiD.js.map +0 -1
  363. package/dist/client/chunks/vendor-Qa1s8oSX.js.map +0 -1
@@ -1,5 +1,5 @@
1
- import { P as e, S as t, w as n } from "./chart-activity-grid-4jfS8khG.js";
2
- import { D as r, O as i, k as a, s as o } from "./chart-area-Dol6s9no.js";
1
+ import { F as e, S as t, w as n } from "./chart-activity-grid-DO82rrbW.js";
2
+ import { D as r, O as i, k as a, s as o } from "./chart-area-9SBeG0GM.js";
3
3
  import s, { useMemo as c } from "react";
4
4
  import { jsx as l, jsxs as u } from "react/jsx-runtime";
5
5
  //#region src/client/components/charts/ProportionBarChart.tsx
@@ -106,4 +106,4 @@ var d = s.memo(function({ data: s, chartConfig: d, displayConfig: f = {}, height
106
106
  //#endregion
107
107
  export { d as default };
108
108
 
109
- //# sourceMappingURL=ProportionBarChart-DwoXU5VP.js.map
109
+ //# sourceMappingURL=ProportionBarChart-qfpAWhIg.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProportionBarChart-DwoXU5VP.js","names":[],"sources":["../../../src/client/components/charts/ProportionBarChart.tsx"],"sourcesContent":["import React, { useMemo } from 'react'\nimport { useTranslation } from '../../hooks/useTranslation.js'\nimport { useCubeFieldLabel } from '../../hooks/useCubeFieldLabel.js'\nimport { ChartEmptyState, ChartConfigError, ChartRenderError } from './ChartStates.js'\nimport { getSeriesColor } from './cartesianChartHelpers.js'\nimport { formatAxisValue } from '../../utils/chartUtils.js'\nimport type { ChartProps } from '../../types.js'\n\ninterface Segment {\n /**\n * React key. Category labels are not reliably unique - a query can return\n * duplicates, and every null collapses to the same empty string - so the key\n * is tied to the source row instead. Stable across sorting, which reorders\n * the segments under the same identity.\n */\n id: string\n label: string\n value: number\n share: number\n color: string\n}\n\n/**\n * A single 100%-wide stacked bar plus a labelled percentage legend.\n *\n * A flatter alternative to a pie chart for part-to-whole breakdowns: shares are\n * far easier to compare along one axis than as angles, and it costs a fraction\n * of the vertical space. Deliberately plain HTML rather than Recharts — there is\n * no axis, scale or interaction to justify an SVG chart.\n */\nconst ProportionBarChart = React.memo(function ProportionBarChart({\n data,\n chartConfig,\n displayConfig = {},\n height = '100%',\n colorPalette\n}: ChartProps) {\n const { t } = useTranslation()\n const getFieldLabel = useCubeFieldLabel()\n\n const categoryField = useMemo(() => {\n const x = chartConfig?.xAxis\n return (Array.isArray(x) ? x[0] : x) || ''\n }, [chartConfig?.xAxis])\n\n const valueField = useMemo(() => {\n const y = chartConfig?.yAxis\n return (Array.isArray(y) ? y[0] : y) || ''\n }, [chartConfig?.yAxis])\n\n const sortSegments = displayConfig.sortSegments ?? false\n\n const { segments, total } = useMemo(() => {\n if (!data || !categoryField || !valueField) return { segments: [] as Segment[], total: 0 }\n\n const rows = data\n .map((row: any, sourceIndex: number) => {\n const raw = row?.[valueField]\n const num = typeof raw === 'number' ? raw : parseFloat(String(raw))\n const label = String(row?.[categoryField] ?? '')\n return {\n id: `${sourceIndex}:${label}`,\n label,\n // Negative shares cannot be drawn in a part-to-whole bar.\n value: !isNaN(num) && isFinite(num) && num > 0 ? num : 0\n }\n })\n .filter((row) => row.value > 0)\n\n if (sortSegments) rows.sort((a, b) => b.value - a.value)\n\n const sum = rows.reduce((acc, row) => acc + row.value, 0)\n return {\n total: sum,\n segments: rows.map((row, index) => ({\n ...row,\n share: sum > 0 ? (row.value / sum) * 100 : 0,\n color: getSeriesColor(colorPalette, index)\n }))\n }\n }, [data, categoryField, valueField, colorPalette, sortSegments])\n\n try {\n if (!data || data.length === 0) {\n return <ChartEmptyState height={height} hint={t('chart.runtime.noDataHint.proportionBar')} />\n }\n\n if (!categoryField || !valueField) {\n return <ChartConfigError height={height} hint={t('chart.runtime.configErrorHint.proportionBar')} />\n }\n\n if (segments.length === 0 || total === 0) {\n return (\n <ChartEmptyState\n height={height}\n titleKey=\"chart.runtime.noValidData\"\n hint={t('chart.runtime.noValidDataHint.proportionBar')}\n />\n )\n }\n\n const showLabels = displayConfig.showLabels ?? true\n const showPercentages = displayConfig.showPercentages ?? true\n const decimals = displayConfig.decimals ?? 0\n\n return (\n <div\n className=\"dc:w-full dc:h-full dc:flex dc:flex-col dc:justify-center dc:gap-3 dc:px-3 dc:py-2 dc:overflow-hidden\"\n // Fill the parent rather than the `height` prop, which is a pixel value\n // that can exceed the visible panel and push this short content low.\n style={{ height: '100%', minHeight: '80px' }}\n data-testid=\"proportion-bar\"\n >\n <div className=\"dc:flex dc:w-full dc:overflow-hidden dc:rounded-sm\" style={{ height: 10 }}>\n {segments.map((segment) => (\n <div\n key={segment.id}\n data-testid=\"proportion-bar-segment\"\n title={`${segment.label}: ${formatAxisValue(segment.value, displayConfig.leftYAxisFormat)}`}\n style={{ width: `${segment.share}%`, backgroundColor: segment.color }}\n />\n ))}\n </div>\n\n {(showLabels || showPercentages) && (\n <div className=\"dc:flex dc:flex-wrap dc:gap-x-6 dc:gap-y-2\">\n {segments.map((segment) => (\n <div key={segment.id} className=\"dc:flex dc:flex-col dc:gap-0.5 dc:min-w-0\">\n {showLabels && (\n <span\n className=\"text-dc-text-muted dc:uppercase dc:truncate dc:font-semibold\"\n style={{ fontSize: '11px', letterSpacing: '0.06em' }}\n >\n {segment.label}\n </span>\n )}\n {showPercentages && (\n <span\n className=\"dc:font-semibold dc:leading-none\"\n style={{ fontSize: '18px', color: segment.color }}\n >\n {segment.share.toFixed(decimals)}%\n </span>\n )}\n </div>\n ))}\n </div>\n )}\n </div>\n )\n } catch (error) {\n return <ChartRenderError height={height} chartType={getFieldLabel(valueField)} error={error} />\n }\n})\n\nexport default ProportionBarChart\n"],"mappings":"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"}
1
+ {"version":3,"file":"ProportionBarChart-qfpAWhIg.js","names":[],"sources":["../../../src/client/components/charts/ProportionBarChart.tsx"],"sourcesContent":["import React, { useMemo } from 'react'\nimport { useTranslation } from '../../hooks/useTranslation.js'\nimport { useCubeFieldLabel } from '../../hooks/useCubeFieldLabel.js'\nimport { ChartEmptyState, ChartConfigError, ChartRenderError } from './ChartStates.js'\nimport { getSeriesColor } from './cartesianChartHelpers.js'\nimport { formatAxisValue } from '../../utils/chartUtils.js'\nimport type { ChartProps } from '../../types.js'\n\ninterface Segment {\n /**\n * React key. Category labels are not reliably unique - a query can return\n * duplicates, and every null collapses to the same empty string - so the key\n * is tied to the source row instead. Stable across sorting, which reorders\n * the segments under the same identity.\n */\n id: string\n label: string\n value: number\n share: number\n color: string\n}\n\n/**\n * A single 100%-wide stacked bar plus a labelled percentage legend.\n *\n * A flatter alternative to a pie chart for part-to-whole breakdowns: shares are\n * far easier to compare along one axis than as angles, and it costs a fraction\n * of the vertical space. Deliberately plain HTML rather than Recharts — there is\n * no axis, scale or interaction to justify an SVG chart.\n */\nconst ProportionBarChart = React.memo(function ProportionBarChart({\n data,\n chartConfig,\n displayConfig = {},\n height = '100%',\n colorPalette\n}: ChartProps) {\n const { t } = useTranslation()\n const getFieldLabel = useCubeFieldLabel()\n\n const categoryField = useMemo(() => {\n const x = chartConfig?.xAxis\n return (Array.isArray(x) ? x[0] : x) || ''\n }, [chartConfig?.xAxis])\n\n const valueField = useMemo(() => {\n const y = chartConfig?.yAxis\n return (Array.isArray(y) ? y[0] : y) || ''\n }, [chartConfig?.yAxis])\n\n const sortSegments = displayConfig.sortSegments ?? false\n\n const { segments, total } = useMemo(() => {\n if (!data || !categoryField || !valueField) return { segments: [] as Segment[], total: 0 }\n\n const rows = data\n .map((row: any, sourceIndex: number) => {\n const raw = row?.[valueField]\n const num = typeof raw === 'number' ? raw : parseFloat(String(raw))\n const label = String(row?.[categoryField] ?? '')\n return {\n id: `${sourceIndex}:${label}`,\n label,\n // Negative shares cannot be drawn in a part-to-whole bar.\n value: !isNaN(num) && isFinite(num) && num > 0 ? num : 0\n }\n })\n .filter((row) => row.value > 0)\n\n if (sortSegments) rows.sort((a, b) => b.value - a.value)\n\n const sum = rows.reduce((acc, row) => acc + row.value, 0)\n return {\n total: sum,\n segments: rows.map((row, index) => ({\n ...row,\n share: sum > 0 ? (row.value / sum) * 100 : 0,\n color: getSeriesColor(colorPalette, index)\n }))\n }\n }, [data, categoryField, valueField, colorPalette, sortSegments])\n\n try {\n if (!data || data.length === 0) {\n return <ChartEmptyState height={height} hint={t('chart.runtime.noDataHint.proportionBar')} />\n }\n\n if (!categoryField || !valueField) {\n return <ChartConfigError height={height} hint={t('chart.runtime.configErrorHint.proportionBar')} />\n }\n\n if (segments.length === 0 || total === 0) {\n return (\n <ChartEmptyState\n height={height}\n titleKey=\"chart.runtime.noValidData\"\n hint={t('chart.runtime.noValidDataHint.proportionBar')}\n />\n )\n }\n\n const showLabels = displayConfig.showLabels ?? true\n const showPercentages = displayConfig.showPercentages ?? true\n const decimals = displayConfig.decimals ?? 0\n\n return (\n <div\n className=\"dc:w-full dc:h-full dc:flex dc:flex-col dc:justify-center dc:gap-3 dc:px-3 dc:py-2 dc:overflow-hidden\"\n // Fill the parent rather than the `height` prop, which is a pixel value\n // that can exceed the visible panel and push this short content low.\n style={{ height: '100%', minHeight: '80px' }}\n data-testid=\"proportion-bar\"\n >\n <div className=\"dc:flex dc:w-full dc:overflow-hidden dc:rounded-sm\" style={{ height: 10 }}>\n {segments.map((segment) => (\n <div\n key={segment.id}\n data-testid=\"proportion-bar-segment\"\n title={`${segment.label}: ${formatAxisValue(segment.value, displayConfig.leftYAxisFormat)}`}\n style={{ width: `${segment.share}%`, backgroundColor: segment.color }}\n />\n ))}\n </div>\n\n {(showLabels || showPercentages) && (\n <div className=\"dc:flex dc:flex-wrap dc:gap-x-6 dc:gap-y-2\">\n {segments.map((segment) => (\n <div key={segment.id} className=\"dc:flex dc:flex-col dc:gap-0.5 dc:min-w-0\">\n {showLabels && (\n <span\n className=\"text-dc-text-muted dc:uppercase dc:truncate dc:font-semibold\"\n style={{ fontSize: '11px', letterSpacing: '0.06em' }}\n >\n {segment.label}\n </span>\n )}\n {showPercentages && (\n <span\n className=\"dc:font-semibold dc:leading-none\"\n style={{ fontSize: '18px', color: segment.color }}\n >\n {segment.share.toFixed(decimals)}%\n </span>\n )}\n </div>\n ))}\n </div>\n )}\n </div>\n )\n } catch (error) {\n return <ChartRenderError height={height} chartType={getFieldLabel(valueField)} error={error} />\n }\n})\n\nexport default ProportionBarChart\n"],"mappings":";;;;;AA8BA,IAAM,IAAqB,EAAM,KAAK,SAA4B,EAChE,SACA,gBACA,mBAAgB,CAAC,GACjB,YAAS,QACT,mBACa;CACb,IAAM,EAAE,SAAM,EAAe,GACvB,IAAgB,EAAkB,GAElC,IAAgB,QAAc;EAClC,IAAM,IAAI,GAAa;EACvB,QAAQ,MAAM,QAAQ,CAAC,IAAI,EAAE,KAAK,MAAM;CAC1C,GAAG,CAAC,GAAa,KAAK,CAAC,GAEjB,IAAa,QAAc;EAC/B,IAAM,IAAI,GAAa;EACvB,QAAQ,MAAM,QAAQ,CAAC,IAAI,EAAE,KAAK,MAAM;CAC1C,GAAG,CAAC,GAAa,KAAK,CAAC,GAEjB,IAAe,EAAc,gBAAgB,IAE7C,EAAE,aAAU,aAAU,QAAc;EACxC,IAAI,CAAC,KAAQ,CAAC,KAAiB,CAAC,GAAY,OAAO;GAAE,UAAU,CAAC;GAAgB,OAAO;EAAE;EAEzF,IAAM,IAAO,EACV,KAAK,GAAU,MAAwB;GACtC,IAAM,IAAM,IAAM,IACZ,IAAM,OAAO,KAAQ,WAAW,IAAM,WAAW,OAAO,CAAG,CAAC,GAC5D,IAAQ,OAAO,IAAM,MAAkB,EAAE;GAC/C,OAAO;IACL,IAAI,GAAG,EAAY,GAAG;IACtB;IAEA,OAAO,CAAC,MAAM,CAAG,KAAK,SAAS,CAAG,KAAK,IAAM,IAAI,IAAM;GACzD;EACF,CAAC,CAAC,CACD,QAAQ,MAAQ,EAAI,QAAQ,CAAC;EAEhC,AAAI,KAAc,EAAK,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;EAEvD,IAAM,IAAM,EAAK,QAAQ,GAAK,MAAQ,IAAM,EAAI,OAAO,CAAC;EACxD,OAAO;GACL,OAAO;GACP,UAAU,EAAK,KAAK,GAAK,OAAW;IAClC,GAAG;IACH,OAAO,IAAM,IAAK,EAAI,QAAQ,IAAO,MAAM;IAC3C,OAAO,EAAe,GAAc,CAAK;GAC3C,EAAE;EACJ;CACF,GAAG;EAAC;EAAM;EAAe;EAAY;EAAc;CAAY,CAAC;CAEhE,IAAI;EACF,IAAI,CAAC,KAAQ,EAAK,WAAW,GAC3B,OAAO,kBAAC,GAAD;GAAyB;GAAQ,MAAM,EAAE,wCAAwC;EAAI,CAAA;EAG9F,IAAI,CAAC,KAAiB,CAAC,GACrB,OAAO,kBAAC,GAAD;GAA0B;GAAQ,MAAM,EAAE,6CAA6C;EAAI,CAAA;EAGpG,IAAI,EAAS,WAAW,KAAK,MAAU,GACrC,OACE,kBAAC,GAAD;GACU;GACR,UAAS;GACT,MAAM,EAAE,6CAA6C;EACtD,CAAA;EAIL,IAAM,IAAa,EAAc,cAAc,IACzC,IAAkB,EAAc,mBAAmB,IACnD,IAAW,EAAc,YAAY;EAE3C,OACE,kBAAC,OAAD;GACE,WAAU;GAGV,OAAO;IAAE,QAAQ;IAAQ,WAAW;GAAO;GAC3C,eAAY;GALd,UAAA,CAOE,kBAAC,OAAD;IAAK,WAAU;IAAqD,OAAO,EAAE,QAAQ,GAAG;IACrF,UAAA,EAAS,KAAK,MACb,kBAAC,OAAD;KAEE,eAAY;KACZ,OAAO,GAAG,EAAQ,MAAM,IAAI,EAAgB,EAAQ,OAAO,EAAc,eAAe;KACxF,OAAO;MAAE,OAAO,GAAG,EAAQ,MAAM;MAAI,iBAAiB,EAAQ;KAAM;IACrE,GAJM,EAAQ,EAId,CACF;GACE,CAAA,IAEH,KAAc,MACd,kBAAC,OAAD;IAAK,WAAU;IACZ,UAAA,EAAS,KAAK,MACb,kBAAC,OAAD;KAAsB,WAAU;KAAhC,UAAA,CACG,KACC,kBAAC,QAAD;MACE,WAAU;MACV,OAAO;OAAE,UAAU;OAAQ,eAAe;MAAS;MAElD,UAAA,EAAQ;KACL,CAAA,GAEP,KACC,kBAAC,QAAD;MACE,WAAU;MACV,OAAO;OAAE,UAAU;OAAQ,OAAO,EAAQ;MAAM;MAFlD,UAAA,CAIG,EAAQ,MAAM,QAAQ,CAAQ,GAAE,GAC7B;KAEL,CAAA,CAAA;IAjBK,GAAA,EAAQ,EAiBb,CACN;GACE,CAAA,CAEJ;;CAET,SAAS,GAAO;EACd,OAAO,kBAAC,GAAD;GAA0B;GAAQ,WAAW,EAAc,CAAU;GAAU;EAAQ,CAAA;CAChG;AACF,CAAC"}
@@ -0,0 +1,556 @@
1
+ import { i as e, y as t } from "./chart-data-table-C_oHiK6N.js";
2
+ import { B as n, E as r, F as i, w as a } from "./chart-activity-grid-DO82rrbW.js";
3
+ import { O as o } from "./chart-area-9SBeG0GM.js";
4
+ import s, { useCallback as c, useEffect as l, useMemo as u, useRef as d, useState as f } from "react";
5
+ import { jsx as p, jsxs as m } from "react/jsx-runtime";
6
+ //#region src/client/utils/rowLinkUtils.ts
7
+ var h = /\{([A-Za-z0-9_]+\.[A-Za-z0-9_]+)\}/g, g = /* @__PURE__ */ new Set(["http:", "https:"]);
8
+ function _(e, t, n = y()) {
9
+ if (!e) return null;
10
+ let r = !1, i = e.replace(h, (e, n) => {
11
+ let i = t[n];
12
+ return i == null ? (r = !0, "") : encodeURIComponent(String(i));
13
+ });
14
+ return r ? null : v(i, n) ? i : null;
15
+ }
16
+ function v(e, t = y()) {
17
+ let n = e.trim();
18
+ if (n === "" || /[\u0000-\u001F\u007F]/.test(n) || n.includes("\\") || n.startsWith("//")) return !1;
19
+ try {
20
+ let e = new URL(n, t);
21
+ return !(!g.has(e.protocol) || !/^[A-Za-z][A-Za-z0-9+.-]*:/.test(n) && e.origin !== new URL(t).origin);
22
+ } catch {
23
+ return !1;
24
+ }
25
+ }
26
+ function y() {
27
+ return typeof window < "u" && window.location?.origin ? window.location.origin : "http://localhost";
28
+ }
29
+ //#endregion
30
+ //#region src/client/utils/recordsTableUtils.ts
31
+ var b = "dc-records-table-column-widths", x = "dc-records-table-column-order";
32
+ function S(e) {
33
+ return [...e].sort().join("|");
34
+ }
35
+ function C(e) {
36
+ try {
37
+ let t = localStorage.getItem(b);
38
+ return t ? JSON.parse(t)[e] ?? {} : {};
39
+ } catch {
40
+ return {};
41
+ }
42
+ }
43
+ function w(e, t) {
44
+ try {
45
+ let n = localStorage.getItem(b), r = n ? JSON.parse(n) : {};
46
+ r[e] = t, localStorage.setItem(b, JSON.stringify(r));
47
+ } catch {}
48
+ }
49
+ function T(e) {
50
+ try {
51
+ let t = localStorage.getItem(x);
52
+ if (!t) return [];
53
+ let n = JSON.parse(t)[e];
54
+ return Array.isArray(n) ? n : [];
55
+ } catch {
56
+ return [];
57
+ }
58
+ }
59
+ function E(e, t) {
60
+ try {
61
+ let n = localStorage.getItem(x), r = n ? JSON.parse(n) : {};
62
+ r[e] = t, localStorage.setItem(x, JSON.stringify(r));
63
+ } catch {}
64
+ }
65
+ function D(e, t) {
66
+ if (t.length === 0) return e;
67
+ let n = new Set(e), r = t.filter((e) => n.has(e)), i = e.filter((e) => !r.includes(e));
68
+ return [...r, ...i];
69
+ }
70
+ function O(e, t, n) {
71
+ let r = e.indexOf(t), i = e.indexOf(n);
72
+ if (r === -1 || i === -1 || r === i) return e;
73
+ let a = [...e];
74
+ return a.splice(r, 1), a.splice(i, 0, t), a;
75
+ }
76
+ var k = {
77
+ kind: "text",
78
+ text: ""
79
+ };
80
+ function A(e, t) {
81
+ return W(e) ? k : (j[t?.kind ?? "text"] ?? M)(e, t);
82
+ }
83
+ var j = {
84
+ text: M,
85
+ number: N,
86
+ date: P,
87
+ badge: I,
88
+ progress: R
89
+ };
90
+ function M(e) {
91
+ return {
92
+ kind: "text",
93
+ text: B(e)
94
+ };
95
+ }
96
+ function N(e, t) {
97
+ let n = V(e);
98
+ return n === null ? {
99
+ kind: "text",
100
+ text: String(e)
101
+ } : {
102
+ kind: "text",
103
+ text: a(n, t?.numberFormat ?? {})
104
+ };
105
+ }
106
+ function P(e, t) {
107
+ return {
108
+ kind: "text",
109
+ text: r(e, t?.dateGranularity)
110
+ };
111
+ }
112
+ function F(e) {
113
+ return Array.isArray(e?.badgeColors) ? e.badgeColors.filter((e) => e && typeof e.colorIndex == "number") : [];
114
+ }
115
+ function I(e, t) {
116
+ let n = B(e);
117
+ return {
118
+ kind: "badge",
119
+ text: n,
120
+ colorIndex: F(t)?.find((e) => e.value === n)?.colorIndex
121
+ };
122
+ }
123
+ var L = {
124
+ unit: "number",
125
+ abbreviate: !1,
126
+ decimals: 0
127
+ };
128
+ function R(e, t) {
129
+ let n = V(e);
130
+ return n === null ? {
131
+ kind: "text",
132
+ text: String(e)
133
+ } : {
134
+ kind: "progress",
135
+ fraction: z(n, t),
136
+ style: t?.progressStyle ?? "bar",
137
+ text: a(n, t?.numberFormat ?? L)
138
+ };
139
+ }
140
+ function z(e, t) {
141
+ let n = t?.progressMin ?? 0, r = (t?.progressMax ?? 100) - n;
142
+ return r === 0 ? 1 : H((e - n) / r, 0, 1);
143
+ }
144
+ function B(e) {
145
+ return typeof e == "boolean" ? e ? "true" : "false" : typeof e == "number" ? e.toLocaleString() : e instanceof Date ? e.toISOString() : String(e);
146
+ }
147
+ function V(e) {
148
+ if (typeof e == "number") return Number.isFinite(e) ? e : null;
149
+ if (typeof e == "string" && e.trim() !== "") {
150
+ let t = Number(e);
151
+ return Number.isFinite(t) ? t : null;
152
+ }
153
+ return null;
154
+ }
155
+ function H(e, t, n) {
156
+ return Math.min(n, Math.max(t, e));
157
+ }
158
+ function U(e, t, n) {
159
+ let r = n === "asc" ? 1 : -1;
160
+ return [...e].sort((e, n) => {
161
+ let i = W(e[t]), a = W(n[t]);
162
+ return i || a ? i && a ? 0 : i ? 1 : -1 : r * G(e[t], n[t]);
163
+ });
164
+ }
165
+ function W(e) {
166
+ return e == null || e === "";
167
+ }
168
+ function G(e, t) {
169
+ let n = V(e), r = V(t);
170
+ return n !== null && r !== null ? n - r : String(e).localeCompare(String(t));
171
+ }
172
+ function ee(e) {
173
+ let { rows: t, chartConfig: n, queryObject: r } = e, i = u(() => K(t, n, r), [
174
+ t,
175
+ n,
176
+ r
177
+ ]), a = u(() => S(i), [i]), [o, s] = f([]);
178
+ l(() => {
179
+ s(T(a));
180
+ }, [a]);
181
+ let p = u(() => D(i, o), [i, o]), [m, h] = f(null), g = d(!1), _ = c((e) => {
182
+ g.current = !0, h(e);
183
+ }, []), v = c(() => {
184
+ h(null), requestAnimationFrame(() => {
185
+ g.current = !1;
186
+ });
187
+ }, []);
188
+ return {
189
+ columns: p,
190
+ storageKey: a,
191
+ draggedColumn: m,
192
+ didDragRef: g,
193
+ startColumnDrag: _,
194
+ endColumnDrag: v,
195
+ dropColumn: c((e) => {
196
+ let t = m;
197
+ if (v(), !t || t === e) return;
198
+ let n = O(p, t, e);
199
+ s(n), E(a, n);
200
+ }, [
201
+ p,
202
+ m,
203
+ v,
204
+ a
205
+ ])
206
+ };
207
+ }
208
+ function K(t, n, r) {
209
+ let i = Object.keys(t[0] ?? {}), a = new Set(n?.hiddenColumns ?? []), o = n?.columns?.filter((e) => i.includes(e));
210
+ if (o && o.length > 0) return o.filter((e) => !a.has(e));
211
+ let s = e(r).filter((e) => i.includes(e));
212
+ return (s.length > 0 ? [...s, ...i.filter((e) => !s.includes(e))] : i).filter((e) => !a.has(e));
213
+ }
214
+ function te(e) {
215
+ let { columns: t, storageKey: n, authored: r } = e, [i, a] = f({}), o = d(null), s = d(!1);
216
+ l(() => {
217
+ a({
218
+ ...r ?? {},
219
+ ...C(n)
220
+ });
221
+ }, [n, r]);
222
+ let u = c((e, r) => {
223
+ e.preventDefault(), e.stopPropagation();
224
+ let i = e.clientX;
225
+ s.current = !1;
226
+ let c = {};
227
+ o.current?.querySelectorAll("thead th").forEach((e, n) => {
228
+ let r = t[n];
229
+ r && (c[r] = e.getBoundingClientRect().width);
230
+ });
231
+ let l = c[r] ?? 160, u = c, d = (e) => {
232
+ let t = e.clientX - i;
233
+ Math.abs(t) > 2 && (s.current = !0), u = {
234
+ ...u,
235
+ [r]: Math.max(60, l + t)
236
+ }, a(u);
237
+ }, f = () => {
238
+ document.removeEventListener("mousemove", d), document.removeEventListener("mouseup", f), document.body.style.cursor = "", document.body.style.userSelect = "", w(n, u), requestAnimationFrame(() => {
239
+ s.current = !1;
240
+ });
241
+ };
242
+ document.addEventListener("mousemove", d), document.addEventListener("mouseup", f), document.body.style.cursor = "col-resize", document.body.style.userSelect = "none";
243
+ }, [t, n]);
244
+ return {
245
+ columnWidths: i,
246
+ totalWidth: Object.keys(i).length > 0 ? t.reduce((e, t) => e + (i[t] ?? 160), 0) : void 0,
247
+ tableRef: o,
248
+ didResizeRef: s,
249
+ startResize: u
250
+ };
251
+ }
252
+ function ne(e) {
253
+ let { rows: t, pagination: n, authoredPageSize: r } = e, [i, a] = f(null), [o, s] = f(0), d = !!n, p = n ? n.sort ?? null : i, m = c((e) => {
254
+ if (n) {
255
+ n.toggleSort(e);
256
+ return;
257
+ }
258
+ a((t) => t?.column === e ? t.direction === "asc" ? {
259
+ column: e,
260
+ direction: "desc"
261
+ } : null : {
262
+ column: e,
263
+ direction: "asc"
264
+ });
265
+ }, [n]), h = u(() => !d && i ? U(t, i.column, i.direction) : t, [
266
+ t,
267
+ d,
268
+ i
269
+ ]), g = n?.pageSize ?? r ?? 25, _ = n?.page ?? o, v = d ? n?.total ?? _ * g + h.length : h.length, y = Math.max(1, Math.ceil(v / g)), b = c((e) => {
270
+ n ? n.setPage(e) : s(e);
271
+ }, [n]);
272
+ return l(() => {
273
+ d || s((e) => Math.min(e, y - 1));
274
+ }, [y, d]), {
275
+ sort: p,
276
+ toggleSort: m,
277
+ visibleRows: u(() => d ? h : h.slice(_ * g, _ * g + g), [
278
+ h,
279
+ d,
280
+ _,
281
+ g
282
+ ]),
283
+ page: _,
284
+ pageSize: g,
285
+ pageCount: y,
286
+ rowCount: v,
287
+ goToPage: b,
288
+ showPager: v > g
289
+ };
290
+ }
291
+ //#endregion
292
+ //#region src/client/components/charts/RecordsTable.tsx
293
+ var q = t("chevronUp"), re = t("chevronDown"), ie = s.memo(function({ data: e, chartConfig: t, displayConfig: r = {}, queryObject: a, colorPalette: s, height: l = 300, onDataPointClick: d, drillEnabled: f, pagination: h }) {
294
+ let { t: g } = i(), { getFieldLabel: v } = n(), y = u(() => Array.isArray(e) ? e : [], [e]), b = r.columnFormats ?? {}, { columns: x, storageKey: S, draggedColumn: C, didDragRef: w, startColumnDrag: T, endColumnDrag: E, dropColumn: D } = ee({
295
+ rows: y,
296
+ chartConfig: t,
297
+ queryObject: a
298
+ }), { columnWidths: O, totalWidth: k, tableRef: A, didResizeRef: j, startResize: M } = te({
299
+ columns: x,
300
+ storageKey: S,
301
+ authored: r.columnWidths
302
+ }), { sort: N, toggleSort: P, visibleRows: F, page: I, pageSize: L, pageCount: R, rowCount: z, goToPage: B, showPager: V } = ne({
303
+ rows: y,
304
+ pagination: h,
305
+ authoredPageSize: r.pageSize
306
+ }), H = c((e) => {
307
+ j.current || w.current || P(e);
308
+ }, [
309
+ w,
310
+ j,
311
+ P
312
+ ]), U = r.rowLink, W = !!(!U && f && d), G = c((e, t, n) => {
313
+ W && d?.({
314
+ dataPoint: e,
315
+ clickedField: t,
316
+ xValue: e[t],
317
+ position: {
318
+ x: n.clientX,
319
+ y: n.clientY
320
+ },
321
+ nativeEvent: n
322
+ });
323
+ }, [d, W]);
324
+ if (y.length === 0) return /* @__PURE__ */ p(o, {
325
+ height: l,
326
+ hint: g("chart.runtime.noDataHint.table")
327
+ });
328
+ if (x.length === 0) return /* @__PURE__ */ p(o, {
329
+ height: l,
330
+ titleKey: "chart.runtime.recordsTable.noColumns",
331
+ hint: g("chart.runtime.table.invalidStructure")
332
+ });
333
+ let K = I * L + 1, q = Math.min(z, I * L + F.length);
334
+ return /* @__PURE__ */ m("div", {
335
+ className: "dc:flex dc:flex-col dc:w-full",
336
+ style: { height: l },
337
+ children: [/* @__PURE__ */ p("div", {
338
+ className: "dc:flex-1 dc:overflow-auto",
339
+ children: /* @__PURE__ */ m("table", {
340
+ ref: A,
341
+ className: "dc:border-collapse",
342
+ style: {
343
+ tableLayout: "fixed",
344
+ width: k,
345
+ minWidth: "100%"
346
+ },
347
+ children: [
348
+ /* @__PURE__ */ p("colgroup", { children: x.map((e) => /* @__PURE__ */ p("col", { style: { width: O[e] ?? 160 } }, e)) }),
349
+ /* @__PURE__ */ p("thead", {
350
+ className: "bg-dc-surface-secondary dc:sticky dc:top-0 dc:z-20",
351
+ children: /* @__PURE__ */ p("tr", { children: x.map((e) => /* @__PURE__ */ p(ae, {
352
+ column: e,
353
+ label: b[e]?.label || v(e),
354
+ align: b[e]?.align ?? J(b[e]),
355
+ sortDirection: N?.column === e ? N.direction : void 0,
356
+ isDropTarget: C !== null && C !== e,
357
+ onClick: H,
358
+ onResizeStart: M,
359
+ onDragStart: T,
360
+ onDragEnd: E,
361
+ onDrop: D
362
+ }, e)) })
363
+ }),
364
+ /* @__PURE__ */ p("tbody", {
365
+ className: "bg-dc-surface",
366
+ children: F.map((e, t) => /* @__PURE__ */ p(oe, {
367
+ row: e,
368
+ columns: x,
369
+ columnFormats: b,
370
+ colorPalette: s,
371
+ href: U ? _(U.urlTemplate, e) : null,
372
+ target: U?.target,
373
+ clickable: W,
374
+ onCellClick: G
375
+ }, t))
376
+ })
377
+ ]
378
+ })
379
+ }), V && /* @__PURE__ */ m("div", {
380
+ className: "dc:flex dc:items-center dc:justify-between dc:gap-2 dc:px-3 dc:py-1.5 dc:border-t border-dc-border dc:text-xs text-dc-text-secondary",
381
+ children: [/* @__PURE__ */ p("span", { children: g("chart.runtime.recordsTable.rowRange", {
382
+ from: K,
383
+ to: q,
384
+ total: z
385
+ }) }), /* @__PURE__ */ m("div", {
386
+ className: "dc:flex dc:items-center dc:gap-1",
387
+ children: [
388
+ /* @__PURE__ */ p($, {
389
+ label: g("chart.runtime.recordsTable.previousPage"),
390
+ disabled: I === 0,
391
+ onClick: () => B(Math.max(0, I - 1)),
392
+ children: "‹"
393
+ }),
394
+ /* @__PURE__ */ p("span", { children: g("chart.runtime.recordsTable.pageOf", {
395
+ page: I + 1,
396
+ pages: R
397
+ }) }),
398
+ /* @__PURE__ */ p($, {
399
+ label: g("chart.runtime.recordsTable.nextPage"),
400
+ disabled: I >= R - 1,
401
+ onClick: () => B(Math.min(R - 1, I + 1)),
402
+ children: "›"
403
+ })
404
+ ]
405
+ })]
406
+ })]
407
+ });
408
+ });
409
+ function J(e) {
410
+ return e?.kind === "number" ? "right" : "left";
411
+ }
412
+ function ae({ column: e, label: t, align: n, sortDirection: r, isDropTarget: i, onClick: a, onResizeStart: o, onDragStart: s, onDragEnd: c, onDrop: l }) {
413
+ return /* @__PURE__ */ m("th", {
414
+ draggable: !0,
415
+ onDragStart: (t) => {
416
+ t.dataTransfer.setData("text/plain", e), t.dataTransfer.effectAllowed = "move", s(e);
417
+ },
418
+ onDragOver: (e) => {
419
+ i && e.preventDefault();
420
+ },
421
+ onDrop: (t) => {
422
+ t.preventDefault(), l(e);
423
+ },
424
+ onDragEnd: c,
425
+ onClick: () => a(e),
426
+ className: `dc:relative dc:px-3 dc:py-2 dc:text-xs dc:font-medium text-dc-text-muted dc:uppercase dc:tracking-wider dc:cursor-pointer dc:select-none dc:border-b border-dc-border ${n === "right" ? "dc:text-right" : "dc:text-left"}${i ? " dc:border-l-2 border-dc-accent" : ""}`,
427
+ children: [/* @__PURE__ */ m("div", {
428
+ className: `dc:flex dc:items-center dc:gap-1.5 dc:overflow-hidden${n === "right" ? " dc:justify-end" : ""}`,
429
+ children: [
430
+ /* @__PURE__ */ p("span", {
431
+ className: "dc:truncate",
432
+ children: t
433
+ }),
434
+ r === "asc" && /* @__PURE__ */ p(q, { className: "dc:w-3 dc:h-3 text-dc-accent dc:shrink-0" }),
435
+ r === "desc" && /* @__PURE__ */ p(re, { className: "dc:w-3 dc:h-3 text-dc-accent dc:shrink-0" })
436
+ ]
437
+ }), /* @__PURE__ */ p("div", {
438
+ onMouseDown: (t) => o(t, e),
439
+ className: "dc:absolute dc:top-0 dc:right-0 dc:w-1.5 dc:h-full dc:cursor-col-resize dc:hover:bg-dc-accent dc:opacity-0 dc:hover:opacity-100 dc:transition-opacity dc:z-30"
440
+ })]
441
+ });
442
+ }
443
+ function oe({ row: e, columns: t, columnFormats: n, colorPalette: r, href: i, target: a, clickable: o, onCellClick: s }) {
444
+ return /* @__PURE__ */ p("tr", {
445
+ className: `dc:border-b border-dc-border hover:bg-dc-surface-secondary${o ? " dc:cursor-pointer" : ""}`,
446
+ children: t.map((t) => {
447
+ let o = n[t], c = o?.align ?? J(o);
448
+ return /* @__PURE__ */ p("td", {
449
+ onClick: (n) => s(e, t, n),
450
+ className: `dc:px-3 dc:py-1.5 dc:text-sm text-dc-text dc:overflow-hidden${c === "right" ? " dc:text-right dc:tabular-nums" : ""}`,
451
+ children: /* @__PURE__ */ p(se, {
452
+ cell: A(e[t], o),
453
+ colorPalette: r,
454
+ href: i,
455
+ target: a
456
+ })
457
+ }, t);
458
+ })
459
+ });
460
+ }
461
+ function se({ cell: e, colorPalette: t, href: n, target: r }) {
462
+ let i = /* @__PURE__ */ p(ce, {
463
+ cell: e,
464
+ colorPalette: t
465
+ });
466
+ return n ? /* @__PURE__ */ p("a", {
467
+ href: n,
468
+ target: r === "blank" ? "_blank" : void 0,
469
+ rel: r === "blank" ? "noopener noreferrer" : void 0,
470
+ className: "dc:block dc:no-underline dc:text-inherit hover:dc:underline",
471
+ children: i
472
+ }) : i;
473
+ }
474
+ function ce({ cell: e, colorPalette: t }) {
475
+ if (e.kind === "badge") {
476
+ let n = e.colorIndex === void 0 ? void 0 : t?.colors[e.colorIndex];
477
+ return /* @__PURE__ */ p("span", {
478
+ className: "dc:inline-block dc:px-2 dc:py-0.5 dc:rounded-full dc:text-xs dc:font-medium dc:truncate dc:max-w-full",
479
+ style: n ? {
480
+ backgroundColor: `${n}22`,
481
+ color: n,
482
+ border: `1px solid ${n}55`
483
+ } : {
484
+ backgroundColor: "var(--dc-surface-secondary)",
485
+ color: "var(--dc-text-secondary)",
486
+ border: "1px solid var(--dc-border)"
487
+ },
488
+ children: e.text
489
+ });
490
+ }
491
+ return e.kind === "progress" ? /* @__PURE__ */ m("div", {
492
+ className: "dc:flex dc:items-center dc:gap-2",
493
+ children: [e.style === "circle" ? /* @__PURE__ */ p(le, {
494
+ fraction: e.fraction,
495
+ label: e.text
496
+ }) : /* @__PURE__ */ p("div", {
497
+ className: "dc:flex-1 dc:h-2 dc:rounded-full dc:overflow-hidden dc:border border-dc-border bg-dc-surface-secondary dc:min-w-[2rem]",
498
+ children: /* @__PURE__ */ p("div", {
499
+ className: "dc:h-full dc:rounded-full bg-dc-primary",
500
+ style: { width: `${e.fraction * 100}%` }
501
+ })
502
+ }), /* @__PURE__ */ p("span", {
503
+ className: "dc:w-16 dc:shrink-0 dc:text-right dc:text-xs dc:tabular-nums dc:truncate",
504
+ children: e.text
505
+ })]
506
+ }) : /* @__PURE__ */ p("span", {
507
+ className: "dc:truncate dc:block",
508
+ children: e.text
509
+ });
510
+ }
511
+ var Y = 18, X = 3, Z = Y / 2, Q = Z - X / 2;
512
+ function le({ fraction: e, label: t }) {
513
+ return /* @__PURE__ */ m("svg", {
514
+ role: "img",
515
+ "aria-label": t,
516
+ width: Y,
517
+ height: Y,
518
+ viewBox: `0 0 ${Y} ${Y}`,
519
+ className: "dc:shrink-0",
520
+ children: [/* @__PURE__ */ p("circle", {
521
+ cx: Z,
522
+ cy: Z,
523
+ r: Q,
524
+ fill: "none",
525
+ stroke: "var(--dc-surface-secondary)",
526
+ strokeWidth: X
527
+ }), e > 0 && /* @__PURE__ */ p("circle", {
528
+ cx: Z,
529
+ cy: Z,
530
+ r: Q,
531
+ fill: "none",
532
+ stroke: "var(--dc-primary)",
533
+ strokeWidth: X,
534
+ strokeLinecap: "round",
535
+ pathLength: 100,
536
+ strokeDasharray: 100,
537
+ strokeDashoffset: 100 - e * 100,
538
+ transform: `rotate(-90 ${Z} ${Z})`
539
+ })]
540
+ });
541
+ }
542
+ function $({ label: e, disabled: t, onClick: n, children: r }) {
543
+ return /* @__PURE__ */ p("button", {
544
+ type: "button",
545
+ "aria-label": e,
546
+ title: e,
547
+ disabled: t,
548
+ onClick: n,
549
+ className: "dc:px-2 dc:py-0.5 dc:border border-dc-border dc:rounded-sm bg-dc-surface text-dc-text hover:bg-dc-surface-secondary dc:disabled:opacity-40 dc:disabled:cursor-not-allowed",
550
+ children: r
551
+ });
552
+ }
553
+ //#endregion
554
+ export { ie as default };
555
+
556
+ //# sourceMappingURL=RecordsTable-KmJy94xN.js.map