drizzle-cube 0.5.7 → 0.6.0

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 (541) hide show
  1. package/README.md +2 -0
  2. package/dist/adapters/adapters/hono/agent-handler.d.ts +9 -0
  3. package/dist/adapters/adapters/hono/mcp-handler.d.ts +37 -0
  4. package/dist/adapters/adapters/mcp-tools-handlers.d.ts +18 -0
  5. package/dist/adapters/adapters/nextjs/mcp-handler.d.ts +36 -0
  6. package/dist/adapters/{utils.d.ts → adapters/utils.d.ts} +6 -81
  7. package/dist/adapters/express/index.cjs +1 -1
  8. package/dist/adapters/express/index.js +50 -50
  9. package/dist/adapters/fastify/index.cjs +1 -1
  10. package/dist/adapters/fastify/index.js +78 -78
  11. package/dist/adapters/google-BOnRIN1w.cjs +2 -0
  12. package/dist/{server/google-CFYljAOF.js → adapters/google-CvKM9yVM.js} +83 -71
  13. package/dist/adapters/{handler-Dz1F4iwf.js → handler-CfgE0JSL.js} +515 -578
  14. package/dist/adapters/handler-Cn0dOctE.cjs +25 -0
  15. package/dist/adapters/hono/index.cjs +2 -2
  16. package/dist/adapters/hono/index.js +208 -178
  17. package/dist/adapters/locale-DDvZDFVn.js +8114 -0
  18. package/dist/adapters/locale-ZLUUNUxr.cjs +166 -0
  19. package/dist/adapters/mcp-tools.cjs +1 -1
  20. package/dist/adapters/mcp-tools.js +49 -38
  21. package/dist/adapters/mcp-transport-Chiaj4ll.cjs +40 -0
  22. package/dist/adapters/mcp-transport-H96VG3WY.js +591 -0
  23. package/dist/adapters/nextjs/index.cjs +1 -1
  24. package/dist/adapters/nextjs/index.js +190 -197
  25. package/dist/{server/openai-y7GhJNdn.js → adapters/openai-B5jEiqiB.js} +776 -719
  26. package/dist/adapters/openai-D0musiYP.cjs +17 -0
  27. package/dist/{server/openai-DiVskd89.js → adapters/openai-cDlFSTk6.js} +61 -59
  28. package/dist/adapters/openai-vXvLni8v.cjs +1 -0
  29. package/dist/adapters/{utils-DosuoabY.js → utils-BPWZsX7k.js} +1285 -1220
  30. package/dist/adapters/utils-_whV4fXL.cjs +128 -0
  31. package/dist/adapters/utils.cjs +1 -1
  32. package/dist/adapters/utils.js +2 -2
  33. package/dist/client/charts/ChartLoader.d.ts +3 -17
  34. package/dist/client/charts/chartComponentRegistry.d.ts +46 -0
  35. package/dist/client/charts/chartConfigHelpers.d.ts +38 -0
  36. package/dist/client/charts.js +14 -13
  37. package/dist/client/chunks/{DashboardEditModal-6KRE36mm.js → DashboardEditModal-okVfH8ZK.js} +5446 -4486
  38. package/dist/client/chunks/DashboardEditModal-okVfH8ZK.js.map +1 -0
  39. package/dist/client/chunks/{RetentionCombinedChart-CCpu0C-s.js → RetentionCombinedChart-BgbDhsPz.js} +10 -10
  40. package/dist/client/chunks/{RetentionCombinedChart-CCpu0C-s.js.map → RetentionCombinedChart-BgbDhsPz.js.map} +1 -1
  41. package/dist/client/chunks/{RetentionHeatmap-B24PiIfr.js → RetentionHeatmap-DjXZaTPq.js} +5 -5
  42. package/dist/client/chunks/{RetentionHeatmap-B24PiIfr.js.map → RetentionHeatmap-DjXZaTPq.js.map} +1 -1
  43. package/dist/client/chunks/analysis-builder-DB88FojM.js +5674 -0
  44. package/dist/client/chunks/analysis-builder-DB88FojM.js.map +1 -0
  45. package/dist/client/chunks/{analysis-builder-shared-x576-O5p.js → analysis-builder-shared-BVK4TYfR.js} +1578 -1292
  46. package/dist/client/chunks/analysis-builder-shared-BVK4TYfR.js.map +1 -0
  47. package/dist/client/chunks/{chart-activity-grid-CiHrLH6Y.js → chart-activity-grid-DX0SJbxs.js} +642 -494
  48. package/dist/client/chunks/chart-activity-grid-DX0SJbxs.js.map +1 -0
  49. package/dist/client/chunks/chart-area-of01_62R.js +775 -0
  50. package/dist/client/chunks/chart-area-of01_62R.js.map +1 -0
  51. package/dist/client/chunks/chart-bar-BqelQE_I.js +194 -0
  52. package/dist/client/chunks/chart-bar-BqelQE_I.js.map +1 -0
  53. package/dist/client/chunks/{chart-box-plot-Bu9hy-17.js → chart-box-plot-kkBixZ27.js} +2 -2
  54. package/dist/client/chunks/{chart-box-plot-Bu9hy-17.js.map → chart-box-plot-kkBixZ27.js.map} +1 -1
  55. package/dist/client/chunks/chart-bubble-B2he1--4.js +221 -0
  56. package/dist/client/chunks/chart-bubble-B2he1--4.js.map +1 -0
  57. package/dist/client/chunks/{chart-candlestick-Dau5AF4E.js → chart-candlestick-DZp19Tzh.js} +2 -2
  58. package/dist/client/chunks/{chart-candlestick-Dau5AF4E.js.map → chart-candlestick-DZp19Tzh.js.map} +1 -1
  59. package/dist/client/chunks/chart-config-area-BNigHUy8.js +124 -0
  60. package/dist/client/chunks/chart-config-area-BNigHUy8.js.map +1 -0
  61. package/dist/client/chunks/chart-config-bar-DSO_LRTx.js +54 -0
  62. package/dist/client/chunks/chart-config-bar-DSO_LRTx.js.map +1 -0
  63. package/dist/client/chunks/{chart-config-box-plot-DJ-dWWXA.js → chart-config-box-plot-oW8axV2q.js} +5 -10
  64. package/dist/client/chunks/chart-config-box-plot-oW8axV2q.js.map +1 -0
  65. package/dist/client/chunks/{chart-config-gauge-DSwC04l0.js → chart-config-gauge-Dq-_H9UN.js} +5 -7
  66. package/dist/client/chunks/chart-config-gauge-Dq-_H9UN.js.map +1 -0
  67. package/dist/client/chunks/{chart-config-kpi-delta-D6BIkHL3.js → chart-config-kpi-delta-DSQbvqu_.js} +5 -10
  68. package/dist/client/chunks/chart-config-kpi-delta-DSQbvqu_.js.map +1 -0
  69. package/dist/client/chunks/{chart-config-kpi-number-Bx-V9a62.js → chart-config-kpi-number-EFSWY1We.js} +5 -7
  70. package/dist/client/chunks/chart-config-kpi-number-EFSWY1We.js.map +1 -0
  71. package/dist/client/chunks/{chart-config-kpi-text-CcqC1u-8.js → chart-config-kpi-text-KM3V5X2u.js} +5 -7
  72. package/dist/client/chunks/chart-config-kpi-text-KM3V5X2u.js.map +1 -0
  73. package/dist/client/chunks/{chart-config-line-Db3jDsWc.js → chart-config-line-D6jG8PCH.js} +9 -36
  74. package/dist/client/chunks/chart-config-line-D6jG8PCH.js.map +1 -0
  75. package/dist/client/chunks/{chart-config-pie-DD4SmRTF.js → chart-config-pie-BhzW-fdn.js} +6 -16
  76. package/dist/client/chunks/chart-config-pie-BhzW-fdn.js.map +1 -0
  77. package/dist/client/chunks/{chart-config-radar-CC2XAaGr.js → chart-config-radar-D7REP1q_.js} +6 -16
  78. package/dist/client/chunks/chart-config-radar-D7REP1q_.js.map +1 -0
  79. package/dist/client/chunks/{chart-config-radial-bar-DmxKx1R0.js → chart-config-radial-bar-Byx6qOPU.js} +6 -16
  80. package/dist/client/chunks/chart-config-radial-bar-Byx6qOPU.js.map +1 -0
  81. package/dist/client/chunks/{chart-config-tree-map-BI-oQStO.js → chart-config-tree-map-DVrvf3yQ.js} +6 -16
  82. package/dist/client/chunks/chart-config-tree-map-DVrvf3yQ.js.map +1 -0
  83. package/dist/client/chunks/{chart-config-waterfall-DSnyixbI.js → chart-config-waterfall-DmFeQdIk.js} +5 -10
  84. package/dist/client/chunks/chart-config-waterfall-DmFeQdIk.js.map +1 -0
  85. package/dist/client/chunks/{chart-data-table-Cm5jrpaw.js → chart-data-table-CKauQXme.js} +1046 -1121
  86. package/dist/client/chunks/chart-data-table-CKauQXme.js.map +1 -0
  87. package/dist/client/chunks/{chart-funnel-Eke8IPtG.js → chart-funnel-CToKSBaL.js} +184 -222
  88. package/dist/client/chunks/chart-funnel-CToKSBaL.js.map +1 -0
  89. package/dist/client/chunks/chart-gauge-DTVezSk7.js +403 -0
  90. package/dist/client/chunks/chart-gauge-DTVezSk7.js.map +1 -0
  91. package/dist/client/chunks/chart-heat-map-DTuUl0BR.js +236 -0
  92. package/dist/client/chunks/chart-heat-map-DTuUl0BR.js.map +1 -0
  93. package/dist/client/chunks/chart-kpi-delta-Dn-jjO-2.js +408 -0
  94. package/dist/client/chunks/chart-kpi-delta-Dn-jjO-2.js.map +1 -0
  95. package/dist/client/chunks/chart-kpi-number-P_WBiO5S.js +244 -0
  96. package/dist/client/chunks/chart-kpi-number-P_WBiO5S.js.map +1 -0
  97. package/dist/client/chunks/chart-kpi-text-C-Y4eb5H.js +185 -0
  98. package/dist/client/chunks/chart-kpi-text-C-Y4eb5H.js.map +1 -0
  99. package/dist/client/chunks/chart-line-DKgrQA6c.js +101 -0
  100. package/dist/client/chunks/chart-line-DKgrQA6c.js.map +1 -0
  101. package/dist/client/chunks/{chart-markdown-BPW-EAm9.js → chart-markdown-CV75S_zL.js} +1359 -1240
  102. package/dist/client/chunks/chart-markdown-CV75S_zL.js.map +1 -0
  103. package/dist/client/chunks/{chart-measure-profile-BI3kADCp.js → chart-measure-profile-Ket8fJyf.js} +7 -7
  104. package/dist/client/chunks/{chart-measure-profile-BI3kADCp.js.map → chart-measure-profile-Ket8fJyf.js.map} +1 -1
  105. package/dist/client/chunks/chart-pie-ByieAX5H.js +119 -0
  106. package/dist/client/chunks/chart-pie-ByieAX5H.js.map +1 -0
  107. package/dist/client/chunks/chart-radar-CiSwHWp4.js +138 -0
  108. package/dist/client/chunks/chart-radar-CiSwHWp4.js.map +1 -0
  109. package/dist/client/chunks/chart-radial-bar-BF6Mhl6f.js +122 -0
  110. package/dist/client/chunks/chart-radial-bar-BF6Mhl6f.js.map +1 -0
  111. package/dist/client/chunks/{chart-sankey-CFzjGvZX.js → chart-sankey-DjrvKw6K.js} +36 -39
  112. package/dist/client/chunks/{chart-sankey-CFzjGvZX.js.map → chart-sankey-DjrvKw6K.js.map} +1 -1
  113. package/dist/client/chunks/chart-scatter-Dd9WFqnS.js +258 -0
  114. package/dist/client/chunks/chart-scatter-Dd9WFqnS.js.map +1 -0
  115. package/dist/client/chunks/{chart-sunburst-91Q2tzaB.js → chart-sunburst-leGpuDj7.js} +3 -3
  116. package/dist/client/chunks/{chart-sunburst-91Q2tzaB.js.map → chart-sunburst-leGpuDj7.js.map} +1 -1
  117. package/dist/client/chunks/chart-tree-map-Ceq5sLZA.js +323 -0
  118. package/dist/client/chunks/chart-tree-map-Ceq5sLZA.js.map +1 -0
  119. package/dist/client/chunks/{chart-waterfall-DcHbbPaG.js → chart-waterfall-DyvQReN5.js} +7 -7
  120. package/dist/client/chunks/{chart-waterfall-DcHbbPaG.js.map → chart-waterfall-DyvQReN5.js.map} +1 -1
  121. package/dist/client/chunks/{charts-core-CrBDYN6N.js → charts-core-DaXSt1Dd.js} +2 -2
  122. package/dist/client/chunks/{charts-core-CrBDYN6N.js.map → charts-core-DaXSt1Dd.js.map} +1 -1
  123. package/dist/client/chunks/charts-loader-DdTeCeNo.js +84 -0
  124. package/dist/client/chunks/charts-loader-DdTeCeNo.js.map +1 -0
  125. package/dist/client/chunks/{core-DsAWNRRv.js → core-D7vPfUIe.js} +2 -2
  126. package/dist/client/chunks/{core-DsAWNRRv.js.map → core-D7vPfUIe.js.map} +1 -1
  127. package/dist/client/chunks/{nl-NL-oyr2wENY.js → nl-NL-2zTAWTej.js} +8 -2
  128. package/dist/client/chunks/{nl-NL-oyr2wENY.js.map → nl-NL-2zTAWTej.js.map} +1 -1
  129. package/dist/client/chunks/retention-ChW9jYdy.js.map +1 -1
  130. package/dist/client/chunks/{schema-visualization-BszcrmZX.js → schema-visualization-Cb_E9_Gd.js} +12 -12
  131. package/dist/client/chunks/{schema-visualization-BszcrmZX.js.map → schema-visualization-Cb_E9_Gd.js.map} +1 -1
  132. package/dist/client/chunks/{useDirtyStateTracking-B5wCDJSj.js → useDirtyStateTracking-MbpxH_v6.js} +95 -84
  133. package/dist/client/chunks/useDirtyStateTracking-MbpxH_v6.js.map +1 -0
  134. package/dist/client/chunks/{useExplainAI-CCeCYzDm.js → useExplainAI-evnZkjCY.js} +14 -14
  135. package/dist/client/chunks/{useExplainAI-CCeCYzDm.js.map → useExplainAI-evnZkjCY.js.map} +1 -1
  136. package/dist/client/chunks/{utils-kqa-JIMg.js → utils-3P6z1vz5.js} +3 -3
  137. package/dist/client/chunks/{utils-kqa-JIMg.js.map → utils-3P6z1vz5.js.map} +1 -1
  138. package/dist/client/chunks/{vendor-0hJNlZXQ.js → vendor-DSpR0IW6.js} +43 -43
  139. package/dist/client/chunks/{vendor-0hJNlZXQ.js.map → vendor-DSpR0IW6.js.map} +1 -1
  140. package/dist/client/components/AgenticNotebook/agentChatParts.d.ts +34 -0
  141. package/dist/client/components/AgenticNotebook/chatMessageParts.d.ts +39 -0
  142. package/dist/client/components/AgenticNotebook/useAgentChatController.d.ts +25 -0
  143. package/dist/client/components/AgenticNotebook/useNotebookAutosave.d.ts +12 -0
  144. package/dist/client/components/AnalysisBuilder/AnalysisAIPanel.d.ts +1 -1
  145. package/dist/client/components/AnalysisBuilder/AnalysisAxisDropZone.d.ts +1 -1
  146. package/dist/client/components/AnalysisBuilder/AnalysisChartConfigPanel.d.ts +1 -1
  147. package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +1 -1
  148. package/dist/client/components/AnalysisBuilder/AnalysisFilterGroup.d.ts +1 -1
  149. package/dist/client/components/AnalysisBuilder/AnalysisFilterItem.d.ts +1 -1
  150. package/dist/client/components/AnalysisBuilder/AnalysisFilterSection.d.ts +1 -1
  151. package/dist/client/components/AnalysisBuilder/AnalysisModeErrorBoundary.d.ts +1 -1
  152. package/dist/client/components/AnalysisBuilder/AnalysisQueryPanelParts.d.ts +64 -0
  153. package/dist/client/components/AnalysisBuilder/AnalysisResultsHeader.d.ts +67 -0
  154. package/dist/client/components/AnalysisBuilder/BreakdownComparisonToggle.d.ts +13 -0
  155. package/dist/client/components/AnalysisBuilder/BreakdownRow.d.ts +26 -0
  156. package/dist/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +10 -0
  157. package/dist/client/components/AnalysisBuilder/ExecutionPlanPanelParts.d.ts +22 -0
  158. package/dist/client/components/AnalysisBuilder/ExplainAIPanel.d.ts +2 -1
  159. package/dist/client/components/AnalysisBuilder/FieldDetailPanel.d.ts +1 -1
  160. package/dist/client/components/AnalysisBuilder/FieldSearchItem.d.ts +1 -1
  161. package/dist/client/components/AnalysisBuilder/FieldSearchModal.d.ts +1 -1
  162. package/dist/client/components/AnalysisBuilder/FieldSearchResults.d.ts +16 -0
  163. package/dist/client/components/AnalysisBuilder/FilterConfigModal.d.ts +2 -1
  164. package/dist/client/components/AnalysisBuilder/FilterValueInput.d.ts +63 -0
  165. package/dist/client/components/AnalysisBuilder/FlowDepthControls.d.ts +10 -0
  166. package/dist/client/components/AnalysisBuilder/FlowVisualizationPicker.d.ts +7 -0
  167. package/dist/client/components/AnalysisBuilder/LegacyBooleanOptions.d.ts +8 -0
  168. package/dist/client/components/AnalysisBuilder/LimitSection.d.ts +1 -1
  169. package/dist/client/components/AnalysisBuilder/MetricRow.d.ts +23 -0
  170. package/dist/client/components/AnalysisBuilder/SectionHeading.d.ts +1 -1
  171. package/dist/client/components/AnalysisBuilder/SortToggleButton.d.ts +13 -0
  172. package/dist/client/components/AnalysisBuilder/StringArrayInput.d.ts +17 -0
  173. package/dist/client/components/AnalysisBuilder/filterConfigModalUtils.d.ts +30 -0
  174. package/dist/client/components/AnalysisBuilder/hooks/useAnalysisBuilderImperativeHandle.d.ts +13 -0
  175. package/dist/client/components/AnalysisBuilder/hooks/useDragReorder.d.ts +25 -0
  176. package/dist/client/components/AnalysisBuilder/hooks/useFieldSearchKeyboard.d.ts +11 -0
  177. package/dist/client/components/AnalysisBuilder/utils/axisConfigUtils.d.ts +23 -0
  178. package/dist/client/components/AnalysisBuilder/utils/executionPlanMarkdown.d.ts +8 -0
  179. package/dist/client/components/AnalysisBuilder/utils/fieldUtils.d.ts +5 -0
  180. package/dist/client/components/AnalysisBuilder/utils/resultsPanelDerive.d.ts +68 -0
  181. package/dist/client/components/AnalysisBuilder/utils/shareStateUtils.d.ts +68 -0
  182. package/dist/client/components/AnalysisBuilder/utils/sortUtils.d.ts +7 -0
  183. package/dist/client/components/AnalyticsDashboard.d.ts +1 -1
  184. package/dist/client/components/AnalyticsPage.d.ts +1 -1
  185. package/dist/client/components/ChartErrorBoundary.d.ts +1 -1
  186. package/dist/client/components/ChartTypeSelector.d.ts +1 -1
  187. package/dist/client/components/ColorPaletteSelector.d.ts +1 -1
  188. package/dist/client/components/DashboardEditModal.d.ts +2 -1
  189. package/dist/client/components/DashboardFilters/CompactFilterBarParts.d.ts +26 -0
  190. package/dist/client/components/DashboardFilters/DashboardFilterConfigModal.d.ts +1 -1
  191. package/dist/client/components/DashboardFilters/DashboardFilterConfigModalParts.d.ts +27 -0
  192. package/dist/client/components/DashboardFilters/DashboardFilterItem.d.ts +1 -1
  193. package/dist/client/components/DashboardFilters/DashboardFilterValueInput.d.ts +39 -0
  194. package/dist/client/components/DashboardFilters/dashboardFilterConfigModalUtils.d.ts +21 -0
  195. package/dist/client/components/DashboardFilters/useCompactFilterBar.d.ts +19 -0
  196. package/dist/client/components/DashboardFilters/useDashboardFilterConfigModal.d.ts +69 -0
  197. package/dist/client/components/DashboardFilters/useDateRangeState.d.ts +19 -0
  198. package/dist/client/components/DashboardFilters/useFilterDropdowns.d.ts +21 -0
  199. package/dist/client/components/DashboardFilters/useFilterValueFetch.d.ts +23 -0
  200. package/dist/client/components/DashboardGrid.d.ts +1 -1
  201. package/dist/client/components/DashboardPortletCard.d.ts +2 -57
  202. package/dist/client/components/DashboardThumbnailPlaceholder.d.ts +1 -1
  203. package/dist/client/components/DataBrowser/DataBrowserSidebar.d.ts +1 -1
  204. package/dist/client/components/DataBrowser/DataBrowserToolbar.d.ts +1 -1
  205. package/dist/client/components/DataBrowser/index.d.ts +1 -1
  206. package/dist/client/components/DataHistogram.d.ts +1 -1
  207. package/dist/client/components/DebugModal.d.ts +1 -1
  208. package/dist/client/components/DrillBreadcrumb.d.ts +2 -1
  209. package/dist/client/components/LoadingIndicator.d.ts +1 -1
  210. package/dist/client/components/MobileStackedLayout.d.ts +1 -1
  211. package/dist/client/components/PortletAnalysisModal.d.ts +1 -1
  212. package/dist/client/components/PortletContainer.d.ts +1 -1
  213. package/dist/client/components/PortletFilterConfigModal.d.ts +6 -4
  214. package/dist/client/components/RowManagedLayout.d.ts +1 -1
  215. package/dist/client/components/ScaledGridWrapper.d.ts +1 -1
  216. package/dist/client/components/SchemaVisualization/CubeNode.d.ts +1 -1
  217. package/dist/client/components/SchemaVisualization/FieldDetailPanel.d.ts +1 -1
  218. package/dist/client/components/SchemaVisualization/RelationshipEdge.d.ts +1 -1
  219. package/dist/client/components/SchemaVisualization/SchemaVisualizationLazy.d.ts +1 -1
  220. package/dist/client/components/SchemaVisualization/index.d.ts +1 -1
  221. package/dist/client/components/TextPortletModal.d.ts +1 -1
  222. package/dist/client/components/analyticsPortlet/PortletChart.d.ts +31 -0
  223. package/dist/client/components/analyticsPortlet/PortletChartView.d.ts +35 -0
  224. package/dist/client/components/analyticsPortlet/PortletStates.d.ts +65 -0
  225. package/dist/client/components/analyticsPortlet/parsePortletQuery.d.ts +22 -0
  226. package/dist/client/components/analyticsPortlet/portletRenderState.d.ts +31 -0
  227. package/dist/client/components/analyticsPortlet/usePortletDebugData.d.ts +37 -0
  228. package/dist/client/components/analyticsPortlet/usePortletDrillState.d.ts +17 -0
  229. package/dist/client/components/analyticsPortlet/usePortletQueryResults.d.ts +37 -0
  230. package/dist/client/components/charts/ActivityGridChart.helpers.d.ts +33 -0
  231. package/dist/client/components/charts/ActivityGridChart.render.d.ts +31 -0
  232. package/dist/client/components/charts/AxisFormatControls.d.ts +5 -3
  233. package/dist/client/components/charts/BarChart.helpers.d.ts +23 -0
  234. package/dist/client/components/charts/BarSeries.d.ts +29 -0
  235. package/dist/client/components/charts/BubbleChart.helpers.d.ts +43 -0
  236. package/dist/client/components/charts/BubbleChart.render.d.ts +21 -0
  237. package/dist/client/components/charts/ChartContainer.d.ts +1 -1
  238. package/dist/client/components/charts/ChartLegend.d.ts +1 -1
  239. package/dist/client/components/charts/ChartStates.d.ts +38 -0
  240. package/dist/client/components/charts/ChartTooltip.d.ts +1 -1
  241. package/dist/client/components/charts/FunnelChart.helpers.d.ts +25 -0
  242. package/dist/client/components/charts/FunnelViews.d.ts +16 -0
  243. package/dist/client/components/charts/HeatMapCanvas.d.ts +25 -0
  244. package/dist/client/components/charts/HeatMapChart.helpers.d.ts +64 -0
  245. package/dist/client/components/charts/KpiDelta.helpers.d.ts +20 -0
  246. package/dist/client/components/charts/KpiNumber.helpers.d.ts +30 -0
  247. package/dist/client/components/charts/KpiStates.d.ts +19 -0
  248. package/dist/client/components/charts/MissingDependencyFallback.d.ts +1 -1
  249. package/dist/client/components/charts/ScatterChart.helpers.d.ts +43 -0
  250. package/dist/client/components/charts/ScatterSeries.d.ts +17 -0
  251. package/dist/client/components/charts/ScatterTooltip.d.ts +21 -0
  252. package/dist/client/components/charts/TreeMapChart.helpers.d.ts +37 -0
  253. package/dist/client/components/charts/TreeMapContent.d.ts +24 -0
  254. package/dist/client/components/charts/TreeMapLegend.d.ts +13 -0
  255. package/dist/client/components/charts/cartesianChartHelpers.d.ts +126 -0
  256. package/dist/client/components/charts/chartAxisResolution.d.ts +32 -0
  257. package/dist/client/components/charts/chartScaffolding.d.ts +77 -0
  258. package/dist/client/components/charts/gaugeChartHelpers.d.ts +36 -0
  259. package/dist/client/components/charts/kpiTextHelpers.d.ts +46 -0
  260. package/dist/client/components/charts/radarChartHelpers.d.ts +14 -0
  261. package/dist/client/components/charts/radialBarChartHelpers.d.ts +22 -0
  262. package/dist/client/components/charts/useChartDimensions.d.ts +20 -0
  263. package/dist/client/components/charts/useKpiDimensions.d.ts +30 -0
  264. package/dist/client/components/dashboard/DashboardContext.d.ts +2 -2
  265. package/dist/client/components/dashboard/DashboardCoordinator.d.ts +1 -1
  266. package/dist/client/components/dashboard/DashboardEditBar.d.ts +5 -0
  267. package/dist/client/components/dashboard/DashboardFilterBar.d.ts +1 -1
  268. package/dist/client/components/dashboard/DashboardGridSurface.d.ts +1 -1
  269. package/dist/client/components/dashboard/DashboardModals.d.ts +1 -1
  270. package/dist/client/components/dashboard/DashboardProvider.d.ts +1 -1
  271. package/dist/client/components/dashboard/DashboardToolbar.d.ts +1 -1
  272. package/dist/client/components/dashboard/LayoutModeToggle.d.ts +10 -0
  273. package/dist/client/components/dashboard/dashboardGridUtils.d.ts +1 -1
  274. package/dist/client/components/dashboardPortletCard/FilterFieldChip.d.ts +12 -0
  275. package/dist/client/components/dashboardPortletCard/PortletCardHeader.d.ts +43 -0
  276. package/dist/client/components/dashboardPortletCard/cardStyles.d.ts +33 -0
  277. package/dist/client/components/dashboardPortletCard/filterField.d.ts +12 -0
  278. package/dist/client/components/dashboardPortletCard/propsEqual.d.ts +55 -0
  279. package/dist/client/components/dashboardPortletCard/usePortletCardActions.d.ts +16 -0
  280. package/dist/client/components/portletAnalysisModal/saveValidation.d.ts +8 -0
  281. package/dist/client/components/shared/dateRangeUtils.d.ts +40 -0
  282. package/dist/client/components/shared/filterDisplayUtils.d.ts +10 -0
  283. package/dist/client/components/shared/filterItem/FilterDateRangeSelector.d.ts +17 -0
  284. package/dist/client/components/shared/filterItem/FilterFieldDropdown.d.ts +16 -0
  285. package/dist/client/components/shared/filterItem/dateRangeSync.d.ts +14 -0
  286. package/dist/client/components/shared/filterItem/fieldVisuals.d.ts +5 -0
  287. package/dist/client/components/shared/filterValueSelector/FilterValueInputs.d.ts +55 -0
  288. package/dist/client/components/shared/filterValueSelector/useFilterValueSelectorState.d.ts +25 -0
  289. package/dist/client/components/shared/queryFieldUtils.d.ts +21 -0
  290. package/dist/client/components/shared/utils.d.ts +4 -43
  291. package/dist/client/components.js +3 -3
  292. package/dist/client/hooks/agentChatStream.d.ts +39 -0
  293. package/dist/client/hooks/analysisQueryExecutionModes.d.ts +133 -0
  294. package/dist/client/hooks/dashboard/useDashboardController.d.ts +2 -2
  295. package/dist/client/hooks/drillNavigation.d.ts +25 -0
  296. package/dist/client/hooks/useDashboardHook.d.ts +2 -2
  297. package/dist/client/hooks.js +3 -3
  298. package/dist/client/icons.d.ts +1 -1
  299. package/dist/client/icons.js +2 -2
  300. package/dist/client/index.js +816 -669
  301. package/dist/client/index.js.map +1 -1
  302. package/dist/client/providers/CubeApiProvider.d.ts +1 -1
  303. package/dist/client/providers/CubeFeaturesProvider.d.ts +1 -1
  304. package/dist/client/providers/CubeMetaProvider.d.ts +1 -1
  305. package/dist/client/providers/CubeProvider.d.ts +1 -1
  306. package/dist/client/providers/I18nProvider.d.ts +1 -1
  307. package/dist/client/providers.js +3 -3
  308. package/dist/client/schema.js +1 -1
  309. package/dist/client/shared/chartConfigBuilders.d.ts +18 -0
  310. package/dist/client/shared/components/QueryAnalysisPanel.sections.d.ts +41 -0
  311. package/dist/client/shared/queryTransforms.d.ts +20 -0
  312. package/dist/client/shared/utils.d.ts +2 -4
  313. package/dist/client/stores/analysisBuilderStore.d.ts +1 -1
  314. package/dist/client/stores/dashboardStore.d.ts +1 -1
  315. package/dist/client/stores/dataBrowserStore.d.ts +1 -1
  316. package/dist/client/stores/notebookStore.d.ts +1 -1
  317. package/dist/client/stores/optionsToAnalysisConfig.d.ts +17 -0
  318. package/dist/client/styles.css +1 -1
  319. package/dist/client/types/drill.d.ts +1 -1
  320. package/dist/client/types.d.ts +7 -2
  321. package/dist/client/utils/axisValueFormatting.d.ts +32 -0
  322. package/dist/client/utils/drillQueryBuilder.d.ts +2 -2
  323. package/dist/client/utils/filterUtils.d.ts +33 -5
  324. package/dist/client/utils/joinReachability.d.ts +27 -0
  325. package/dist/client/utils/timeValueFormatting.d.ts +32 -0
  326. package/dist/client/utils.js +6 -6
  327. package/dist/client-bundle-stats.html +1 -1
  328. package/dist/mcp-app/mcp-app.html +55 -55
  329. package/dist/server/google-BOnRIN1w.cjs +2 -0
  330. package/dist/{adapters/google-CFYljAOF.js → server/google-CvKM9yVM.js} +83 -71
  331. package/dist/server/index.cjs +179 -211
  332. package/dist/server/index.d.ts +2 -5050
  333. package/dist/server/index.js +6360 -6462
  334. package/dist/{adapters/openai-y7GhJNdn.js → server/openai-B5jEiqiB.js} +776 -719
  335. package/dist/server/openai-D0musiYP.cjs +17 -0
  336. package/dist/{adapters/openai-DiVskd89.js → server/openai-cDlFSTk6.js} +61 -59
  337. package/dist/server/openai-vXvLni8v.cjs +1 -0
  338. package/dist/server/server/adapters/base-adapter.d.ts +332 -0
  339. package/dist/server/server/adapters/databend-adapter.d.ts +63 -0
  340. package/dist/server/server/adapters/duckdb-adapter.d.ts +68 -0
  341. package/dist/server/server/adapters/mysql-adapter.d.ts +65 -0
  342. package/dist/server/server/adapters/postgres-adapter.d.ts +55 -0
  343. package/dist/server/server/adapters/singlestore-adapter.d.ts +4 -0
  344. package/dist/server/server/adapters/snowflake-adapter.d.ts +53 -0
  345. package/dist/server/server/adapters/sqlite-adapter.d.ts +120 -0
  346. package/dist/server/server/adapters/window-function-builder.d.ts +11 -0
  347. package/dist/server/server/agent/chart-validation.d.ts +22 -0
  348. package/dist/server/server/agent/handler-steps.d.ts +37 -0
  349. package/dist/server/server/agent/handler.d.ts +25 -0
  350. package/dist/server/server/agent/index.d.ts +11 -0
  351. package/dist/server/server/agent/providers/anthropic.d.ts +24 -0
  352. package/dist/server/server/agent/providers/factory.d.ts +12 -0
  353. package/dist/server/server/agent/providers/google.d.ts +23 -0
  354. package/dist/server/server/agent/providers/index.d.ts +6 -0
  355. package/dist/server/server/agent/providers/openai.d.ts +26 -0
  356. package/dist/server/server/agent/providers/types.d.ts +95 -0
  357. package/dist/server/server/agent/system-prompt.d.ts +5 -0
  358. package/dist/server/server/agent/tools.d.ts +28 -0
  359. package/dist/server/server/agent/types.d.ts +192 -0
  360. package/dist/server/server/ai/discovery-helpers.d.ts +29 -0
  361. package/dist/server/server/ai/discovery.d.ts +66 -0
  362. package/dist/server/server/ai/index.d.ts +10 -0
  363. package/dist/server/server/ai/mcp-prompts.d.ts +83 -0
  364. package/dist/server/server/ai/query-schema.d.ts +258 -0
  365. package/dist/server/server/ai/schemas.d.ts +63 -0
  366. package/dist/server/server/ai/suggestion-helpers.d.ts +33 -0
  367. package/dist/server/server/ai/suggestion.d.ts +16 -0
  368. package/dist/server/server/ai/validation-helpers.d.ts +21 -0
  369. package/dist/server/server/ai/validation.d.ts +31 -0
  370. package/dist/server/server/builders/analysis-utils.d.ts +106 -0
  371. package/dist/server/server/builders/comparison-query-builder.d.ts +70 -0
  372. package/dist/server/server/builders/cte-builder.d.ts +108 -0
  373. package/dist/server/server/builders/date-time-builder.d.ts +34 -0
  374. package/dist/server/server/builders/date-time-helpers.d.ts +34 -0
  375. package/dist/server/server/builders/filter-builder.d.ts +25 -0
  376. package/dist/server/server/builders/filter-operators.d.ts +23 -0
  377. package/dist/server/server/builders/flow-query-builder.d.ts +136 -0
  378. package/dist/server/server/builders/funnel-query-builder.d.ts +145 -0
  379. package/dist/server/server/builders/group-by-builder.d.ts +38 -0
  380. package/dist/server/server/builders/index.d.ts +13 -0
  381. package/dist/server/server/builders/measure-builder.d.ts +185 -0
  382. package/dist/server/server/builders/retention-query-builder.d.ts +98 -0
  383. package/dist/server/server/cache-providers/index.d.ts +5 -0
  384. package/dist/server/server/cache-providers/memory.d.ts +105 -0
  385. package/dist/server/server/cache-utils.d.ts +85 -0
  386. package/dist/server/server/compiler-metadata.d.ts +11 -0
  387. package/dist/server/server/compiler.d.ts +212 -0
  388. package/dist/server/server/cube-utils.d.ts +158 -0
  389. package/dist/server/server/database-utils.d.ts +18 -0
  390. package/dist/server/server/execution/annotation-builder.d.ts +12 -0
  391. package/dist/server/server/execution/filter-cache-preloader.d.ts +19 -0
  392. package/dist/server/server/execution/mode-router.d.ts +25 -0
  393. package/dist/server/server/execution/query-result-cache.d.ts +21 -0
  394. package/dist/server/server/execution/result-post-processor.d.ts +10 -0
  395. package/dist/server/server/executor.d.ts +186 -0
  396. package/dist/server/server/executors/base-executor.d.ts +16 -0
  397. package/dist/server/server/executors/databend-executor.d.ts +33 -0
  398. package/dist/server/server/executors/duckdb-executor.d.ts +33 -0
  399. package/dist/server/server/executors/explain-utils.d.ts +28 -0
  400. package/dist/server/server/executors/index.d.ts +21 -0
  401. package/dist/server/server/executors/mysql-executor.d.ts +27 -0
  402. package/dist/server/server/executors/postgres-executor.d.ts +27 -0
  403. package/dist/server/server/executors/singlestore-executor.d.ts +9 -0
  404. package/dist/server/server/executors/snowflake-executor.d.ts +33 -0
  405. package/dist/server/server/executors/sqlite-executor.d.ts +28 -0
  406. package/dist/server/server/explain/databend-parser.d.ts +16 -0
  407. package/dist/server/server/explain/duckdb-parser.d.ts +28 -0
  408. package/dist/server/server/explain/explain-tree.d.ts +20 -0
  409. package/dist/server/server/explain/index.d.ts +9 -0
  410. package/dist/server/server/explain/mysql-parser.d.ts +38 -0
  411. package/dist/server/server/explain/postgres-parser.d.ts +18 -0
  412. package/dist/server/server/explain/snowflake-parser.d.ts +17 -0
  413. package/dist/server/server/explain/sqlite-parser.d.ts +23 -0
  414. package/dist/server/server/filter-cache.d.ts +73 -0
  415. package/dist/server/server/gap-filler.d.ts +48 -0
  416. package/dist/server/server/index.d.ts +38 -0
  417. package/dist/server/server/logical-plan/cte-planner-helpers.d.ts +37 -0
  418. package/dist/server/server/logical-plan/cte-planner.d.ts +104 -0
  419. package/dist/server/server/logical-plan/filter-propagation.d.ts +44 -0
  420. package/dist/server/server/logical-plan/index.d.ts +19 -0
  421. package/dist/server/server/logical-plan/join-planner.d.ts +27 -0
  422. package/dist/server/server/logical-plan/logical-plan-builder.d.ts +58 -0
  423. package/dist/server/server/logical-plan/logical-planner.d.ts +39 -0
  424. package/dist/server/server/logical-plan/optimiser.d.ts +34 -0
  425. package/dist/server/server/logical-plan/plan-analysis-reporter.d.ts +59 -0
  426. package/dist/server/server/logical-plan/planner-utils.d.ts +20 -0
  427. package/dist/server/server/logical-plan/types.d.ts +199 -0
  428. package/dist/server/server/measure-classification.d.ts +40 -0
  429. package/dist/server/server/physical-plan/drizzle-plan-builder.d.ts +50 -0
  430. package/dist/server/server/physical-plan/drizzle-sql-builder.d.ts +118 -0
  431. package/dist/server/server/physical-plan/index.d.ts +2 -0
  432. package/dist/server/server/physical-plan/processors/cte-processor.d.ts +6 -0
  433. package/dist/server/server/physical-plan/processors/index.d.ts +8 -0
  434. package/dist/server/server/physical-plan/processors/joins-processor.d.ts +6 -0
  435. package/dist/server/server/physical-plan/processors/keys-dedup-processor.d.ts +13 -0
  436. package/dist/server/server/physical-plan/processors/multi-fact-processor.d.ts +13 -0
  437. package/dist/server/server/physical-plan/processors/predicates-processor.d.ts +6 -0
  438. package/dist/server/server/physical-plan/processors/selection-processor.d.ts +6 -0
  439. package/dist/server/server/physical-plan/processors/shared.d.ts +38 -0
  440. package/dist/server/server/physical-plan/processors/window-processor.d.ts +6 -0
  441. package/dist/server/server/prompts/explain-analysis-prompt.d.ts +47 -0
  442. package/dist/server/server/prompts/index.d.ts +27 -0
  443. package/dist/server/server/prompts/single-step-prompt.d.ts +31 -0
  444. package/dist/server/server/prompts/step0-validation-prompt.d.ts +39 -0
  445. package/dist/server/server/prompts/step1-shape-prompt.d.ts +29 -0
  446. package/dist/server/server/prompts/step2-complete-prompt.d.ts +19 -0
  447. package/dist/server/server/prompts/types.d.ts +37 -0
  448. package/dist/server/server/query-handlers.d.ts +79 -0
  449. package/dist/server/server/query-modes.d.ts +28 -0
  450. package/dist/server/server/query-validator.d.ts +9 -0
  451. package/dist/server/server/resolvers/calculated-measure-resolver.d.ts +98 -0
  452. package/dist/server/server/resolvers/index.d.ts +6 -0
  453. package/dist/server/server/resolvers/join-path-resolver.d.ts +158 -0
  454. package/dist/server/server/sql-format.d.ts +11 -0
  455. package/dist/server/server/template-substitution.d.ts +57 -0
  456. package/dist/server/server/types/analysis.d.ts +189 -0
  457. package/dist/server/server/types/cache.d.ts +132 -0
  458. package/dist/server/server/types/core.d.ts +164 -0
  459. package/dist/server/server/types/cube.d.ts +544 -0
  460. package/dist/server/server/types/executor.d.ts +156 -0
  461. package/dist/server/server/types/flow.d.ts +144 -0
  462. package/dist/server/server/types/funnel.d.ts +118 -0
  463. package/dist/server/server/types/index.d.ts +11 -0
  464. package/dist/server/server/types/metadata.d.ts +113 -0
  465. package/dist/server/server/types/query.d.ts +153 -0
  466. package/dist/server/server/types/retention.d.ts +141 -0
  467. package/dist/server/server/types/utils.d.ts +11 -0
  468. package/dist/server/server/types/validation.d.ts +14 -0
  469. package/package.json +15 -8
  470. package/dist/adapters/google-DUlXeeDA.cjs +0 -2
  471. package/dist/adapters/handler-C63rJUUK.cjs +0 -25
  472. package/dist/adapters/locale-CTNwPVZI.cjs +0 -198
  473. package/dist/adapters/locale-gU_d1Wja.js +0 -8249
  474. package/dist/adapters/mcp-transport-C4J4SAcn.cjs +0 -40
  475. package/dist/adapters/mcp-transport-CVUiifEc.js +0 -579
  476. package/dist/adapters/openai-6wrBvAnv.cjs +0 -1
  477. package/dist/adapters/openai-BDwb2u7y.cjs +0 -17
  478. package/dist/adapters/utils-CkEkU8Bo.cjs +0 -128
  479. package/dist/client/chunks/DashboardEditModal-6KRE36mm.js.map +0 -1
  480. package/dist/client/chunks/analysis-builder-shared-x576-O5p.js.map +0 -1
  481. package/dist/client/chunks/analysis-builder-zd48FVJO.js +0 -5367
  482. package/dist/client/chunks/analysis-builder-zd48FVJO.js.map +0 -1
  483. package/dist/client/chunks/chart-activity-grid-CiHrLH6Y.js.map +0 -1
  484. package/dist/client/chunks/chart-area-CXFK-Grv.js +0 -450
  485. package/dist/client/chunks/chart-area-CXFK-Grv.js.map +0 -1
  486. package/dist/client/chunks/chart-bar-DKXfLoGG.js +0 -271
  487. package/dist/client/chunks/chart-bar-DKXfLoGG.js.map +0 -1
  488. package/dist/client/chunks/chart-bubble-DGkTQlxM.js +0 -273
  489. package/dist/client/chunks/chart-bubble-DGkTQlxM.js.map +0 -1
  490. package/dist/client/chunks/chart-config-area-Bq_UsW3x.js +0 -101
  491. package/dist/client/chunks/chart-config-area-Bq_UsW3x.js.map +0 -1
  492. package/dist/client/chunks/chart-config-bar-_JEGZnAu.js +0 -95
  493. package/dist/client/chunks/chart-config-bar-_JEGZnAu.js.map +0 -1
  494. package/dist/client/chunks/chart-config-box-plot-DJ-dWWXA.js.map +0 -1
  495. package/dist/client/chunks/chart-config-gauge-DSwC04l0.js.map +0 -1
  496. package/dist/client/chunks/chart-config-kpi-delta-D6BIkHL3.js.map +0 -1
  497. package/dist/client/chunks/chart-config-kpi-number-Bx-V9a62.js.map +0 -1
  498. package/dist/client/chunks/chart-config-kpi-text-CcqC1u-8.js.map +0 -1
  499. package/dist/client/chunks/chart-config-line-Db3jDsWc.js.map +0 -1
  500. package/dist/client/chunks/chart-config-pie-DD4SmRTF.js.map +0 -1
  501. package/dist/client/chunks/chart-config-radar-CC2XAaGr.js.map +0 -1
  502. package/dist/client/chunks/chart-config-radial-bar-DmxKx1R0.js.map +0 -1
  503. package/dist/client/chunks/chart-config-tree-map-BI-oQStO.js.map +0 -1
  504. package/dist/client/chunks/chart-config-waterfall-DSnyixbI.js.map +0 -1
  505. package/dist/client/chunks/chart-data-table-Cm5jrpaw.js.map +0 -1
  506. package/dist/client/chunks/chart-funnel-Eke8IPtG.js.map +0 -1
  507. package/dist/client/chunks/chart-gauge-DeRZNsyl.js +0 -424
  508. package/dist/client/chunks/chart-gauge-DeRZNsyl.js.map +0 -1
  509. package/dist/client/chunks/chart-heat-map-C86thSJ4.js +0 -231
  510. package/dist/client/chunks/chart-heat-map-C86thSJ4.js.map +0 -1
  511. package/dist/client/chunks/chart-kpi-delta-CxOYD2f1.js +0 -343
  512. package/dist/client/chunks/chart-kpi-delta-CxOYD2f1.js.map +0 -1
  513. package/dist/client/chunks/chart-kpi-number-C6gWz-x4.js +0 -322
  514. package/dist/client/chunks/chart-kpi-number-C6gWz-x4.js.map +0 -1
  515. package/dist/client/chunks/chart-kpi-text-dDONrhS-.js +0 -149
  516. package/dist/client/chunks/chart-kpi-text-dDONrhS-.js.map +0 -1
  517. package/dist/client/chunks/chart-line-r4iWevKZ.js +0 -433
  518. package/dist/client/chunks/chart-line-r4iWevKZ.js.map +0 -1
  519. package/dist/client/chunks/chart-markdown-BPW-EAm9.js.map +0 -1
  520. package/dist/client/chunks/chart-pie-yqH2YVEI.js +0 -172
  521. package/dist/client/chunks/chart-pie-yqH2YVEI.js.map +0 -1
  522. package/dist/client/chunks/chart-radar-B-_3v-rE.js +0 -154
  523. package/dist/client/chunks/chart-radar-B-_3v-rE.js.map +0 -1
  524. package/dist/client/chunks/chart-radial-bar-C0EgzfAF.js +0 -148
  525. package/dist/client/chunks/chart-radial-bar-C0EgzfAF.js.map +0 -1
  526. package/dist/client/chunks/chart-scatter-DZPirzwX.js +0 -255
  527. package/dist/client/chunks/chart-scatter-DZPirzwX.js.map +0 -1
  528. package/dist/client/chunks/chart-tree-map-Bi4axCvh.js +0 -298
  529. package/dist/client/chunks/chart-tree-map-Bi4axCvh.js.map +0 -1
  530. package/dist/client/chunks/useDirtyStateTracking-B5wCDJSj.js.map +0 -1
  531. package/dist/server/google-DUlXeeDA.cjs +0 -2
  532. package/dist/server/openai-6wrBvAnv.cjs +0 -1
  533. package/dist/server/openai-BDwb2u7y.cjs +0 -17
  534. /package/dist/adapters/{express → adapters/express}/index.d.ts +0 -0
  535. /package/dist/adapters/{fastify → adapters/fastify}/index.d.ts +0 -0
  536. /package/dist/adapters/{hono → adapters/hono}/index.d.ts +0 -0
  537. /package/dist/adapters/{locale.d.ts → adapters/locale.d.ts} +0 -0
  538. /package/dist/adapters/{mcp-tools.d.ts → adapters/mcp-tools.d.ts} +0 -0
  539. /package/dist/adapters/{mcp-transport.d.ts → adapters/mcp-transport.d.ts} +0 -0
  540. /package/dist/adapters/{nextjs → adapters/nextjs}/index.d.ts +0 -0
  541. /package/dist/adapters/{types.d.ts → adapters/types.d.ts} +0 -0
@@ -812,6 +812,7 @@ var v = (e, t, n) => {
812
812
  "server.validation.retention.dateRangeRequired": "Date range is required",
813
813
  "server.validation.retention.dateRangeStartBeforeEnd": "Date range start must be before or equal to end",
814
814
  "server.validation.retention.dateRangeStartRequired": "Date range start is required",
815
+ "server.validation.retention.engineNotSupported": "Retention queries are not supported on {engine}. Use PostgreSQL or DuckDB for retention analysis.",
815
816
  "server.validation.retention.invalidBindingKeyFormat": "Invalid binding key format: {bindingKey}. Expected 'CubeName.dimensionName'",
816
817
  "server.validation.retention.invalidBreakdownDimFormat": "Invalid breakdown dimension format: {dimension}. Expected 'CubeName.dimensionName'",
817
818
  "server.validation.retention.invalidGranularity": "Invalid granularity: {granularity}",
@@ -1427,7 +1428,8 @@ var v = (e, t, n) => {
1427
1428
  "dashboard.desktopRequired": "Desktop view required for editing",
1428
1429
  "dashboard.editModeHint": "Drag • Resize • Auto-save",
1429
1430
  "dashboard.filterSelectionMode": "Filter Selection Mode - Click portlets to toggle '{filterLabel}'",
1430
- "dashboard.filterSelectionEscHint": "• Press ESC to exit",
1431
+ "dashboard.filterSelectionEscHint": "• Press Enter or Esc to save",
1432
+ "dashboard.filterFieldChipHint": "Click to change which field this filter applies to for this portlet",
1431
1433
  "dashboard.editPortlet": "Edit Portlet",
1432
1434
  "dashboard.addNewPortlet": "Add New Portlet",
1433
1435
  "dashboard.updatePortlet": "Update Portlet",
@@ -1468,6 +1470,10 @@ var v = (e, t, n) => {
1468
1470
  "portlet.filterConfig.groupFilter": "{type} group with {count} filter",
1469
1471
  "portlet.filterConfig.groupFilterPlural": "{type} group with {count} filters",
1470
1472
  "portlet.filterConfig.applyFilters": "Apply Filters",
1473
+ "portlet.filterConfig.applyToField": "Apply to field",
1474
+ "portlet.filterConfig.applyToFieldDefault": "Default ({field})",
1475
+ "portlet.filterConfig.mappedTo": "Mapped to {field}",
1476
+ "portlet.filterConfig.mappedFieldMissing": "The mapped field \"{field}\" is no longer available in the schema",
1471
1477
  "textPortlet.editText": "Edit Text",
1472
1478
  "textPortlet.addText": "Add Text",
1473
1479
  "textPortlet.markdownContent": "Markdown Content",
@@ -1524,27 +1530,27 @@ var v = (e, t, n) => {
1524
1530
  "mcp.footer.dimensions": "{count} dimension",
1525
1531
  "mcp.footer.dimensionsPlural": "{count} dimensions"
1526
1532
  }, x = "en-GB", S = b, C = !1;
1527
- function w(e) {
1533
+ function ee(e) {
1528
1534
  C = e;
1529
1535
  }
1530
- function T(e, t) {
1536
+ function w(e, t) {
1531
1537
  let n = S[e];
1532
1538
  return n ? t ? n.replace(/\{(\w+)\}/g, (e, n) => {
1533
1539
  let r = t[n];
1534
1540
  return r === void 0 ? `{${n}}` : String(r);
1535
1541
  }) : n : (C && typeof console < "u" && console.warn(`[drizzle-cube i18n] Missing translation key: "${e}"`), e);
1536
1542
  }
1537
- async function E(e) {
1543
+ async function te(e) {
1538
1544
  if (e === "nl" && (e = "nl-NL"), e === "en-GB" || e === "en") {
1539
1545
  x = "en-GB", S = b;
1540
1546
  return;
1541
1547
  }
1542
1548
  try {
1543
- let t = await v(/* @__PURE__ */ Object.assign({
1549
+ let t = await v(/* #__PURE__ */ Object.assign({
1544
1550
  "./locales/af-ZA.json": () => import("./af-ZA-BTaChuqI.js"),
1545
1551
  "./locales/en-US.json": () => import("./en-US-BE6VoG0o.js"),
1546
1552
  "./locales/en.json": () => Promise.resolve().then(() => y),
1547
- "./locales/nl-NL.json": () => import("./nl-NL-oyr2wENY.js")
1553
+ "./locales/nl-NL.json": () => import("./nl-NL-2zTAWTej.js")
1548
1554
  }), `./locales/${e}.json`, 3);
1549
1555
  x = e, S = {
1550
1556
  ...b,
@@ -1554,39 +1560,39 @@ async function E(e) {
1554
1560
  typeof console < "u" && console.warn(`[drizzle-cube] Failed to load locale "${e}", falling back to en-GB`), x = "en-GB", S = b;
1555
1561
  }
1556
1562
  }
1557
- function D(e, t) {
1563
+ function ne(e, t) {
1558
1564
  x = e, S = {
1559
1565
  ...b,
1560
1566
  ...t
1561
1567
  };
1562
1568
  }
1563
- function O() {
1569
+ function T() {
1564
1570
  return x;
1565
1571
  }
1566
- function k() {
1572
+ function re() {
1567
1573
  return S;
1568
1574
  }
1569
1575
  //#endregion
1570
1576
  //#region src/client/providers/I18nProvider.tsx
1571
- var A = n({
1572
- t: T,
1577
+ var E = n({
1578
+ t: w,
1573
1579
  locale: "en-GB"
1574
1580
  });
1575
- function j({ locale: e = "en-GB", translations: t, children: n }) {
1576
- let [r, i] = l(!1), [o, s] = l(O());
1581
+ function ie({ locale: e = "en-GB", translations: t, children: n }) {
1582
+ let [r, i] = l(!1), [o, s] = l(T());
1577
1583
  return a(() => {
1578
1584
  let n = !1;
1579
1585
  return (async () => {
1580
- await E(e), t && !n && D(e, {
1581
- ...k(),
1586
+ await te(e), t && !n && ne(e, {
1587
+ ...re(),
1582
1588
  ...t
1583
- }), n || (s(O()), i(!0));
1589
+ }), n || (s(T()), i(!0));
1584
1590
  })(), () => {
1585
1591
  n = !0;
1586
1592
  };
1587
- }, [e, t]), /* @__PURE__ */ u(A.Provider, {
1593
+ }, [e, t]), /* @__PURE__ */ u(E.Provider, {
1588
1594
  value: {
1589
- t: T,
1595
+ t: w,
1590
1596
  locale: r ? o : e
1591
1597
  },
1592
1598
  children: n
@@ -1594,84 +1600,16 @@ function j({ locale: e = "en-GB", translations: t, children: n }) {
1594
1600
  }
1595
1601
  //#endregion
1596
1602
  //#region src/client/hooks/useTranslation.ts
1597
- function M(e) {
1598
- let { t, locale: n } = i(A);
1603
+ function D(e) {
1604
+ let { t, locale: n } = i(E);
1599
1605
  return {
1600
1606
  t: r((n, r) => t(e ? `${e}.${n}` : n, r), [t, e]),
1601
1607
  locale: n
1602
1608
  };
1603
1609
  }
1604
1610
  //#endregion
1605
- //#region src/client/utils/chartUtils.ts
1606
- function N(e) {
1607
- return e != null && !isNaN(Number(e));
1608
- }
1609
- function P(e) {
1610
- if (e == null) return null;
1611
- let t = typeof e == "string" ? parseFloat(e) : Number(e);
1612
- return isNaN(t) ? null : t;
1613
- }
1614
- function F(e) {
1615
- if (e == null) return "No data";
1616
- let t = typeof e == "number" ? e : parseFloat(e);
1617
- return isNaN(t) ? String(e) : Number.isInteger(t) ? t.toLocaleString() : parseFloat(t.toFixed(2)).toLocaleString();
1618
- }
1619
- function I(e, t, n) {
1620
- if (e == null) return "No data";
1621
- let r = typeof e == "number" ? e : parseFloat(String(e));
1622
- if (isNaN(r)) return String(e);
1623
- if (!isFinite(r)) return r > 0 ? "∞" : "-∞";
1624
- let i = n || (typeof navigator < "u" ? navigator.language : "en-US");
1625
- if (!t) return F(e);
1626
- let { unit: a, abbreviate: o = !0, decimals: s, customPrefix: c, customSuffix: l } = t, u = r, d = "";
1627
- if (o) {
1628
- let e = Math.abs(r);
1629
- e >= 1e9 ? (u = r / 1e9, d = "B") : e >= 1e6 ? (u = r / 1e6, d = "M") : e >= 1e3 && (u = r / 1e3, d = "K");
1630
- }
1631
- let f = s === void 0 ? Number.isInteger(u) ? 0 : 2 : s;
1632
- switch (a) {
1633
- case "currency": {
1634
- let e = L(i);
1635
- if (o && d) {
1636
- let t = new Intl.NumberFormat(i, {
1637
- style: "currency",
1638
- currency: e,
1639
- minimumFractionDigits: f,
1640
- maximumFractionDigits: f
1641
- }).format(u), n = new Intl.NumberFormat(i, {
1642
- style: "currency",
1643
- currency: e
1644
- }).formatToParts(u);
1645
- return n[n.length - 1]?.type === "currency" ? t.replace(/(\s*[^\d\s]+)$/, d + "$1") : t + d;
1646
- }
1647
- return new Intl.NumberFormat(i, {
1648
- style: "currency",
1649
- currency: e,
1650
- minimumFractionDigits: f,
1651
- maximumFractionDigits: f
1652
- }).format(u);
1653
- }
1654
- case "percent": {
1655
- let e = Math.abs(u) <= 1 && !o ? u * 100 : u;
1656
- return new Intl.NumberFormat(i, {
1657
- minimumFractionDigits: f,
1658
- maximumFractionDigits: f
1659
- }).format(e) + d + "%";
1660
- }
1661
- case "custom": {
1662
- let e = c || "", t = l || "";
1663
- return e + new Intl.NumberFormat(i, {
1664
- minimumFractionDigits: f,
1665
- maximumFractionDigits: f
1666
- }).format(u) + d + t;
1667
- }
1668
- default: return new Intl.NumberFormat(i, {
1669
- minimumFractionDigits: f,
1670
- maximumFractionDigits: f
1671
- }).format(u) + d;
1672
- }
1673
- }
1674
- function L(e) {
1611
+ //#region src/client/utils/axisValueFormatting.ts
1612
+ function ae(e) {
1675
1613
  return {
1676
1614
  US: "USD",
1677
1615
  CA: "CAD",
@@ -1717,40 +1655,162 @@ function L(e) {
1717
1655
  TR: "TRY"
1718
1656
  }[e.split("-")[1]?.toUpperCase()] || "USD";
1719
1657
  }
1720
- function R(e) {
1721
- return (t) => I(t, e);
1658
+ function oe(e, t) {
1659
+ if (!t) return {
1660
+ displayValue: e,
1661
+ abbreviationSuffix: ""
1662
+ };
1663
+ let n = Math.abs(e);
1664
+ return n >= 1e9 ? {
1665
+ displayValue: e / 1e9,
1666
+ abbreviationSuffix: "B"
1667
+ } : n >= 1e6 ? {
1668
+ displayValue: e / 1e6,
1669
+ abbreviationSuffix: "M"
1670
+ } : n >= 1e3 ? {
1671
+ displayValue: e / 1e3,
1672
+ abbreviationSuffix: "K"
1673
+ } : {
1674
+ displayValue: e,
1675
+ abbreviationSuffix: ""
1676
+ };
1722
1677
  }
1723
- function z(e, t) {
1678
+ function se(e) {
1679
+ let { displayValue: t, abbreviate: n, abbreviationSuffix: r, decimals: i, locale: a } = e, o = ae(a);
1680
+ if (n && r) {
1681
+ let e = new Intl.NumberFormat(a, {
1682
+ style: "currency",
1683
+ currency: o,
1684
+ minimumFractionDigits: i,
1685
+ maximumFractionDigits: i
1686
+ }).format(t), n = new Intl.NumberFormat(a, {
1687
+ style: "currency",
1688
+ currency: o
1689
+ }).formatToParts(t);
1690
+ return n[n.length - 1]?.type === "currency" ? e.replace(/(\s*[^\d\s]+)$/, r + "$1") : e + r;
1691
+ }
1692
+ return new Intl.NumberFormat(a, {
1693
+ style: "currency",
1694
+ currency: o,
1695
+ minimumFractionDigits: i,
1696
+ maximumFractionDigits: i
1697
+ }).format(t);
1698
+ }
1699
+ function ce(e) {
1700
+ let { displayValue: t, abbreviate: n, abbreviationSuffix: r, decimals: i, locale: a } = e, o = Math.abs(t) <= 1 && !n ? t * 100 : t;
1701
+ return new Intl.NumberFormat(a, {
1702
+ minimumFractionDigits: i,
1703
+ maximumFractionDigits: i
1704
+ }).format(o) + r + "%";
1705
+ }
1706
+ function le(e) {
1707
+ let { displayValue: t, abbreviationSuffix: n, decimals: r, locale: i, config: a } = e, o = a.customPrefix || "", s = a.customSuffix || "";
1708
+ return o + new Intl.NumberFormat(i, {
1709
+ minimumFractionDigits: r,
1710
+ maximumFractionDigits: r
1711
+ }).format(t) + n + s;
1712
+ }
1713
+ function O(e) {
1714
+ let { displayValue: t, abbreviationSuffix: n, decimals: r, locale: i } = e;
1715
+ return new Intl.NumberFormat(i, {
1716
+ minimumFractionDigits: r,
1717
+ maximumFractionDigits: r
1718
+ }).format(t) + n;
1719
+ }
1720
+ var ue = {
1721
+ currency: se,
1722
+ percent: ce,
1723
+ custom: le,
1724
+ number: O
1725
+ };
1726
+ function de(e) {
1727
+ return ((e.config.unit ? ue[e.config.unit] : void 0) || O)(e);
1728
+ }
1729
+ //#endregion
1730
+ //#region src/client/utils/timeValueFormatting.ts
1731
+ function fe(e) {
1732
+ if (!e.match(/^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}/)) return null;
1733
+ let t = e;
1734
+ e.includes(" ") && (t = e.replace(" ", "T").replace("+00", "Z").replace(/\+\d{2}:\d{2}$/, "Z")), !t.endsWith("Z") && !t.includes("+") && (t += "Z");
1735
+ let n = new Date(t);
1736
+ return isNaN(n.getTime()) ? null : {
1737
+ date: n,
1738
+ year: n.getUTCFullYear(),
1739
+ month: String(n.getUTCMonth() + 1).padStart(2, "0"),
1740
+ day: String(n.getUTCDate()).padStart(2, "0"),
1741
+ hours: n.getUTCHours(),
1742
+ minutes: n.getUTCMinutes()
1743
+ };
1744
+ }
1745
+ function pe(e, t) {
1746
+ let { date: n, year: r, month: i, day: a, hours: o, minutes: s } = e;
1747
+ switch (t.toLowerCase()) {
1748
+ case "year": return `${r}`;
1749
+ case "quarter": return `${r}-Q${Math.floor(n.getUTCMonth() / 3) + 1}`;
1750
+ case "month": return `${r}-${i}`;
1751
+ case "week": return `${r}-${i}-${a}`;
1752
+ case "day": return `${r}-${i}-${a}`;
1753
+ case "hour": return `${r}-${i}-${a} ${String(o).padStart(2, "0")}:00`;
1754
+ case "minute": return `${r}-${i}-${a} ${String(o).padStart(2, "0")}:${String(s).padStart(2, "0")}`;
1755
+ default: return null;
1756
+ }
1757
+ }
1758
+ function me(e) {
1759
+ let { date: t, year: n, month: r, day: i, hours: a, minutes: o } = e, s = t.getUTCSeconds(), c = t.getUTCMilliseconds(), l = a === 0 && o === 0 && s === 0 && c === 0;
1760
+ return i === "01" && l ? r === "01" || r === "04" || r === "07" || r === "10" ? `${n}-Q${Math.floor(t.getUTCMonth() / 3) + 1}` : `${n}-${r}` : l ? `${n}-${r}-${i}` : o === 0 && s === 0 && c === 0 ? `${n}-${r}-${i} ${String(a).padStart(2, "0")}:00` : `${n}-${r}-${i} ${String(a).padStart(2, "0")}:${String(o).padStart(2, "0")}`;
1761
+ }
1762
+ //#endregion
1763
+ //#region src/client/utils/chartUtils.ts
1764
+ function k(e) {
1765
+ return e != null && !isNaN(Number(e));
1766
+ }
1767
+ function A(e) {
1768
+ if (e == null) return null;
1769
+ let t = typeof e == "string" ? parseFloat(e) : Number(e);
1770
+ return isNaN(t) ? null : t;
1771
+ }
1772
+ function j(e) {
1773
+ if (e == null) return "No data";
1774
+ let t = typeof e == "number" ? e : parseFloat(e);
1775
+ return isNaN(t) ? String(e) : Number.isInteger(t) ? t.toLocaleString() : parseFloat(t.toFixed(2)).toLocaleString();
1776
+ }
1777
+ function M(e, t, n) {
1778
+ if (e == null) return "No data";
1779
+ let r = typeof e == "number" ? e : parseFloat(String(e));
1780
+ if (isNaN(r)) return String(e);
1781
+ if (!isFinite(r)) return r > 0 ? "∞" : "-∞";
1782
+ let i = n || (typeof navigator < "u" ? navigator.language : "en-US");
1783
+ if (!t) return j(e);
1784
+ let { abbreviate: a = !0, decimals: o } = t, { displayValue: s, abbreviationSuffix: c } = oe(r, a);
1785
+ return de({
1786
+ displayValue: s,
1787
+ abbreviate: a,
1788
+ abbreviationSuffix: c,
1789
+ decimals: o === void 0 ? Number.isInteger(s) ? 0 : 2 : o,
1790
+ locale: i,
1791
+ config: t
1792
+ });
1793
+ }
1794
+ function he(e) {
1795
+ return (t) => M(t, e);
1796
+ }
1797
+ function N(e, t) {
1724
1798
  return t[e] || e;
1725
1799
  }
1726
- function B(e, t) {
1727
- return e.map((e) => z(e, t));
1800
+ function ge(e, t) {
1801
+ return e.map((e) => N(e, t));
1728
1802
  }
1729
- function V(e, t) {
1803
+ function P(e, t) {
1730
1804
  if (!e) return "Unknown";
1731
- let n = String(e);
1732
- if (n.match(/^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}/)) {
1733
- let e = n;
1734
- n.includes(" ") && (e = n.replace(" ", "T").replace("+00", "Z").replace(/\+\d{2}:\d{2}$/, "Z")), !e.endsWith("Z") && !e.includes("+") && (e += "Z");
1735
- let r = new Date(e);
1736
- if (isNaN(r.getTime())) return n;
1737
- let i = r.getUTCFullYear(), a = String(r.getUTCMonth() + 1).padStart(2, "0"), o = String(r.getUTCDate()).padStart(2, "0"), s = r.getUTCHours(), c = r.getUTCMinutes();
1738
- if (t) switch (t.toLowerCase()) {
1739
- case "year": return `${i}`;
1740
- case "quarter": return `${i}-Q${Math.floor(r.getUTCMonth() / 3) + 1}`;
1741
- case "month": return `${i}-${a}`;
1742
- case "week": return `${i}-${a}-${o}`;
1743
- case "day": return `${i}-${a}-${o}`;
1744
- case "hour": return `${i}-${a}-${o} ${String(s).padStart(2, "0")}:00`;
1745
- case "minute": return `${i}-${a}-${o} ${String(s).padStart(2, "0")}:${String(c).padStart(2, "0")}`;
1746
- default: break;
1747
- }
1748
- let l = r.getUTCSeconds(), u = r.getUTCMilliseconds();
1749
- return o === "01" && s === 0 && c === 0 && l === 0 && u === 0 ? a === "01" || a === "04" || a === "07" || a === "10" ? `${i}-Q${Math.floor(r.getUTCMonth() / 3) + 1}` : `${i}-${a}` : s === 0 && c === 0 && l === 0 && u === 0 ? `${i}-${a}-${o}` : c === 0 && l === 0 && u === 0 ? `${i}-${a}-${o} ${String(s).padStart(2, "0")}:00` : `${i}-${a}-${o} ${String(s).padStart(2, "0")}:${String(c).padStart(2, "0")}`;
1805
+ let n = String(e), r = fe(n);
1806
+ if (!r) return n;
1807
+ if (t) {
1808
+ let e = pe(r, t);
1809
+ if (e !== null) return e;
1750
1810
  }
1751
- return n;
1811
+ return me(r);
1752
1812
  }
1753
- function H(e, t) {
1813
+ function F(e, t) {
1754
1814
  try {
1755
1815
  if (e?.timeDimensions) {
1756
1816
  let n = e.timeDimensions.find((e) => t === e.dimension || t.startsWith(e.dimension.replace(".", "_")) || t === `${e.dimension}_${e.granularity}`);
@@ -1775,18 +1835,18 @@ function H(e, t) {
1775
1835
  return;
1776
1836
  }
1777
1837
  }
1778
- function U(e, t, n, r, i = (e) => e) {
1838
+ function I(e, t, n, r, i = (e) => e) {
1779
1839
  if (!e || e.length === 0) return [];
1780
- let a = H(r, t);
1840
+ let a = F(r, t);
1781
1841
  return e.map((e) => {
1782
- let r = { name: V(e[t], a) || e[t] || "Unknown" };
1842
+ let r = { name: P(e[t], a) || e[t] || "Unknown" };
1783
1843
  return n.forEach((t) => {
1784
1844
  let n = i(t);
1785
- n === "__proto__" || n === "constructor" || n === "prototype" || (r[n] = P(e[t]));
1845
+ n === "__proto__" || n === "constructor" || n === "prototype" || (r[n] = A(e[t]));
1786
1846
  }), r;
1787
1847
  });
1788
1848
  }
1789
- function W(e, t, n, r, i, a = (e) => e) {
1849
+ function L(e, t, n, r, i, a = (e) => e) {
1790
1850
  if (!e || e.length === 0) return {
1791
1851
  data: [],
1792
1852
  seriesKeys: [],
@@ -1796,11 +1856,11 @@ function W(e, t, n, r, i, a = (e) => e) {
1796
1856
  if (u.length > 0) {
1797
1857
  let n = {};
1798
1858
  return e.forEach((e) => {
1799
- let i = H(r, t), o = V(e[t], i) || e[t] || "Unknown";
1859
+ let i = F(r, t), o = P(e[t], i) || e[t] || "Unknown";
1800
1860
  o === "__proto__" || o === "constructor" || o === "prototype" || (n[o] || (n[o] = { name: String(o) }), l.forEach((t) => {
1801
1861
  let r = a(t);
1802
1862
  if (r === "__proto__" || r === "constructor" || r === "prototype") return;
1803
- let i = P(e[t]);
1863
+ let i = A(e[t]);
1804
1864
  if (i !== null) {
1805
1865
  let e = n[o][r];
1806
1866
  n[o][r] = e == null ? i : e + i;
@@ -1811,7 +1871,7 @@ function W(e, t, n, r, i, a = (e) => e) {
1811
1871
  let t = String(r), i = l[0] || c.find((e) => e.includes("totalCost") || e.includes("count") || e.includes("sum")) || c[0];
1812
1872
  if (i) {
1813
1873
  if (t === "__proto__" || t === "constructor" || t === "prototype") return;
1814
- let r = P(e[i]);
1874
+ let r = A(e[i]);
1815
1875
  if (r !== null) {
1816
1876
  let e = n[o][t];
1817
1877
  n[o][t] = e == null ? r : e + r;
@@ -1829,67 +1889,67 @@ function W(e, t, n, r, i, a = (e) => e) {
1829
1889
  };
1830
1890
  }
1831
1891
  return {
1832
- data: U(e, t, n, r, a),
1892
+ data: I(e, t, n, r, a),
1833
1893
  seriesKeys: n.map((e) => a(e)),
1834
1894
  hasDimensions: !1
1835
1895
  };
1836
1896
  }
1837
1897
  //#endregion
1838
1898
  //#region src/client/hooks/useCubeFieldLabel.ts
1839
- function G() {
1899
+ function R() {
1840
1900
  let e = i(g);
1841
1901
  if (!e) throw Error("useCubeFieldLabel must be used within CubeProvider");
1842
1902
  return s(() => e.getFieldLabel, [e.getFieldLabel]);
1843
1903
  }
1844
1904
  //#endregion
1845
1905
  //#region src/client/theme/index.ts
1846
- function K(e) {
1906
+ function _e(e) {
1847
1907
  return typeof window > "u" ? "" : getComputedStyle(document.documentElement).getPropertyValue(`--dc-${e}`).trim();
1848
1908
  }
1849
- function q(e, t) {
1909
+ function z(e, t) {
1850
1910
  typeof window > "u" || document.documentElement.style.setProperty(`--dc-${e}`, t);
1851
1911
  }
1852
- function J(e) {
1912
+ function ve(e) {
1853
1913
  typeof window > "u" || Object.entries(e.colors).forEach(([e, t]) => {
1854
- t && q(e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`), t);
1914
+ t && z(e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`), t);
1855
1915
  });
1856
1916
  }
1857
- function Y() {
1917
+ function ye() {
1858
1918
  if (typeof window > "u") return;
1859
1919
  let e = document.documentElement.style;
1860
1920
  Array.from(e).forEach((t) => {
1861
1921
  t.startsWith("--dc-") && e.removeProperty(t);
1862
1922
  });
1863
1923
  }
1864
- function X() {
1924
+ function B() {
1865
1925
  if (typeof window > "u") return "light";
1866
1926
  let e = localStorage.getItem("theme");
1867
1927
  if (e === "dark" || e === "neon" || e === "light") return e;
1868
1928
  let t = document.documentElement.getAttribute("data-theme");
1869
1929
  return t === "dark" || t === "neon" ? t : document.documentElement.classList.contains("dark") || document.body.classList.contains("dark") ? "dark" : document.documentElement.classList.contains("neon") || document.body.classList.contains("neon") ? "neon" : window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
1870
1930
  }
1871
- function ee(e) {
1931
+ function be(e) {
1872
1932
  typeof window > "u" || (document.documentElement.classList.remove("dark", "neon"), document.documentElement.setAttribute("data-theme", e), (e === "dark" || e === "neon") && document.documentElement.classList.add(e), localStorage.setItem("theme", e));
1873
1933
  }
1874
- function te() {
1875
- let e = X();
1934
+ function xe() {
1935
+ let e = B();
1876
1936
  return e === "dark" || e === "neon";
1877
1937
  }
1878
- function Z(e) {
1938
+ function V(e) {
1879
1939
  if (typeof window > "u") return () => {};
1880
1940
  let t = new MutationObserver(() => {
1881
- e(X());
1941
+ e(B());
1882
1942
  });
1883
1943
  t.observe(document.documentElement, {
1884
1944
  attributes: !0,
1885
1945
  attributeFilter: ["class", "data-theme"]
1886
1946
  });
1887
- let n = window.matchMedia("(prefers-color-scheme: dark)"), r = () => e(X());
1947
+ let n = window.matchMedia("(prefers-color-scheme: dark)"), r = () => e(B());
1888
1948
  return n.addEventListener("change", r), () => {
1889
1949
  t.disconnect(), n.removeEventListener("change", r);
1890
1950
  };
1891
1951
  }
1892
- var ne = {
1952
+ var Se = {
1893
1953
  light: {
1894
1954
  name: "light",
1895
1955
  colors: {
@@ -1937,7 +1997,7 @@ var ne = {
1937
1997
  danger: "#ff1493"
1938
1998
  }
1939
1999
  }
1940
- }, re = [
2000
+ }, Ce = [
1941
2001
  "#3b82f6",
1942
2002
  "#10b981",
1943
2003
  "#f59e0b",
@@ -1946,453 +2006,541 @@ var ne = {
1946
2006
  "#f97316",
1947
2007
  "#06b6d4",
1948
2008
  "#84cc16"
1949
- ], Q = [
2009
+ ], H = [
1950
2010
  "#440154",
1951
2011
  "#414487",
1952
2012
  "#2a788e",
1953
2013
  "#22a884",
1954
2014
  "#7ad151",
1955
2015
  "#fde725"
1956
- ], ie = "#10b981", ae = "#ef4444", $ = {
2016
+ ], we = "#10b981", Te = "#ef4444", U = {
1957
2017
  top: 5,
1958
2018
  right: 30,
1959
2019
  left: 20,
1960
2020
  bottom: 5
1961
- }, oe = {
2021
+ }, Ee = {
1962
2022
  top: 5,
1963
2023
  right: 30,
1964
2024
  left: 20,
1965
2025
  bottom: 60
1966
- }, se = /* @__PURE__ */ e({ default: () => ce }), ce = t.memo(function({ data: e, chartConfig: t, displayConfig: n = {}, queryObject: i, height: g = "100%", colorPalette: _, onDataPointClick: v, drillEnabled: y }) {
1967
- let { t: b } = M(), x = c(null), S = c(null), [C, w] = l({
2026
+ };
2027
+ //#endregion
2028
+ //#region src/client/components/charts/useChartDimensions.ts
2029
+ function W() {
2030
+ let e = c(null), [t, n] = l({
1968
2031
  width: 0,
1969
2032
  height: 0
1970
- }), [T, E] = l(!1), [D, O] = l("light"), k = G();
1971
- a(() => (O(X()), Z((e) => {
1972
- O(e);
1973
- })), []);
1974
- let A = s(() => ({
1975
- showTooltip: n?.showTooltip ?? !0,
1976
- showLabels: n?.showLabels ?? !0,
1977
- fitToWidth: n?.fitToWidth ?? !1
1978
- }), [
1979
- n?.showTooltip,
1980
- n?.showLabels,
1981
- n?.fitToWidth
1982
- ]);
1983
- o(() => {
1984
- let e = 0, t, n, r = () => {
1985
- if (S.current) {
1986
- let { width: e, height: t } = S.current.getBoundingClientRect();
1987
- if (e > 0 && t > 0) return w({
1988
- width: e,
1989
- height: t
1990
- }), E(!0), !0;
2033
+ }), [r, i] = l(!1);
2034
+ return o(() => {
2035
+ let t = 0, r, a, o = () => {
2036
+ if (e.current) {
2037
+ let { width: t, height: r } = e.current.getBoundingClientRect();
2038
+ if (t > 0 && r > 0) return n({
2039
+ width: t,
2040
+ height: r
2041
+ }), i(!0), !0;
1991
2042
  }
1992
2043
  return !1;
1993
2044
  };
1994
- if (!r() && e < 10) {
1995
- let i = () => {
1996
- !r() && e < 10 && (e++, n = setTimeout(() => {
1997
- t = requestAnimationFrame(i);
1998
- }, 50 * e));
2045
+ if (!o() && t < 10) {
2046
+ let e = () => {
2047
+ !o() && t < 10 && (t++, a = setTimeout(() => {
2048
+ r = requestAnimationFrame(e);
2049
+ }, 50 * t));
1999
2050
  };
2000
- t = requestAnimationFrame(i);
2051
+ r = requestAnimationFrame(e);
2001
2052
  }
2002
2053
  return () => {
2003
- t && cancelAnimationFrame(t), n && clearTimeout(n);
2054
+ r && cancelAnimationFrame(r), a && clearTimeout(a);
2004
2055
  };
2005
2056
  }, []), a(() => {
2006
- let e = null, t = () => {
2007
- if (S.current) {
2008
- let { width: e, height: t } = S.current.getBoundingClientRect();
2009
- e > 0 && t > 0 && (w({
2010
- width: e,
2011
- height: t
2012
- }), T || E(!0));
2057
+ let t = null, r = () => {
2058
+ if (e.current) {
2059
+ let { width: t, height: r } = e.current.getBoundingClientRect();
2060
+ t > 0 && r > 0 && (n({
2061
+ width: t,
2062
+ height: r
2063
+ }), i((e) => e || !0));
2013
2064
  }
2014
2065
  };
2015
- return S.current && (e = new ResizeObserver(() => t()), e.observe(S.current), t()), window.addEventListener("resize", t), () => {
2016
- e && e.disconnect(), window.removeEventListener("resize", t);
2066
+ return e.current && (t = new ResizeObserver(() => r()), t.observe(e.current), r()), window.addEventListener("resize", r), () => {
2067
+ t && t.disconnect(), window.removeEventListener("resize", r);
2017
2068
  };
2018
- }, [T]);
2019
- let j = (e) => Math.floor(e.getMonth() / 3) + 1, N = (e) => e.getMonth() % 3 + 1, P = (e) => {
2020
- let t = e.getDate();
2021
- return Math.floor((t - 1) / 7) + 1;
2022
- }, F = r((e) => {
2023
- switch (e?.toLowerCase()) {
2024
- case "year": return null;
2025
- case "quarter": return {
2026
- extractX: (e) => e.getFullYear(),
2027
- extractY: (e) => j(e) - 1,
2028
- xLabels: [],
2029
- yLabels: [
2030
- "Q1",
2031
- "Q2",
2032
- "Q3",
2033
- "Q4"
2034
- ],
2035
- xFormat: (e) => `'${e.toString().slice(-2)}`,
2036
- yFormat: (e) => [
2037
- "Q1",
2038
- "Q2",
2039
- "Q3",
2040
- "Q4"
2041
- ][e] || "",
2042
- cellWidth: 16,
2043
- cellHeight: 16
2044
- };
2045
- case "month": return {
2046
- extractX: (e) => {
2047
- let t = e.getFullYear(), n = j(e);
2048
- return t * 10 + n;
2049
- },
2050
- extractY: (e) => N(e) - 1,
2051
- xLabels: [],
2052
- yLabels: [
2053
- "Month 1",
2054
- "Month 2",
2055
- "Month 3"
2056
- ],
2057
- xFormat: (e) => `Q${e % 10}`,
2058
- yFormat: (e) => [
2059
- "Month 1",
2060
- "Month 2",
2061
- "Month 3"
2062
- ][e] || "",
2063
- cellWidth: 16,
2064
- cellHeight: 16,
2065
- hasHierarchicalLabels: !0,
2066
- getYearFromX: (e) => Math.floor(e / 10)
2067
- };
2068
- case "week": return {
2069
- extractX: (e) => {
2070
- let t = e.getFullYear(), n = e.getMonth() + 1;
2071
- return t * 100 + n;
2072
- },
2073
- extractY: (e) => P(e) - 1,
2074
- xLabels: [],
2075
- yLabels: [
2076
- "Week 1",
2077
- "Week 2",
2078
- "Week 3",
2079
- "Week 4",
2080
- "Week 5"
2081
- ],
2082
- xFormat: (e) => [
2083
- "J",
2084
- "F",
2085
- "M",
2086
- "A",
2087
- "M",
2088
- "J",
2089
- "J",
2090
- "A",
2091
- "S",
2092
- "O",
2093
- "N",
2094
- "D"
2095
- ][e % 100 - 1] || "",
2096
- yFormat: (e) => [
2097
- "Week 1",
2098
- "Week 2",
2099
- "Week 3",
2100
- "Week 4",
2101
- "Week 5"
2102
- ][e] || "",
2103
- cellWidth: 16,
2104
- cellHeight: 16,
2105
- hasHierarchicalLabels: !0,
2106
- getYearFromX: (e) => Math.floor(e / 100)
2107
- };
2108
- case "day": return {
2109
- extractX: (e) => {
2110
- let { year: t, week: n } = I(e);
2111
- return t * 100 + n;
2112
- },
2113
- extractY: (e) => e.getDay(),
2114
- xLabels: [],
2115
- yLabels: [
2116
- "Sun",
2117
- "Mon",
2118
- "Tue",
2119
- "Wed",
2120
- "Thu",
2121
- "Fri",
2122
- "Sat"
2123
- ],
2124
- xFormat: (e) => `${e % 100}`,
2125
- yFormat: (e) => [
2126
- "Sun",
2127
- "Mon",
2128
- "Tue",
2129
- "Wed",
2130
- "Thu",
2131
- "Fri",
2132
- "Sat"
2133
- ][e] || "",
2134
- cellWidth: 16,
2135
- cellHeight: 16,
2136
- hasHierarchicalLabels: !0,
2137
- getYearFromX: (e) => Math.floor(e / 100)
2138
- };
2139
- case "hour": return {
2140
- extractX: (e) => {
2141
- let t = e.getFullYear(), n = e.getMonth() + 1, r = e.getDate();
2142
- return t * 1e4 + n * 100 + r;
2143
- },
2144
- extractY: (e) => Math.floor(e.getHours() / 3),
2145
- xLabels: [],
2146
- yLabels: [
2147
- "00-03",
2148
- "03-06",
2149
- "06-09",
2150
- "09-12",
2151
- "12-15",
2152
- "15-18",
2153
- "18-21",
2154
- "21-00"
2155
- ],
2156
- xFormat: (e) => `${e % 100}`,
2157
- yFormat: (e) => [
2158
- "00-03",
2159
- "03-06",
2160
- "06-09",
2161
- "09-12",
2162
- "12-15",
2163
- "15-18",
2164
- "18-21",
2165
- "21-00"
2166
- ][e] || "",
2167
- cellWidth: 16,
2168
- cellHeight: 16,
2169
- hasHierarchicalLabels: !0,
2170
- getYearFromX: (e) => Math.floor(e / 100)
2171
- };
2172
- default: return null;
2173
- }
2174
- }, []), I = (e) => {
2175
- let t = new Date(Date.UTC(e.getFullYear(), e.getMonth(), e.getDate())), n = t.getUTCDay() || 7;
2176
- t.setUTCDate(t.getUTCDate() + 4 - n);
2177
- let r = t.getUTCFullYear(), i = new Date(Date.UTC(r, 0, 1));
2069
+ }, []), {
2070
+ containerRef: e,
2071
+ dimensions: t,
2072
+ dimensionsReady: r
2073
+ };
2074
+ }
2075
+ //#endregion
2076
+ //#region src/client/components/charts/BubbleChart.helpers.ts
2077
+ function De(e) {
2078
+ return {
2079
+ showLegend: e?.showLegend ?? !0,
2080
+ showGrid: e?.showGrid ?? !0,
2081
+ showTooltip: e?.showTooltip ?? !0,
2082
+ minBubbleSize: e?.minBubbleSize ?? 5,
2083
+ maxBubbleSize: e?.maxBubbleSize ?? 50,
2084
+ bubbleOpacity: e?.bubbleOpacity ?? .7,
2085
+ xAxisFormat: e?.xAxisFormat,
2086
+ leftYAxisFormat: e?.leftYAxisFormat
2087
+ };
2088
+ }
2089
+ function Oe(e) {
2090
+ if (!e?.xAxis || !e?.yAxis || !e?.series) return null;
2091
+ let t = Array.isArray(e.xAxis) ? e.xAxis[0] : e.xAxis, n = Array.isArray(e.yAxis) ? e.yAxis[0] : e.yAxis, r = Array.isArray(e.series) ? e.series[0] : e.series, i = (Array.isArray(e.sizeField) ? e.sizeField[0] : e.sizeField) || n;
2092
+ return !t || !n || !r || !i ? null : {
2093
+ xAxisField: t,
2094
+ yAxisField: n,
2095
+ seriesField: r,
2096
+ sizeFieldName: i,
2097
+ colorFieldName: Array.isArray(e.colorField) ? e.colorField[0] : e.colorField
2098
+ };
2099
+ }
2100
+ function ke(e, t, n) {
2101
+ if (t && e) {
2102
+ let t = String(e), r;
2103
+ if (t.match(/^\d{4}-\d{2}-\d{2}[T ]/)) {
2104
+ let e = t;
2105
+ t.includes(" ") && (e = t.replace(" ", "T").replace("+00", "Z").replace(/\+\d{2}:\d{2}$/, "Z")), !e.endsWith("Z") && !e.includes("+") && (e += "Z"), r = new Date(e);
2106
+ } else r = new Date(t);
2178
2107
  return {
2179
- year: r,
2180
- week: Math.ceil(((t.getTime() - i.getTime()) / 864e5 + 1) / 7)
2108
+ xNum: isNaN(r.getTime()) ? parseFloat(t) : r.getTime(),
2109
+ xLabel: P(e, n)
2181
2110
  };
2111
+ }
2112
+ let r = P(e, n) || e;
2113
+ return {
2114
+ xNum: typeof r == "string" ? parseFloat(r) : r,
2115
+ xLabel: String(r)
2182
2116
  };
2183
- if (a(() => {
2184
- if (!e || e.length === 0 || !x.current || !T || C.width === 0 || (h(x.current).selectAll("*").remove(), !t?.dateField || !t?.valueField)) return;
2185
- let n = Array.isArray(t.dateField) ? t.dateField[0] : t.dateField, r = Array.isArray(t.valueField) ? t.valueField[0] : t.valueField;
2186
- if (!n || !r) return;
2187
- let a = (() => {
2188
- if (!i?.timeDimensions || i.timeDimensions.length === 0) return "day";
2189
- let e = i.timeDimensions.find((e) => e.dimension === n || e.dimension.includes(n));
2190
- if (e && e.granularity) return e.granularity;
2191
- let t = i.timeDimensions[0];
2192
- return t && t.granularity ? t.granularity : "day";
2193
- })(), o = F(a);
2194
- if (!o) return;
2195
- let s = e.map((e) => {
2196
- let t = e[n], i = typeof e[r] == "string" ? parseFloat(e[r]) : e[r] || 0, s;
2197
- if (typeof t == "string") {
2198
- let e = t;
2199
- t.includes(" ") && (e = t.replace(" ", "T").replace("+00", "Z").replace(/\+\d{2}:\d{2}$/, "Z")), !e.endsWith("Z") && !e.includes("+") && (e += "Z"), s = new Date(e);
2200
- } else s = new Date(t);
2201
- return isNaN(s.getTime()) ? null : {
2202
- x: o.extractX(s),
2203
- y: o.extractY(s),
2204
- value: i,
2205
- date: s,
2206
- label: V(t, a)
2207
- };
2208
- }).filter((e) => e !== null);
2209
- if (s.length === 0) return;
2210
- let c = f(s, (e) => e.y) || 0, l = p(s, (e) => e.y) || 0, u = [...new Set(s.map((e) => e.x))].sort(), d = u.length * o.cellWidth + (u.length - 1) * 4, g = (c - l + 1) * o.cellHeight + (c - l) * 4, b = {
2211
- ...$,
2212
- left: 60,
2213
- bottom: 10,
2214
- top: o.hasHierarchicalLabels ? 40 : 25,
2215
- right: 10
2216
- }, S = C.width - b.left - b.right, w = C.height - b.top - b.bottom, E, O;
2217
- if (A.fitToWidth) {
2218
- let e = S / d, t = w / g, n = Math.min(e, t);
2219
- E = o.cellWidth * n, O = o.cellHeight * n;
2220
- } else {
2221
- let e = {
2222
- width: 16,
2223
- height: 16
2224
- }, t = S / d, n = w / g, r = Math.min(t, n);
2225
- E = Math.max(e.width, Math.min(24, o.cellWidth * r)), O = Math.max(e.height, Math.min(24, o.cellHeight * r)), a === "week" && E < e.width && (E = e.width);
2117
+ }
2118
+ function Ae(e, t, n) {
2119
+ let { xAxisField: r, yAxisField: i, sizeFieldName: a, seriesField: o, colorFieldName: s } = t, c = F(n, r), l = n?.timeDimensions?.some((e) => e.dimension === r) || !1;
2120
+ return e.map((e) => {
2121
+ let { xNum: t, xLabel: n } = ke(e[r], l, c), u = A(e[i]), d = A(e[a]), f = e[o];
2122
+ return {
2123
+ x: t,
2124
+ xLabel: n,
2125
+ y: u,
2126
+ size: d === null ? 0 : Math.abs(d),
2127
+ color: s ? e[s] : f,
2128
+ series: f,
2129
+ label: `${f || "Unknown"}`,
2130
+ isValid: k(t) && u !== null && d !== null && d > 0
2131
+ };
2132
+ }).filter((e) => e.isValid && e.size > 0).map(({ isValid: e, ...t }) => t);
2133
+ }
2134
+ function G(e, t) {
2135
+ return getComputedStyle(document.documentElement).getPropertyValue(e).trim() || t;
2136
+ }
2137
+ function je(e) {
2138
+ return {
2139
+ textColor: e ? G("--dc-text-muted", "#cbd5e1") : G("--dc-text-secondary", "#374151"),
2140
+ gridColor: e ? G("--dc-border", "#475569") : "#9ca3af"
2141
+ };
2142
+ }
2143
+ //#endregion
2144
+ //#region src/client/components/charts/ActivityGridChart.helpers.ts
2145
+ var K = (e) => Math.floor(e.getMonth() / 3) + 1, Me = (e) => e.getMonth() % 3 + 1, Ne = (e) => Math.floor((e.getDate() - 1) / 7) + 1, Pe = [
2146
+ "J",
2147
+ "F",
2148
+ "M",
2149
+ "A",
2150
+ "M",
2151
+ "J",
2152
+ "J",
2153
+ "A",
2154
+ "S",
2155
+ "O",
2156
+ "N",
2157
+ "D"
2158
+ ], q = [
2159
+ "Q1",
2160
+ "Q2",
2161
+ "Q3",
2162
+ "Q4"
2163
+ ], J = [
2164
+ "Month 1",
2165
+ "Month 2",
2166
+ "Month 3"
2167
+ ], Y = [
2168
+ "Week 1",
2169
+ "Week 2",
2170
+ "Week 3",
2171
+ "Week 4",
2172
+ "Week 5"
2173
+ ], X = [
2174
+ "Sun",
2175
+ "Mon",
2176
+ "Tue",
2177
+ "Wed",
2178
+ "Thu",
2179
+ "Fri",
2180
+ "Sat"
2181
+ ], Z = [
2182
+ "00-03",
2183
+ "03-06",
2184
+ "06-09",
2185
+ "09-12",
2186
+ "12-15",
2187
+ "15-18",
2188
+ "18-21",
2189
+ "21-00"
2190
+ ];
2191
+ function Fe(e) {
2192
+ let t = new Date(Date.UTC(e.getFullYear(), e.getMonth(), e.getDate())), n = t.getUTCDay() || 7;
2193
+ t.setUTCDate(t.getUTCDate() + 4 - n);
2194
+ let r = t.getUTCFullYear(), i = new Date(Date.UTC(r, 0, 1));
2195
+ return {
2196
+ year: r,
2197
+ week: Math.ceil(((t.getTime() - i.getTime()) / 864e5 + 1) / 7)
2198
+ };
2199
+ }
2200
+ var Ie = {
2201
+ quarter: {
2202
+ extractX: (e) => e.getFullYear(),
2203
+ extractY: (e) => K(e) - 1,
2204
+ xLabels: [],
2205
+ yLabels: q,
2206
+ xFormat: (e) => `'${e.toString().slice(-2)}`,
2207
+ yFormat: (e) => q[e] || "",
2208
+ cellWidth: 16,
2209
+ cellHeight: 16
2210
+ },
2211
+ month: {
2212
+ extractX: (e) => e.getFullYear() * 10 + K(e),
2213
+ extractY: (e) => Me(e) - 1,
2214
+ xLabels: [],
2215
+ yLabels: J,
2216
+ xFormat: (e) => `Q${e % 10}`,
2217
+ yFormat: (e) => J[e] || "",
2218
+ cellWidth: 16,
2219
+ cellHeight: 16,
2220
+ hasHierarchicalLabels: !0,
2221
+ getYearFromX: (e) => Math.floor(e / 10)
2222
+ },
2223
+ week: {
2224
+ extractX: (e) => e.getFullYear() * 100 + (e.getMonth() + 1),
2225
+ extractY: (e) => Ne(e) - 1,
2226
+ xLabels: [],
2227
+ yLabels: Y,
2228
+ xFormat: (e) => Pe[e % 100 - 1] || "",
2229
+ yFormat: (e) => Y[e] || "",
2230
+ cellWidth: 16,
2231
+ cellHeight: 16,
2232
+ hasHierarchicalLabels: !0,
2233
+ getYearFromX: (e) => Math.floor(e / 100)
2234
+ },
2235
+ day: {
2236
+ extractX: (e) => {
2237
+ let { year: t, week: n } = Fe(e);
2238
+ return t * 100 + n;
2239
+ },
2240
+ extractY: (e) => e.getDay(),
2241
+ xLabels: [],
2242
+ yLabels: X,
2243
+ xFormat: (e) => `${e % 100}`,
2244
+ yFormat: (e) => X[e] || "",
2245
+ cellWidth: 16,
2246
+ cellHeight: 16,
2247
+ hasHierarchicalLabels: !0,
2248
+ getYearFromX: (e) => Math.floor(e / 100)
2249
+ },
2250
+ hour: {
2251
+ extractX: (e) => e.getFullYear() * 1e4 + (e.getMonth() + 1) * 100 + e.getDate(),
2252
+ extractY: (e) => Math.floor(e.getHours() / 3),
2253
+ xLabels: [],
2254
+ yLabels: Z,
2255
+ xFormat: (e) => `${e % 100}`,
2256
+ yFormat: (e) => Z[e] || "",
2257
+ cellWidth: 16,
2258
+ cellHeight: 16,
2259
+ hasHierarchicalLabels: !0,
2260
+ getYearFromX: (e) => Math.floor(e / 100)
2261
+ }
2262
+ };
2263
+ function Le(e) {
2264
+ return Ie[e?.toLowerCase()] ?? null;
2265
+ }
2266
+ function Q(e) {
2267
+ if (e) return Array.isArray(e) ? e[0] : e;
2268
+ }
2269
+ function Re(e, t) {
2270
+ let n = e?.timeDimensions;
2271
+ if (!n || n.length === 0) return "day";
2272
+ let r = n.find((e) => e.dimension === t || e.dimension.includes(t));
2273
+ if (r && r.granularity) return r.granularity;
2274
+ let i = n[0];
2275
+ return i && i.granularity ? i.granularity : "day";
2276
+ }
2277
+ function ze(e) {
2278
+ if (typeof e == "string") {
2279
+ let t = e;
2280
+ return e.includes(" ") && (t = e.replace(" ", "T").replace("+00", "Z").replace(/\+\d{2}:\d{2}$/, "Z")), !t.endsWith("Z") && !t.includes("+") && (t += "Z"), new Date(t);
2281
+ }
2282
+ return new Date(e);
2283
+ }
2284
+ function Be(e, t, n, r, i) {
2285
+ return e.map((e) => {
2286
+ let a = e[t], o = typeof e[n] == "string" ? parseFloat(e[n]) : e[n] || 0, s = ze(a);
2287
+ return isNaN(s.getTime()) ? null : {
2288
+ x: r.extractX(s),
2289
+ y: r.extractY(s),
2290
+ value: o,
2291
+ date: s,
2292
+ label: P(a, i)
2293
+ };
2294
+ }).filter((e) => e !== null);
2295
+ }
2296
+ //#endregion
2297
+ //#region src/client/components/charts/ActivityGridChart.render.ts
2298
+ var Ve = [
2299
+ "Jan",
2300
+ "Feb",
2301
+ "Mar",
2302
+ "Apr",
2303
+ "May",
2304
+ "Jun",
2305
+ "Jul",
2306
+ "Aug",
2307
+ "Sep",
2308
+ "Oct",
2309
+ "Nov",
2310
+ "Dec"
2311
+ ];
2312
+ function $(e) {
2313
+ return {
2314
+ textColor: e ? G("--dc-text-muted", "#cbd5e1") : G("--dc-text-secondary", "#374151"),
2315
+ lineColor: G("--dc-border", "#e5e7eb"),
2316
+ emptyCellColor: e ? G("--dc-bg-secondary", "#1e293b") : G("--dc-bg-secondary", "#f3f4f6"),
2317
+ cellStrokeColor: e ? G("--dc-border", "#334155") : G("--dc-bg", "#ffffff")
2318
+ };
2319
+ }
2320
+ function He(e) {
2321
+ let { gridData: t, gridMapping: n, dimensions: r, safeDisplayConfig: i } = e, a = f(t, (e) => e.y) || 0, o = p(t, (e) => e.y) || 0, s = [...new Set(t.map((e) => e.x))].sort((e, t) => e - t), c = s.length * n.cellWidth + (s.length - 1) * 4, l = (a - o + 1) * n.cellHeight + (a - o) * 4, u = {
2322
+ ...U,
2323
+ left: 60,
2324
+ bottom: 10,
2325
+ top: n.hasHierarchicalLabels ? 40 : 25,
2326
+ right: 10
2327
+ }, d = r.width - u.left - u.right, m = r.height - u.top - u.bottom, h = Math.min(d / c, m / l), g, _;
2328
+ i.fitToWidth ? (g = n.cellWidth * h, _ = n.cellHeight * h) : (g = Math.max(16, Math.min(24, n.cellWidth * h)), _ = Math.max(16, Math.min(24, n.cellHeight * h)), e.granularity === "week" && g < 16 && (g = 16));
2329
+ let v = s.length * g + (s.length - 1) * 4, y = v > d ? v + u.left + u.right : r.width;
2330
+ return {
2331
+ margin: u,
2332
+ finalCellWidth: g,
2333
+ finalCellHeight: _,
2334
+ completeXRange: s,
2335
+ minY: o,
2336
+ maxY: a,
2337
+ svgWidth: y
2338
+ };
2339
+ }
2340
+ function Ue() {
2341
+ return h("body").append("div").attr("class", "activity-grid-tooltip").style("position", "absolute").style("padding", "8px").style("background", "rgba(0, 0, 0, 0.8)").style("color", "white").style("border-radius", "4px").style("font-size", "12px").style("pointer-events", "none").style("opacity", 0).style("z-index", 1e3);
2342
+ }
2343
+ function We(e, t, n, r, i) {
2344
+ e.style("cursor", t.drillEnabled ? "pointer" : "default").on("mouseover", function(e) {
2345
+ if (h(this).style("stroke", "#000").style("stroke-width", 2), n) {
2346
+ let i = [`<strong>${n.label}</strong>`, `${t.getFieldLabel(t.valueField)}: ${n.value}`].join("<br>");
2347
+ r.html(i).style("left", e.pageX + 10 + "px").style("top", e.pageY - 10 + "px").transition().duration(200).style("opacity", 1);
2226
2348
  }
2227
- let j = u.length * E + (u.length - 1) * 4, M = j > S ? j + b.left + b.right : C.width, N = h(x.current).attr("width", M).attr("height", C.height).append("g").attr("transform", `translate(${b.left},${b.top})`), P = s.map((e) => e.value), I = p(P) || 0, L = f(P) || 1, R = m().domain([I, L]).range(_?.gradient || Q), z = /* @__PURE__ */ new Map();
2228
- s.forEach((e) => {
2229
- let t = `${e.x}-${e.y}`;
2230
- z.set(t, e);
2349
+ }).on("mousemove", function(e) {
2350
+ r.style("left", e.pageX + 10 + "px").style("top", e.pageY - 10 + "px");
2351
+ }).on("mouseout", function() {
2352
+ h(this).style("stroke", i).style("stroke-width", 1), r.transition().duration(200).style("opacity", 0);
2353
+ });
2354
+ }
2355
+ function Ge(e, t, n, r, i, a) {
2356
+ let { gridData: o, valueField: s, dateField: c, drillEnabled: l, onDataPointClick: u, safeDisplayConfig: d } = e, { completeXRange: f, minY: p, maxY: m, finalCellWidth: h, finalCellHeight: g } = n, _ = /* @__PURE__ */ new Map();
2357
+ o.forEach((e) => _.set(`${e.x}-${e.y}`, e));
2358
+ let v = /* @__PURE__ */ new Map();
2359
+ f.forEach((e, t) => v.set(e, t));
2360
+ for (let n of f) for (let o = p; o <= m; o++) {
2361
+ let f = _.get(`${n}-${o}`), m = v.get(n) || 0, y = t.append("rect").attr("x", m * (h + 4)).attr("y", (o - p) * (g + 4)).attr("width", h).attr("height", g).attr("rx", 2).attr("ry", 2).style("fill", f ? r(f.value) : a.emptyCellColor).style("stroke", a.cellStrokeColor).style("stroke-width", 1);
2362
+ d.showTooltip ? We(y, e, f, i, a.cellStrokeColor) : l && y.style("cursor", "pointer"), l && u && f && y.on("click", function(e) {
2363
+ u({
2364
+ dataPoint: {
2365
+ [s]: f.value,
2366
+ [c]: f.date
2367
+ },
2368
+ clickedField: s,
2369
+ xValue: f.label,
2370
+ position: {
2371
+ x: e.pageX,
2372
+ y: e.pageY
2373
+ },
2374
+ nativeEvent: e
2375
+ });
2231
2376
  });
2232
- let B = (e, t) => getComputedStyle(document.documentElement).getPropertyValue(e).trim() || t, H = D !== "light", U = H ? B("--dc-text-muted", "#cbd5e1") : B("--dc-text-secondary", "#374151"), W = B("--dc-border", "#e5e7eb"), G = H ? B("--dc-bg-secondary", "#1e293b") : B("--dc-bg-secondary", "#f3f4f6"), K = H ? B("--dc-border", "#334155") : B("--dc-bg", "#ffffff"), q = h("body").append("div").attr("class", "activity-grid-tooltip").style("position", "absolute").style("padding", "8px").style("background", "rgba(0, 0, 0, 0.8)").style("color", "white").style("border-radius", "4px").style("font-size", "12px").style("pointer-events", "none").style("opacity", 0).style("z-index", 1e3), J = /* @__PURE__ */ new Map();
2233
- u.forEach((e, t) => {
2234
- J.set(e, t);
2377
+ }
2378
+ }
2379
+ function Ke(e) {
2380
+ if (e > 9999) {
2381
+ let t = Math.floor(e / 100);
2382
+ return `${Ve[e % 100 - 1]} '${t.toString().slice(-2)}`;
2383
+ }
2384
+ return `'${e.toString().slice(-2)}`;
2385
+ }
2386
+ function qe(e, t, n, r) {
2387
+ let { gridMapping: i } = e, { completeXRange: a, finalCellWidth: o } = n, s = /* @__PURE__ */ new Map();
2388
+ a.forEach((e, t) => s.set(e, t));
2389
+ let c = /* @__PURE__ */ new Map();
2390
+ for (let e of a) {
2391
+ let t = i.getYearFromX(e);
2392
+ c.has(t) || c.set(t, []), c.get(t).push(e);
2393
+ }
2394
+ for (let e of a) {
2395
+ let n = s.get(e) || 0;
2396
+ t.append("text").attr("x", n * (o + 4) + o / 2).attr("y", -8).attr("text-anchor", "middle").style("font-size", "10px").style("fill", r.textColor).text(i.xFormat(e));
2397
+ }
2398
+ for (let [e, n] of c) {
2399
+ if (n.length === 0) continue;
2400
+ let i = Math.min(...n.map((e) => s.get(e) || 0)), a = Math.max(...n.map((e) => s.get(e) || 0)), c = (i + a) / 2;
2401
+ t.append("text").attr("x", c * (o + 4) + o / 2).attr("y", -25).attr("text-anchor", "middle").style("font-size", "12px").style("font-weight", "bold").style("fill", r.textColor).text(Ke(e)), n.length > 1 && t.append("line").attr("x1", i * (o + 4)).attr("x2", a * (o + 4) + o).attr("y1", -20).attr("y2", -20).style("stroke", r.lineColor).style("stroke-width", 1).style("opacity", .3);
2402
+ }
2403
+ }
2404
+ function Je(e, t, n, r) {
2405
+ let { gridMapping: i } = e, { completeXRange: a, finalCellWidth: o } = n, s = Math.max(1, Math.floor(a.length / 10));
2406
+ for (let e = 0; e < a.length; e += s) t.append("text").attr("x", e * (o + 4) + o / 2).attr("y", -8).attr("text-anchor", "middle").style("font-size", "10px").style("fill", r.textColor).text(i.xFormat(a[e]));
2407
+ }
2408
+ function Ye(e, t, n, r) {
2409
+ let { gridMapping: i } = e, { minY: a, maxY: o, finalCellHeight: s } = n;
2410
+ i.hasHierarchicalLabels && i.getYearFromX ? qe(e, t, n, r) : Je(e, t, n, r);
2411
+ for (let e = a; e <= o; e++) t.append("text").attr("x", -8).attr("y", (e - a) * (s + 4) + s / 2).attr("text-anchor", "end").attr("dy", ".35em").style("font-size", "10px").style("fill", r.textColor).text(i.yFormat(e));
2412
+ }
2413
+ function Xe(e) {
2414
+ let { svgEl: t, gridData: n, dimensions: r, colorPalette: i, isDark: a, safeDisplayConfig: o } = e;
2415
+ if (h(t).selectAll("*").remove(), n.length === 0) return;
2416
+ let s = He(e), c = h(t).attr("width", s.svgWidth).attr("height", r.height).append("g").attr("transform", `translate(${s.margin.left},${s.margin.top})`), l = n.map((e) => e.value), u = m().domain([p(l) || 0, f(l) || 1]).range(i?.gradient || H), d = $(a), g = Ue();
2417
+ return Ge(e, c, s, u, g, d), o.showLabels && Ye(e, c, s, d), () => {
2418
+ g.remove();
2419
+ };
2420
+ }
2421
+ //#endregion
2422
+ //#region src/client/components/charts/ActivityGridChart.tsx
2423
+ var Ze = /* @__PURE__ */ e({ default: () => Qe }), Qe = t.memo(function({ data: e, chartConfig: t, displayConfig: n = {}, queryObject: r, height: i = "100%", colorPalette: o, onDataPointClick: f, drillEnabled: p }) {
2424
+ let { t: m } = D(), h = c(null), { containerRef: g, dimensions: _, dimensionsReady: v } = W(), [y, b] = l("light"), x = R();
2425
+ a(() => (b(B()), V((e) => b(e))), []);
2426
+ let S = s(() => ({
2427
+ showTooltip: n?.showTooltip ?? !0,
2428
+ showLabels: n?.showLabels ?? !0,
2429
+ fitToWidth: n?.fitToWidth ?? !1
2430
+ }), [
2431
+ n?.showTooltip,
2432
+ n?.showLabels,
2433
+ n?.fitToWidth
2434
+ ]);
2435
+ if (a(() => {
2436
+ if (!e || e.length === 0 || !h.current || !v || _.width === 0 || !t?.dateField || !t?.valueField) return;
2437
+ let n = Q(t.dateField), i = Q(t.valueField);
2438
+ if (!n || !i) return;
2439
+ let a = Re(r, n), s = Le(a);
2440
+ if (!s) return;
2441
+ let c = Be(e, n, i, s, a);
2442
+ return Xe({
2443
+ svgEl: h.current,
2444
+ gridData: c,
2445
+ gridMapping: s,
2446
+ granularity: a,
2447
+ dimensions: _,
2448
+ safeDisplayConfig: S,
2449
+ colorPalette: o,
2450
+ isDark: y !== "light",
2451
+ valueField: i,
2452
+ dateField: n,
2453
+ getFieldLabel: x,
2454
+ drillEnabled: p,
2455
+ onDataPointClick: f
2235
2456
  });
2236
- for (let e of u) for (let t = l; t <= c; t++) {
2237
- let i = `${e}-${t}`, a = z.get(i), o = J.get(e) || 0, s = N.append("rect").attr("x", o * (E + 4)).attr("y", (t - l) * (O + 4)).attr("width", E).attr("height", O).attr("rx", 2).attr("ry", 2).style("fill", a ? R(a.value) : G).style("stroke", K).style("stroke-width", 1);
2238
- A.showTooltip ? s.style("cursor", y ? "pointer" : "default").on("mouseover", function(e) {
2239
- if (h(this).style("stroke", "#000").style("stroke-width", 2), a) {
2240
- let t = [`<strong>${a.label}</strong>`, `${k(r)}: ${a.value}`].join("<br>");
2241
- q.html(t).style("left", e.pageX + 10 + "px").style("top", e.pageY - 10 + "px").transition().duration(200).style("opacity", 1);
2242
- }
2243
- }).on("mousemove", function(e) {
2244
- q.style("left", e.pageX + 10 + "px").style("top", e.pageY - 10 + "px");
2245
- }).on("mouseout", function() {
2246
- h(this).style("stroke", K).style("stroke-width", 1), q.transition().duration(200).style("opacity", 0);
2247
- }) : y && s.style("cursor", "pointer"), y && v && a && s.on("click", function(e) {
2248
- v({
2249
- dataPoint: {
2250
- [r]: a.value,
2251
- [n]: a.date
2252
- },
2253
- clickedField: r,
2254
- xValue: a.label,
2255
- position: {
2256
- x: e.pageX,
2257
- y: e.pageY
2258
- },
2259
- nativeEvent: e
2260
- });
2261
- });
2262
- }
2263
- if (A.showLabels) {
2264
- if (o.hasHierarchicalLabels && o.getYearFromX) {
2265
- let e = /* @__PURE__ */ new Map();
2266
- for (let t of u) {
2267
- let n = o.getYearFromX(t);
2268
- e.has(n) || e.set(n, []), e.get(n).push(t);
2269
- }
2270
- for (let e of u) {
2271
- let t = J.get(e) || 0;
2272
- N.append("text").attr("x", t * (E + 4) + E / 2).attr("y", -8).attr("text-anchor", "middle").style("font-size", "10px").style("fill", U).text(o.xFormat(e));
2273
- }
2274
- for (let [t, n] of e) if (n.length > 0) {
2275
- let e = Math.min(...n.map((e) => J.get(e) || 0)), r = Math.max(...n.map((e) => J.get(e) || 0)), i = (e + r) / 2, a;
2276
- if (t > 9999) {
2277
- let e = Math.floor(t / 100);
2278
- a = `${[
2279
- "Jan",
2280
- "Feb",
2281
- "Mar",
2282
- "Apr",
2283
- "May",
2284
- "Jun",
2285
- "Jul",
2286
- "Aug",
2287
- "Sep",
2288
- "Oct",
2289
- "Nov",
2290
- "Dec"
2291
- ][t % 100 - 1]} '${e.toString().slice(-2)}`;
2292
- } else a = `'${t.toString().slice(-2)}`;
2293
- N.append("text").attr("x", i * (E + 4) + E / 2).attr("y", -25).attr("text-anchor", "middle").style("font-size", "12px").style("font-weight", "bold").style("fill", U).text(a), n.length > 1 && N.append("line").attr("x1", e * (E + 4)).attr("x2", r * (E + 4) + E).attr("y1", -20).attr("y2", -20).style("stroke", W).style("stroke-width", 1).style("opacity", .3);
2294
- }
2295
- } else {
2296
- let e = Math.max(1, Math.floor(u.length / 10));
2297
- for (let t = 0; t < u.length; t += e) {
2298
- let e = u[t];
2299
- N.append("text").attr("x", t * (E + 4) + E / 2).attr("y", -8).attr("text-anchor", "middle").style("font-size", "10px").style("fill", U).text(o.xFormat(e));
2300
- }
2301
- }
2302
- for (let e = l; e <= c; e++) N.append("text").attr("x", -8).attr("y", (e - l) * (O + 4) + O / 2).attr("text-anchor", "end").attr("dy", ".35em").style("font-size", "10px").style("fill", U).text(o.yFormat(e));
2303
- }
2304
- return () => {
2305
- q.remove();
2306
- };
2307
2457
  }, [
2308
2458
  e,
2309
2459
  t,
2310
- n,
2311
- i,
2312
- C,
2313
- T,
2314
- A,
2460
+ r,
2315
2461
  _,
2316
- D,
2317
- k,
2318
- F,
2462
+ v,
2463
+ S,
2464
+ o,
2319
2465
  y,
2320
- v
2466
+ x,
2467
+ p,
2468
+ f
2321
2469
  ]), !e || e.length === 0) return /* @__PURE__ */ u("div", {
2322
2470
  className: "dc:flex dc:items-center dc:justify-center dc:w-full",
2323
- style: { height: g },
2471
+ style: { height: i },
2324
2472
  children: /* @__PURE__ */ d("div", {
2325
2473
  className: "dc:text-center text-dc-text-muted",
2326
2474
  children: [/* @__PURE__ */ u("div", {
2327
2475
  className: "dc:text-sm dc:font-semibold dc:mb-1",
2328
- children: b("chart.runtime.noData")
2476
+ children: m("chart.runtime.noData")
2329
2477
  }), /* @__PURE__ */ u("div", {
2330
2478
  className: "dc:text-xs text-dc-text-secondary",
2331
- children: b("chart.runtime.noDataHint.activityGrid")
2479
+ children: m("chart.runtime.noDataHint.activityGrid")
2332
2480
  })]
2333
2481
  })
2334
2482
  });
2335
2483
  if (!(t?.dateField && t?.valueField)) return /* @__PURE__ */ u("div", {
2336
2484
  className: "dc:flex dc:items-center dc:justify-center dc:w-full",
2337
- style: { height: g },
2485
+ style: { height: i },
2338
2486
  children: /* @__PURE__ */ d("div", {
2339
2487
  className: "dc:text-center text-dc-text-muted",
2340
2488
  children: [/* @__PURE__ */ u("div", {
2341
2489
  className: "dc:text-sm dc:font-semibold dc:mb-1",
2342
- children: b("chart.runtime.activityGridConfigRequired")
2490
+ children: m("chart.runtime.activityGridConfigRequired")
2343
2491
  }), /* @__PURE__ */ u("div", {
2344
2492
  className: "dc:text-xs text-dc-text-secondary",
2345
- children: b("chart.runtime.configErrorHint.activityGridRequired")
2493
+ children: m("chart.runtime.configErrorHint.activityGridRequired")
2346
2494
  })]
2347
2495
  })
2348
2496
  });
2349
- let L = Array.isArray(t.dateField) ? t.dateField[0] : t.dateField;
2350
- return (i?.timeDimensions?.find((e) => e.dimension === L || e.dimension.includes(L))?.granularity || "day")?.toLowerCase() === "year" ? /* @__PURE__ */ u("div", {
2497
+ let C = Q(t.dateField);
2498
+ return (r?.timeDimensions?.find((e) => e.dimension === C || e.dimension.includes(C))?.granularity || "day")?.toLowerCase() === "year" ? /* @__PURE__ */ u("div", {
2351
2499
  className: "dc:flex dc:items-center dc:justify-center dc:w-full",
2352
- style: { height: g },
2500
+ style: { height: i },
2353
2501
  children: /* @__PURE__ */ d("div", {
2354
2502
  className: "dc:text-center text-dc-text-muted",
2355
2503
  children: [
2356
2504
  /* @__PURE__ */ u("div", {
2357
2505
  className: "dc:text-sm dc:font-semibold dc:mb-1",
2358
- children: b("chart.runtime.activityGridGranularityTooHigh")
2506
+ children: m("chart.runtime.activityGridGranularityTooHigh")
2359
2507
  }),
2360
2508
  /* @__PURE__ */ u("div", {
2361
2509
  className: "dc:text-xs text-dc-text-secondary",
2362
- children: b("chart.runtime.activityGridGranularityHint")
2510
+ children: m("chart.runtime.activityGridGranularityHint")
2363
2511
  }),
2364
2512
  /* @__PURE__ */ u("div", {
2365
2513
  className: "dc:text-xs text-dc-text-secondary dc:mt-1",
2366
- children: b("chart.runtime.activityGridGranularityAction")
2514
+ children: m("chart.runtime.activityGridGranularityAction")
2367
2515
  })
2368
2516
  ]
2369
2517
  })
2370
2518
  }) : /* @__PURE__ */ u("div", {
2371
2519
  className: "dc:w-full dc:flex dc:flex-col dc:relative",
2372
2520
  style: {
2373
- height: g,
2521
+ height: i,
2374
2522
  minHeight: "250px",
2375
2523
  overflow: "hidden",
2376
2524
  width: "100%"
2377
2525
  },
2378
2526
  children: /* @__PURE__ */ d("div", {
2379
- ref: S,
2527
+ ref: g,
2380
2528
  className: "dc:w-full dc:h-full dc:relative dc:overflow-x-auto",
2381
2529
  style: { width: "100%" },
2382
2530
  children: [/* @__PURE__ */ u("svg", {
2383
- ref: x,
2531
+ ref: h,
2384
2532
  className: "dc:h-full"
2385
- }), !T && /* @__PURE__ */ u("div", {
2533
+ }), !v && /* @__PURE__ */ u("div", {
2386
2534
  className: "dc:absolute dc:inset-0 dc:flex dc:items-center dc:justify-center",
2387
2535
  children: /* @__PURE__ */ u("div", {
2388
2536
  className: "text-dc-text-muted dc:text-sm",
2389
- children: b("chart.runtime.measuringDimensions")
2537
+ children: m("chart.runtime.measuringDimensions")
2390
2538
  })
2391
2539
  })]
2392
2540
  })
2393
2541
  });
2394
2542
  });
2395
2543
  //#endregion
2396
- export { j as A, z as C, W as D, U as E, T as M, g as N, B as O, _ as P, H as S, P as T, G as _, ae as a, F as b, ne as c, K as d, te as f, Z as g, q as h, $ as i, w as j, M as k, J as l, ee as m, re as n, ie as o, Y as p, Q as r, oe as s, se as t, X as u, R as v, N as w, V as x, I as y };
2544
+ export { A, he as C, F as D, P as E, ie as F, ee as I, w as L, L as M, ge as N, N as O, D as P, g as R, R as S, j as T, xe as _, Ae as a, z as b, H as c, we as d, Ee as f, _e as g, B as h, je as i, I as j, k, U as l, ve as m, De as n, W as o, Se as p, Oe as r, Ce as s, Ze as t, Te as u, ye as v, M as w, V as x, be as y, _ as z };
2397
2545
 
2398
- //# sourceMappingURL=chart-activity-grid-CiHrLH6Y.js.map
2546
+ //# sourceMappingURL=chart-activity-grid-DX0SJbxs.js.map