drizzle-cube 0.5.7 → 0.5.8

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 (309) hide show
  1. package/dist/adapters/express/index.cjs +1 -1
  2. package/dist/adapters/express/index.js +4 -4
  3. package/dist/adapters/fastify/index.cjs +1 -1
  4. package/dist/adapters/fastify/index.js +4 -4
  5. package/dist/adapters/{handler-Dz1F4iwf.js → handler-Cx8QYLk6.js} +18 -4
  6. package/dist/adapters/{handler-C63rJUUK.cjs → handler-CzbCuS6_.cjs} +4 -4
  7. package/dist/adapters/hono/index.cjs +1 -1
  8. package/dist/adapters/hono/index.js +7 -7
  9. package/dist/adapters/{locale-gU_d1Wja.js → locale-BPB7flIG.js} +1 -1
  10. package/dist/adapters/{locale-CTNwPVZI.cjs → locale-tIMrNcCr.cjs} +1 -1
  11. package/dist/adapters/mcp-tools.cjs +1 -1
  12. package/dist/adapters/mcp-tools.js +2 -2
  13. package/dist/adapters/mcp-transport-C2QzXm6h.cjs +40 -0
  14. package/dist/adapters/mcp-transport-D0B3S1tB.js +579 -0
  15. package/dist/adapters/nextjs/index.cjs +1 -1
  16. package/dist/adapters/nextjs/index.js +4 -4
  17. package/dist/{server/openai-y7GhJNdn.js → adapters/openai-B5jEiqiB.js} +776 -719
  18. package/dist/{server/openai-DiVskd89.js → adapters/openai-BZdAA7Ji.js} +1 -1
  19. package/dist/adapters/openai-D0musiYP.cjs +17 -0
  20. package/dist/adapters/{openai-6wrBvAnv.cjs → openai-D_U4V0kT.cjs} +1 -1
  21. package/dist/adapters/{utils-DosuoabY.js → utils-D9JPLmfl.js} +16 -4
  22. package/dist/adapters/utils-KV37IBIv.cjs +128 -0
  23. package/dist/adapters/utils.cjs +1 -1
  24. package/dist/adapters/utils.js +1 -1
  25. package/dist/client/charts/ChartLoader.d.ts +1 -1
  26. package/dist/client/charts.js +12 -12
  27. package/dist/client/chunks/{DashboardEditModal-6KRE36mm.js → DashboardEditModal-CjCIAT-J.js} +1258 -1050
  28. package/dist/client/chunks/DashboardEditModal-CjCIAT-J.js.map +1 -0
  29. package/dist/client/chunks/{RetentionCombinedChart-CCpu0C-s.js → RetentionCombinedChart-BPkfcTa8.js} +3 -3
  30. package/dist/client/chunks/{RetentionCombinedChart-CCpu0C-s.js.map → RetentionCombinedChart-BPkfcTa8.js.map} +1 -1
  31. package/dist/client/chunks/{RetentionHeatmap-B24PiIfr.js → RetentionHeatmap-DGzLzr7h.js} +2 -2
  32. package/dist/client/chunks/{RetentionHeatmap-B24PiIfr.js.map → RetentionHeatmap-DGzLzr7h.js.map} +1 -1
  33. package/dist/client/chunks/{analysis-builder-zd48FVJO.js → analysis-builder-MuMIzoRq.js} +8 -8
  34. package/dist/client/chunks/{analysis-builder-zd48FVJO.js.map → analysis-builder-MuMIzoRq.js.map} +1 -1
  35. package/dist/client/chunks/{analysis-builder-shared-x576-O5p.js → analysis-builder-shared-CYVwSPqt.js} +21 -21
  36. package/dist/client/chunks/{analysis-builder-shared-x576-O5p.js.map → analysis-builder-shared-CYVwSPqt.js.map} +1 -1
  37. package/dist/client/chunks/{chart-activity-grid-CiHrLH6Y.js → chart-activity-grid-DmruKPab.js} +9 -4
  38. package/dist/client/chunks/{chart-activity-grid-CiHrLH6Y.js.map → chart-activity-grid-DmruKPab.js.map} +1 -1
  39. package/dist/client/chunks/{chart-area-CXFK-Grv.js → chart-area-DHCPM4Em.js} +2 -2
  40. package/dist/client/chunks/{chart-area-CXFK-Grv.js.map → chart-area-DHCPM4Em.js.map} +1 -1
  41. package/dist/client/chunks/{chart-bar-DKXfLoGG.js → chart-bar-KddciGDv.js} +3 -3
  42. package/dist/client/chunks/{chart-bar-DKXfLoGG.js.map → chart-bar-KddciGDv.js.map} +1 -1
  43. package/dist/client/chunks/{chart-box-plot-Bu9hy-17.js → chart-box-plot-DYKfyOI8.js} +2 -2
  44. package/dist/client/chunks/{chart-box-plot-Bu9hy-17.js.map → chart-box-plot-DYKfyOI8.js.map} +1 -1
  45. package/dist/client/chunks/{chart-bubble-DGkTQlxM.js → chart-bubble-CfqiB538.js} +2 -2
  46. package/dist/client/chunks/{chart-bubble-DGkTQlxM.js.map → chart-bubble-CfqiB538.js.map} +1 -1
  47. package/dist/client/chunks/{chart-candlestick-Dau5AF4E.js → chart-candlestick-Dwc92Mrj.js} +2 -2
  48. package/dist/client/chunks/{chart-candlestick-Dau5AF4E.js.map → chart-candlestick-Dwc92Mrj.js.map} +1 -1
  49. package/dist/client/chunks/{chart-data-table-Cm5jrpaw.js → chart-data-table-BO4sXsim.js} +27 -27
  50. package/dist/client/chunks/{chart-data-table-Cm5jrpaw.js.map → chart-data-table-BO4sXsim.js.map} +1 -1
  51. package/dist/client/chunks/{chart-funnel-Eke8IPtG.js → chart-funnel-DnWRsmnS.js} +2 -2
  52. package/dist/client/chunks/{chart-funnel-Eke8IPtG.js.map → chart-funnel-DnWRsmnS.js.map} +1 -1
  53. package/dist/client/chunks/{chart-gauge-DeRZNsyl.js → chart-gauge-CgMeqeGb.js} +2 -2
  54. package/dist/client/chunks/{chart-gauge-DeRZNsyl.js.map → chart-gauge-CgMeqeGb.js.map} +1 -1
  55. package/dist/client/chunks/{chart-heat-map-C86thSJ4.js → chart-heat-map-DcGm9SWK.js} +2 -2
  56. package/dist/client/chunks/{chart-heat-map-C86thSJ4.js.map → chart-heat-map-DcGm9SWK.js.map} +1 -1
  57. package/dist/client/chunks/{chart-kpi-delta-CxOYD2f1.js → chart-kpi-delta-C2wKPqCb.js} +3 -3
  58. package/dist/client/chunks/{chart-kpi-delta-CxOYD2f1.js.map → chart-kpi-delta-C2wKPqCb.js.map} +1 -1
  59. package/dist/client/chunks/{chart-kpi-number-C6gWz-x4.js → chart-kpi-number-gWYF44ol.js} +5 -5
  60. package/dist/client/chunks/{chart-kpi-number-C6gWz-x4.js.map → chart-kpi-number-gWYF44ol.js.map} +1 -1
  61. package/dist/client/chunks/{chart-kpi-text-dDONrhS-.js → chart-kpi-text-DIYtJtk4.js} +3 -3
  62. package/dist/client/chunks/{chart-kpi-text-dDONrhS-.js.map → chart-kpi-text-DIYtJtk4.js.map} +1 -1
  63. package/dist/client/chunks/{chart-line-r4iWevKZ.js → chart-line-9BEGN5Ti.js} +3 -3
  64. package/dist/client/chunks/{chart-line-r4iWevKZ.js.map → chart-line-9BEGN5Ti.js.map} +1 -1
  65. package/dist/client/chunks/{chart-markdown-BPW-EAm9.js → chart-markdown-dgUetjyM.js} +1359 -1240
  66. package/dist/client/chunks/chart-markdown-dgUetjyM.js.map +1 -0
  67. package/dist/client/chunks/{chart-measure-profile-BI3kADCp.js → chart-measure-profile-ClfpLs4q.js} +3 -3
  68. package/dist/client/chunks/{chart-measure-profile-BI3kADCp.js.map → chart-measure-profile-ClfpLs4q.js.map} +1 -1
  69. package/dist/client/chunks/{chart-pie-yqH2YVEI.js → chart-pie-BjAIhyOi.js} +3 -3
  70. package/dist/client/chunks/{chart-pie-yqH2YVEI.js.map → chart-pie-BjAIhyOi.js.map} +1 -1
  71. package/dist/client/chunks/{chart-radar-B-_3v-rE.js → chart-radar-Dgkcl2bN.js} +3 -3
  72. package/dist/client/chunks/{chart-radar-B-_3v-rE.js.map → chart-radar-Dgkcl2bN.js.map} +1 -1
  73. package/dist/client/chunks/{chart-radial-bar-C0EgzfAF.js → chart-radial-bar-DdWJjAhK.js} +3 -3
  74. package/dist/client/chunks/{chart-radial-bar-C0EgzfAF.js.map → chart-radial-bar-DdWJjAhK.js.map} +1 -1
  75. package/dist/client/chunks/{chart-sankey-CFzjGvZX.js → chart-sankey-M3XpO_ah.js} +2 -2
  76. package/dist/client/chunks/{chart-sankey-CFzjGvZX.js.map → chart-sankey-M3XpO_ah.js.map} +1 -1
  77. package/dist/client/chunks/{chart-scatter-DZPirzwX.js → chart-scatter-DaHYP_OL.js} +3 -3
  78. package/dist/client/chunks/{chart-scatter-DZPirzwX.js.map → chart-scatter-DaHYP_OL.js.map} +1 -1
  79. package/dist/client/chunks/{chart-sunburst-91Q2tzaB.js → chart-sunburst-A_u6lqlS.js} +3 -3
  80. package/dist/client/chunks/{chart-sunburst-91Q2tzaB.js.map → chart-sunburst-A_u6lqlS.js.map} +1 -1
  81. package/dist/client/chunks/{chart-tree-map-Bi4axCvh.js → chart-tree-map-uiwUU4nb.js} +3 -3
  82. package/dist/client/chunks/{chart-tree-map-Bi4axCvh.js.map → chart-tree-map-uiwUU4nb.js.map} +1 -1
  83. package/dist/client/chunks/{chart-waterfall-DcHbbPaG.js → chart-waterfall-BuhMoagf.js} +3 -3
  84. package/dist/client/chunks/{chart-waterfall-DcHbbPaG.js.map → chart-waterfall-BuhMoagf.js.map} +1 -1
  85. package/dist/client/chunks/{charts-core-CrBDYN6N.js → charts-core-jRtb0S2M.js} +2 -2
  86. package/dist/client/chunks/{charts-core-CrBDYN6N.js.map → charts-core-jRtb0S2M.js.map} +1 -1
  87. package/dist/client/chunks/{core-DsAWNRRv.js → core-D7vPfUIe.js} +2 -2
  88. package/dist/client/chunks/{core-DsAWNRRv.js.map → core-D7vPfUIe.js.map} +1 -1
  89. package/dist/client/chunks/{nl-NL-oyr2wENY.js → nl-NL-CpVs7ox3.js} +7 -2
  90. package/dist/client/chunks/{nl-NL-oyr2wENY.js.map → nl-NL-CpVs7ox3.js.map} +1 -1
  91. package/dist/client/chunks/{schema-visualization-BszcrmZX.js → schema-visualization-DE09kQE3.js} +3 -3
  92. package/dist/client/chunks/{schema-visualization-BszcrmZX.js.map → schema-visualization-DE09kQE3.js.map} +1 -1
  93. package/dist/client/chunks/{useDirtyStateTracking-B5wCDJSj.js → useDirtyStateTracking-CoeQbprt.js} +4 -4
  94. package/dist/client/chunks/{useDirtyStateTracking-B5wCDJSj.js.map → useDirtyStateTracking-CoeQbprt.js.map} +1 -1
  95. package/dist/client/chunks/{useExplainAI-CCeCYzDm.js → useExplainAI-DlnXWdmz.js} +4 -4
  96. package/dist/client/chunks/{useExplainAI-CCeCYzDm.js.map → useExplainAI-DlnXWdmz.js.map} +1 -1
  97. package/dist/client/chunks/{utils-kqa-JIMg.js → utils-CTKNaXS8.js} +3 -3
  98. package/dist/client/chunks/{utils-kqa-JIMg.js.map → utils-CTKNaXS8.js.map} +1 -1
  99. package/dist/client/chunks/{vendor-0hJNlZXQ.js → vendor-CPIYyeuD.js} +2 -2
  100. package/dist/client/chunks/{vendor-0hJNlZXQ.js.map → vendor-CPIYyeuD.js.map} +1 -1
  101. package/dist/client/components/AnalysisBuilder/AnalysisAIPanel.d.ts +1 -1
  102. package/dist/client/components/AnalysisBuilder/AnalysisAxisDropZone.d.ts +1 -1
  103. package/dist/client/components/AnalysisBuilder/AnalysisChartConfigPanel.d.ts +1 -1
  104. package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +1 -1
  105. package/dist/client/components/AnalysisBuilder/AnalysisFilterGroup.d.ts +1 -1
  106. package/dist/client/components/AnalysisBuilder/AnalysisFilterItem.d.ts +1 -1
  107. package/dist/client/components/AnalysisBuilder/AnalysisFilterSection.d.ts +1 -1
  108. package/dist/client/components/AnalysisBuilder/AnalysisModeErrorBoundary.d.ts +1 -1
  109. package/dist/client/components/AnalysisBuilder/ExplainAIPanel.d.ts +2 -1
  110. package/dist/client/components/AnalysisBuilder/FieldDetailPanel.d.ts +1 -1
  111. package/dist/client/components/AnalysisBuilder/FieldSearchItem.d.ts +1 -1
  112. package/dist/client/components/AnalysisBuilder/FieldSearchModal.d.ts +1 -1
  113. package/dist/client/components/AnalysisBuilder/FilterConfigModal.d.ts +2 -1
  114. package/dist/client/components/AnalysisBuilder/LimitSection.d.ts +1 -1
  115. package/dist/client/components/AnalysisBuilder/SectionHeading.d.ts +1 -1
  116. package/dist/client/components/AnalyticsDashboard.d.ts +1 -1
  117. package/dist/client/components/AnalyticsPage.d.ts +1 -1
  118. package/dist/client/components/ChartErrorBoundary.d.ts +1 -1
  119. package/dist/client/components/ChartTypeSelector.d.ts +1 -1
  120. package/dist/client/components/ColorPaletteSelector.d.ts +1 -1
  121. package/dist/client/components/DashboardEditModal.d.ts +2 -1
  122. package/dist/client/components/DashboardFilters/DashboardFilterConfigModal.d.ts +1 -1
  123. package/dist/client/components/DashboardFilters/DashboardFilterItem.d.ts +1 -1
  124. package/dist/client/components/DashboardGrid.d.ts +1 -1
  125. package/dist/client/components/DashboardThumbnailPlaceholder.d.ts +1 -1
  126. package/dist/client/components/DataBrowser/DataBrowserSidebar.d.ts +1 -1
  127. package/dist/client/components/DataBrowser/DataBrowserToolbar.d.ts +1 -1
  128. package/dist/client/components/DataBrowser/index.d.ts +1 -1
  129. package/dist/client/components/DataHistogram.d.ts +1 -1
  130. package/dist/client/components/DebugModal.d.ts +1 -1
  131. package/dist/client/components/DrillBreadcrumb.d.ts +2 -1
  132. package/dist/client/components/LoadingIndicator.d.ts +1 -1
  133. package/dist/client/components/MobileStackedLayout.d.ts +1 -1
  134. package/dist/client/components/PortletAnalysisModal.d.ts +1 -1
  135. package/dist/client/components/PortletContainer.d.ts +1 -1
  136. package/dist/client/components/PortletFilterConfigModal.d.ts +6 -4
  137. package/dist/client/components/RowManagedLayout.d.ts +1 -1
  138. package/dist/client/components/ScaledGridWrapper.d.ts +1 -1
  139. package/dist/client/components/SchemaVisualization/CubeNode.d.ts +1 -1
  140. package/dist/client/components/SchemaVisualization/FieldDetailPanel.d.ts +1 -1
  141. package/dist/client/components/SchemaVisualization/RelationshipEdge.d.ts +1 -1
  142. package/dist/client/components/SchemaVisualization/SchemaVisualizationLazy.d.ts +1 -1
  143. package/dist/client/components/SchemaVisualization/index.d.ts +1 -1
  144. package/dist/client/components/TextPortletModal.d.ts +1 -1
  145. package/dist/client/components/charts/AxisFormatControls.d.ts +2 -2
  146. package/dist/client/components/charts/ChartContainer.d.ts +1 -1
  147. package/dist/client/components/charts/ChartLegend.d.ts +1 -1
  148. package/dist/client/components/charts/ChartTooltip.d.ts +1 -1
  149. package/dist/client/components/charts/MissingDependencyFallback.d.ts +1 -1
  150. package/dist/client/components/dashboard/DashboardContext.d.ts +2 -2
  151. package/dist/client/components/dashboard/DashboardCoordinator.d.ts +1 -1
  152. package/dist/client/components/dashboard/DashboardFilterBar.d.ts +1 -1
  153. package/dist/client/components/dashboard/DashboardGridSurface.d.ts +1 -1
  154. package/dist/client/components/dashboard/DashboardModals.d.ts +1 -1
  155. package/dist/client/components/dashboard/DashboardProvider.d.ts +1 -1
  156. package/dist/client/components/dashboard/DashboardToolbar.d.ts +1 -1
  157. package/dist/client/components/dashboard/dashboardGridUtils.d.ts +1 -1
  158. package/dist/client/components.js +2 -2
  159. package/dist/client/hooks/dashboard/useDashboardController.d.ts +2 -2
  160. package/dist/client/hooks/useDashboardHook.d.ts +2 -2
  161. package/dist/client/hooks.js +3 -3
  162. package/dist/client/icons.d.ts +1 -1
  163. package/dist/client/icons.js +1 -1
  164. package/dist/client/index.js +15 -15
  165. package/dist/client/providers/CubeApiProvider.d.ts +1 -1
  166. package/dist/client/providers/CubeFeaturesProvider.d.ts +1 -1
  167. package/dist/client/providers/CubeMetaProvider.d.ts +1 -1
  168. package/dist/client/providers/CubeProvider.d.ts +1 -1
  169. package/dist/client/providers/I18nProvider.d.ts +1 -1
  170. package/dist/client/providers.js +1 -1
  171. package/dist/client/schema.js +1 -1
  172. package/dist/client/stores/analysisBuilderStore.d.ts +1 -1
  173. package/dist/client/stores/dashboardStore.d.ts +1 -1
  174. package/dist/client/stores/dataBrowserStore.d.ts +1 -1
  175. package/dist/client/stores/notebookStore.d.ts +1 -1
  176. package/dist/client/styles.css +1 -1
  177. package/dist/client/types/drill.d.ts +1 -1
  178. package/dist/client/types.d.ts +7 -2
  179. package/dist/client/utils/drillQueryBuilder.d.ts +2 -2
  180. package/dist/client/utils/filterUtils.d.ts +33 -5
  181. package/dist/client/utils/joinReachability.d.ts +27 -0
  182. package/dist/client/utils.js +5 -5
  183. package/dist/client-bundle-stats.html +1 -1
  184. package/dist/mcp-app/mcp-app.html +4 -4
  185. package/dist/server/index.cjs +6 -6
  186. package/dist/server/index.d.ts +2 -5050
  187. package/dist/server/index.js +33 -7
  188. package/dist/{adapters/openai-y7GhJNdn.js → server/openai-B5jEiqiB.js} +776 -719
  189. package/dist/{adapters/openai-DiVskd89.js → server/openai-BZdAA7Ji.js} +1 -1
  190. package/dist/server/openai-D0musiYP.cjs +17 -0
  191. package/dist/server/{openai-6wrBvAnv.cjs → openai-D_U4V0kT.cjs} +1 -1
  192. package/dist/server/server/adapters/base-adapter.d.ts +287 -0
  193. package/dist/server/server/adapters/databend-adapter.d.ts +114 -0
  194. package/dist/server/server/adapters/duckdb-adapter.d.ts +122 -0
  195. package/dist/server/server/adapters/mysql-adapter.d.ts +122 -0
  196. package/dist/server/server/adapters/postgres-adapter.d.ts +119 -0
  197. package/dist/server/server/adapters/singlestore-adapter.d.ts +4 -0
  198. package/dist/server/server/adapters/snowflake-adapter.d.ts +116 -0
  199. package/dist/server/server/adapters/sqlite-adapter.d.ts +140 -0
  200. package/dist/server/server/agent/chart-validation.d.ts +27 -0
  201. package/dist/server/server/agent/handler.d.ts +25 -0
  202. package/dist/server/server/agent/index.d.ts +11 -0
  203. package/dist/server/server/agent/providers/anthropic.d.ts +24 -0
  204. package/dist/server/server/agent/providers/factory.d.ts +12 -0
  205. package/dist/server/server/agent/providers/google.d.ts +23 -0
  206. package/dist/server/server/agent/providers/index.d.ts +6 -0
  207. package/dist/server/server/agent/providers/openai.d.ts +26 -0
  208. package/dist/server/server/agent/providers/types.d.ts +95 -0
  209. package/dist/server/server/agent/system-prompt.d.ts +5 -0
  210. package/dist/server/server/agent/tools.d.ts +28 -0
  211. package/dist/server/server/agent/types.d.ts +192 -0
  212. package/dist/server/server/ai/discovery.d.ts +62 -0
  213. package/dist/server/server/ai/index.d.ts +10 -0
  214. package/dist/server/server/ai/mcp-prompts.d.ts +83 -0
  215. package/dist/server/server/ai/query-schema.d.ts +258 -0
  216. package/dist/server/server/ai/schemas.d.ts +63 -0
  217. package/dist/server/server/ai/suggestion.d.ts +19 -0
  218. package/dist/server/server/ai/validation.d.ts +34 -0
  219. package/dist/server/server/builders/comparison-query-builder.d.ts +70 -0
  220. package/dist/server/server/builders/cte-builder.d.ts +62 -0
  221. package/dist/server/server/builders/date-time-builder.d.ts +29 -0
  222. package/dist/server/server/builders/filter-builder.d.ts +23 -0
  223. package/dist/server/server/builders/flow-query-builder.d.ts +109 -0
  224. package/dist/server/server/builders/funnel-query-builder.d.ts +134 -0
  225. package/dist/server/server/builders/group-by-builder.d.ts +27 -0
  226. package/dist/server/server/builders/index.d.ts +13 -0
  227. package/dist/server/server/builders/measure-builder.d.ts +142 -0
  228. package/dist/server/server/builders/retention-query-builder.d.ts +100 -0
  229. package/dist/server/server/cache-providers/index.d.ts +5 -0
  230. package/dist/server/server/cache-providers/memory.d.ts +105 -0
  231. package/dist/server/server/cache-utils.d.ts +65 -0
  232. package/dist/server/server/compiler.d.ts +218 -0
  233. package/dist/server/server/cube-utils.d.ts +133 -0
  234. package/dist/server/server/database-utils.d.ts +18 -0
  235. package/dist/server/server/executor.d.ts +183 -0
  236. package/dist/server/server/executors/base-executor.d.ts +16 -0
  237. package/dist/server/server/executors/databend-executor.d.ts +33 -0
  238. package/dist/server/server/executors/duckdb-executor.d.ts +33 -0
  239. package/dist/server/server/executors/index.d.ts +21 -0
  240. package/dist/server/server/executors/mysql-executor.d.ts +27 -0
  241. package/dist/server/server/executors/postgres-executor.d.ts +27 -0
  242. package/dist/server/server/executors/singlestore-executor.d.ts +9 -0
  243. package/dist/server/server/executors/snowflake-executor.d.ts +33 -0
  244. package/dist/server/server/executors/sqlite-executor.d.ts +28 -0
  245. package/dist/server/server/explain/databend-parser.d.ts +16 -0
  246. package/dist/server/server/explain/duckdb-parser.d.ts +28 -0
  247. package/dist/server/server/explain/index.d.ts +9 -0
  248. package/dist/server/server/explain/mysql-parser.d.ts +38 -0
  249. package/dist/server/server/explain/postgres-parser.d.ts +18 -0
  250. package/dist/server/server/explain/snowflake-parser.d.ts +17 -0
  251. package/dist/server/server/explain/sqlite-parser.d.ts +23 -0
  252. package/dist/server/server/filter-cache.d.ts +73 -0
  253. package/dist/server/server/gap-filler.d.ts +42 -0
  254. package/dist/server/server/index.d.ts +36 -0
  255. package/dist/server/server/logical-plan/index.d.ts +14 -0
  256. package/dist/server/server/logical-plan/logical-plan-builder.d.ts +58 -0
  257. package/dist/server/server/logical-plan/logical-planner.d.ts +232 -0
  258. package/dist/server/server/logical-plan/optimiser.d.ts +32 -0
  259. package/dist/server/server/logical-plan/types.d.ts +191 -0
  260. package/dist/server/server/physical-plan/drizzle-plan-builder.d.ts +50 -0
  261. package/dist/server/server/physical-plan/drizzle-sql-builder.d.ts +107 -0
  262. package/dist/server/server/physical-plan/index.d.ts +2 -0
  263. package/dist/server/server/physical-plan/processors/cte-processor.d.ts +6 -0
  264. package/dist/server/server/physical-plan/processors/index.d.ts +6 -0
  265. package/dist/server/server/physical-plan/processors/joins-processor.d.ts +6 -0
  266. package/dist/server/server/physical-plan/processors/predicates-processor.d.ts +6 -0
  267. package/dist/server/server/physical-plan/processors/selection-processor.d.ts +6 -0
  268. package/dist/server/server/physical-plan/processors/shared.d.ts +33 -0
  269. package/dist/server/server/physical-plan/processors/window-processor.d.ts +6 -0
  270. package/dist/server/server/prompts/explain-analysis-prompt.d.ts +47 -0
  271. package/dist/server/server/prompts/index.d.ts +27 -0
  272. package/dist/server/server/prompts/single-step-prompt.d.ts +31 -0
  273. package/dist/server/server/prompts/step0-validation-prompt.d.ts +39 -0
  274. package/dist/server/server/prompts/step1-shape-prompt.d.ts +29 -0
  275. package/dist/server/server/prompts/step2-complete-prompt.d.ts +19 -0
  276. package/dist/server/server/prompts/types.d.ts +37 -0
  277. package/dist/server/server/resolvers/calculated-measure-resolver.d.ts +93 -0
  278. package/dist/server/server/resolvers/index.d.ts +6 -0
  279. package/dist/server/server/resolvers/join-path-resolver.d.ts +152 -0
  280. package/dist/server/server/template-substitution.d.ts +57 -0
  281. package/dist/server/server/types/analysis.d.ts +189 -0
  282. package/dist/server/server/types/cache.d.ts +132 -0
  283. package/dist/server/server/types/core.d.ts +164 -0
  284. package/dist/server/server/types/cube.d.ts +530 -0
  285. package/dist/server/server/types/executor.d.ts +156 -0
  286. package/dist/server/server/types/flow.d.ts +143 -0
  287. package/dist/server/server/types/funnel.d.ts +118 -0
  288. package/dist/server/server/types/index.d.ts +11 -0
  289. package/dist/server/server/types/metadata.d.ts +113 -0
  290. package/dist/server/server/types/query.d.ts +153 -0
  291. package/dist/server/server/types/retention.d.ts +141 -0
  292. package/dist/server/server/types/utils.d.ts +11 -0
  293. package/package.json +5 -5
  294. package/dist/adapters/mcp-transport-C4J4SAcn.cjs +0 -40
  295. package/dist/adapters/mcp-transport-CVUiifEc.js +0 -579
  296. package/dist/adapters/openai-BDwb2u7y.cjs +0 -17
  297. package/dist/adapters/utils-CkEkU8Bo.cjs +0 -128
  298. package/dist/client/chunks/DashboardEditModal-6KRE36mm.js.map +0 -1
  299. package/dist/client/chunks/chart-markdown-BPW-EAm9.js.map +0 -1
  300. package/dist/server/openai-BDwb2u7y.cjs +0 -17
  301. /package/dist/adapters/{express → adapters/express}/index.d.ts +0 -0
  302. /package/dist/adapters/{fastify → adapters/fastify}/index.d.ts +0 -0
  303. /package/dist/adapters/{hono → adapters/hono}/index.d.ts +0 -0
  304. /package/dist/adapters/{locale.d.ts → adapters/locale.d.ts} +0 -0
  305. /package/dist/adapters/{mcp-tools.d.ts → adapters/mcp-tools.d.ts} +0 -0
  306. /package/dist/adapters/{mcp-transport.d.ts → adapters/mcp-transport.d.ts} +0 -0
  307. /package/dist/adapters/{nextjs → adapters/nextjs}/index.d.ts +0 -0
  308. /package/dist/adapters/{types.d.ts → adapters/types.d.ts} +0 -0
  309. /package/dist/adapters/{utils.d.ts → adapters/utils.d.ts} +0 -0
@@ -1,15 +1,15 @@
1
- import { a as e, n as t, o as n, r, s as i, u as a } from "./vendor-0hJNlZXQ.js";
2
- import { B as o, D as s, E as c, H as l, R as u, S as d, U as f, W as p, _ as m, j as h, ot as g, v as _, z as v } from "./chart-data-table-Cm5jrpaw.js";
3
- import { A as y, D as b, E as x, O as S, S as C, T as w, a as T, d as E, i as D, k as O, l as ee, n as te, r as k, s as A, t as j, u as ne, w as re, x as ie } from "./useDirtyStateTracking-B5wCDJSj.js";
4
- import { r as ae } from "./chart-sankey-CFzjGvZX.js";
1
+ import { a as e, n as t, o as n, r, s as i, u as a } from "./vendor-CPIYyeuD.js";
2
+ import { B as o, D as s, E as c, H as l, R as u, S as d, U as f, W as p, _ as m, j as h, ot as g, v as _, z as v } from "./chart-data-table-BO4sXsim.js";
3
+ import { A as y, D as b, E as x, O as S, S as C, T as w, a as T, d as E, i as D, k as O, l as ee, n as te, r as k, s as A, t as j, u as ne, w as re, x as ie } from "./useDirtyStateTracking-CoeQbprt.js";
4
+ import { r as ae } from "./chart-sankey-M3XpO_ah.js";
5
5
  import { n as oe, t as M } from "./providers-DwQCKdGW.js";
6
- import { M as N, P as se, k as P } from "./chart-activity-grid-CiHrLH6Y.js";
7
- import { u as ce } from "./chart-area-CXFK-Grv.js";
8
- import { a as le, l as F, s as I } from "./retention-ChW9jYdy.js";
9
- import { m as L, u as R } from "./utils-kqa-JIMg.js";
10
- import { n as z, t as ue } from "./charts-core-CrBDYN6N.js";
11
- import { t as B } from "./chart-markdown-BPW-EAm9.js";
12
- import V, { Component as de, Suspense as H, createContext as U, forwardRef as W, lazy as fe, memo as pe, startTransition as me, useCallback as G, useContext as he, useEffect as K, useImperativeHandle as ge, useMemo as q, useRef as J, useState as Y } from "react";
6
+ import { M as N, P as se, k as P } from "./chart-activity-grid-DmruKPab.js";
7
+ import { u as ce } from "./chart-area-DHCPM4Em.js";
8
+ import { a as F, l as le, s as I } from "./retention-ChW9jYdy.js";
9
+ import { m as L, u as R } from "./utils-CTKNaXS8.js";
10
+ import { n as z, t as ue } from "./charts-core-jRtb0S2M.js";
11
+ import { t as B } from "./chart-markdown-dgUetjyM.js";
12
+ import V, { Component as de, Suspense as H, createContext as fe, forwardRef as U, lazy as W, memo as pe, startTransition as me, useCallback as G, useContext as he, useEffect as K, useImperativeHandle as ge, useMemo as q, useRef as J, useState as Y } from "react";
13
13
  import { Fragment as X, jsx as Z, jsxs as Q } from "react/jsx-runtime";
14
14
  import { createPortal as _e } from "react-dom";
15
15
  import ve, { verticalCompactor as ye } from "react-grid-layout";
@@ -760,140 +760,12 @@ function Ye(e, t) {
760
760
  }
761
761
  }
762
762
  //#endregion
763
- //#region src/client/hooks/useDrillInteraction.ts
764
- function Xe(e) {
765
- let { query: t, metadata: n, onQueryChange: r, chartConfig: i, dashboardFilters: a, dashboardFilterMapping: o, enabled: s = !0 } = e, [c, l] = Y(!1), [u, d] = Y(null), [f, p] = Y([]), [m, h] = Y(null), [g, _] = Y([]), [v, y] = Y(null), [b, x] = Y(null), [S, C] = Y(null), [w, T] = Y(null), E = q(() => {
766
- if (!s || !n) return !1;
767
- let e = (t.timeDimensions?.length ?? 0) > 0, r = (t.dimensions?.length ?? 0) > 0, i = t.measures?.some((e) => Re(e, n) !== null) ?? !1;
768
- return e || r || i;
769
- }, [
770
- s,
771
- n,
772
- t
773
- ]), D = q(() => !a || !o ? !1 : a.some((e) => e.isUniversalTime && o.includes(e.id)), [a, o]);
774
- return {
775
- handleDataPointClick: G((e) => {
776
- if (!s || !n) return;
777
- let r = Be(e, t, n, a, o);
778
- r.length !== 0 && (h(e), p(r), d(e.position), l(!0));
779
- }, [
780
- s,
781
- n,
782
- t,
783
- a,
784
- o
785
- ]),
786
- menuOpen: c,
787
- menuPosition: u,
788
- menuOptions: f,
789
- handleOptionSelect: G((e) => {
790
- if (!(!m || !n)) {
791
- try {
792
- if (e.targetGranularity && g.length > 0) {
793
- let n = g.findIndex((t) => t.granularity === e.targetGranularity);
794
- if (n !== -1) {
795
- let e = n + 1;
796
- if (e < g.length) {
797
- let t = g.slice(0, e), n = t[t.length - 1];
798
- _(t), r(n.query), C(n.chartConfig || null);
799
- }
800
- l(!1), h(null);
801
- return;
802
- }
803
- if (v && e.targetGranularity === v) {
804
- let e = w || t;
805
- _([]), C(b), x(null), y(null), T(null), r(e), l(!1), h(null);
806
- return;
807
- }
808
- }
809
- if (e.targetDimension && g.length > 0) {
810
- let t = g.findIndex((t) => t.dimension === e.targetDimension);
811
- if (t !== -1) {
812
- let e = t + 1;
813
- if (e < g.length) {
814
- let t = g.slice(0, e), n = t[t.length - 1];
815
- _(t), r(n.query), C(n.chartConfig || null);
816
- }
817
- l(!1), h(null);
818
- return;
819
- }
820
- }
821
- let a = Ge(e, m, t, n);
822
- if (g.length === 0 && (T(t), i && x(i), e.targetGranularity && t.timeDimensions?.[0])) {
823
- let e = t.timeDimensions[0].granularity;
824
- e && y(e);
825
- }
826
- _((e) => [...e, a.pathEntry]), r(a.query), a.chartConfig && C(a.chartConfig);
827
- } catch (e) {
828
- console.error("Error building drill query:", e);
829
- }
830
- l(!1), h(null);
831
- }
832
- }, [
833
- m,
834
- n,
835
- t,
836
- g,
837
- v,
838
- w,
839
- r,
840
- i,
841
- b
842
- ]),
843
- closeMenu: G(() => {
844
- l(!1), d(null), p([]), h(null);
845
- }, []),
846
- drillPath: g,
847
- navigateBack: G(() => {
848
- if (g.length !== 0) if (g.length === 1) {
849
- let e = w || t;
850
- _([]), C(b), x(null), y(null), T(null), r(e);
851
- } else {
852
- let e = g.slice(0, -1), t = e[e.length - 1];
853
- _(e), r(t.query), C(t.chartConfig || null);
854
- }
855
- }, [
856
- g,
857
- r,
858
- b,
859
- w,
860
- t
861
- ]),
862
- navigateToLevel: G((e) => {
863
- if (e <= 0) {
864
- let e = w || t;
865
- _([]), C(b), x(null), y(null), T(null), r(e);
866
- } else if (e < g.length) {
867
- let t = g.slice(0, e), n = t[t.length - 1];
868
- _(t), r(n.query), C(n.chartConfig || null);
869
- }
870
- }, [
871
- g,
872
- r,
873
- b,
874
- w,
875
- t
876
- ]),
877
- drillEnabled: E,
878
- hasDashboardFilterMatch: D,
879
- currentChartConfig: S
880
- };
881
- }
882
- //#endregion
883
- //#region src/client/types.ts
884
- function Ze(e) {
885
- return typeof e == "object" && !!e && "queries" in e && Array.isArray(e.queries) && e.queries.length > 0;
886
- }
887
- function Qe(e) {
888
- return typeof e == "object" && !!e && "funnel" in e && typeof e.funnel == "object";
889
- }
890
- //#endregion
891
763
  //#region src/client/types/analysisConfig.ts
892
- var $e = (e) => e.analysisType === "query", et = (e) => e.analysisType === "funnel", tt = (e) => e.analysisType === "flow", nt = (e) => e.analysisType === "retention", rt = (e) => "queries" in e.query && Array.isArray(e.query.queries), it = (e) => !rt(e), at = (e) => {
764
+ var Xe = (e) => e.analysisType === "query", Ze = (e) => e.analysisType === "funnel", Qe = (e) => e.analysisType === "flow", $e = (e) => e.analysisType === "retention", et = (e) => "queries" in e.query && Array.isArray(e.query.queries), tt = (e) => !et(e), nt = (e) => {
893
765
  if (!e || typeof e != "object") return !1;
894
766
  let t = e;
895
767
  return !(t.version !== 1 || t.analysisType !== "query" && t.analysisType !== "funnel" && t.analysisType !== "flow" && t.analysisType !== "retention" || !t.query || typeof t.query != "object" || t.activeView !== "table" && t.activeView !== "chart");
896
- }, ot = () => ({
768
+ }, rt = () => ({
897
769
  version: 1,
898
770
  analysisType: "query",
899
771
  activeView: "chart",
@@ -906,7 +778,7 @@ var $e = (e) => e.analysisType === "query", et = (e) => e.analysisType === "funn
906
778
  measures: [],
907
779
  dimensions: []
908
780
  }
909
- }), st = () => ({
781
+ }), it = () => ({
910
782
  version: 1,
911
783
  analysisType: "funnel",
912
784
  activeView: "chart",
@@ -920,7 +792,7 @@ var $e = (e) => e.analysisType === "query", et = (e) => e.analysisType === "funn
920
792
  timeDimension: "",
921
793
  steps: []
922
794
  } }
923
- }), ct = () => ({
795
+ }), at = () => ({
924
796
  version: 1,
925
797
  analysisType: "flow",
926
798
  activeView: "chart",
@@ -941,7 +813,7 @@ var $e = (e) => e.analysisType === "query", et = (e) => e.analysisType === "funn
941
813
  stepsAfter: 3,
942
814
  joinStrategy: "auto"
943
815
  } }
944
- }), lt = () => ({
816
+ }), ot = () => ({
945
817
  version: 1,
946
818
  analysisType: "retention",
947
819
  activeView: "chart",
@@ -961,42 +833,42 @@ var $e = (e) => e.analysisType === "query", et = (e) => e.analysisType === "funn
961
833
  periods: 12,
962
834
  retentionType: "classic"
963
835
  } }
964
- }), ut = (e = "query") => {
836
+ }), st = (e = "query") => {
965
837
  switch (e) {
966
- case "funnel": return st();
967
- case "flow": return ct();
968
- case "retention": return lt();
969
- default: return ot();
838
+ case "funnel": return it();
839
+ case "flow": return at();
840
+ case "retention": return ot();
841
+ default: return rt();
970
842
  }
971
- }, dt = (e) => {
843
+ }, ct = (e) => {
972
844
  if (!e || typeof e != "object") return !1;
973
845
  let t = e;
974
846
  return !(t.version !== 1 || t.activeType !== "query" && t.activeType !== "funnel" && t.activeType !== "flow" && t.activeType !== "retention" || !t.modes || typeof t.modes != "object");
975
- }, ft = () => ({
847
+ }, lt = () => ({
976
848
  version: 1,
977
849
  activeType: "query",
978
850
  modes: {
979
- query: ot(),
980
- funnel: st(),
981
- flow: ct(),
982
- retention: lt()
851
+ query: rt(),
852
+ funnel: it(),
853
+ flow: at(),
854
+ retention: ot()
983
855
  }
984
856
  });
985
857
  //#endregion
986
858
  //#region src/client/utils/configMigration.ts
987
- function pt(e) {
859
+ function ut(e) {
988
860
  return typeof e == "object" && !!e && "queries" in e && Array.isArray(e.queries);
989
861
  }
990
- function mt(e) {
862
+ function dt(e) {
991
863
  return typeof e == "object" && !!e && "queries" in e && Array.isArray(e.queries) && "mergeStrategy" in e && e.mergeStrategy === "funnel";
992
864
  }
993
- function ht(e) {
865
+ function ft(e) {
994
866
  return typeof e == "object" && !!e && "funnel" in e && typeof e.funnel == "object";
995
867
  }
996
- function gt(e) {
868
+ function pt(e) {
997
869
  return typeof e == "object" && !!e && "flow" in e && typeof e.flow == "object";
998
870
  }
999
- function _t(e, t) {
871
+ function mt(e, t) {
1000
872
  return t === "funnel" ? {
1001
873
  chartType: e.funnelChartType || e.chartType || "funnel",
1002
874
  chartConfig: e.funnelChartConfig || e.chartConfig || {},
@@ -1015,44 +887,44 @@ function _t(e, t) {
1015
887
  displayConfig: e.displayConfig || {}
1016
888
  };
1017
889
  }
1018
- function vt(e) {
890
+ function ht(e) {
1019
891
  try {
1020
892
  let t = JSON.parse(e.query);
1021
- if (F(t)) return {
893
+ if (le(t)) return {
1022
894
  version: 1,
1023
895
  analysisType: "retention",
1024
896
  activeView: "chart",
1025
- charts: { retention: _t(e, "retention") },
897
+ charts: { retention: mt(e, "retention") },
1026
898
  query: t
1027
899
  };
1028
- if (gt(t)) return {
900
+ if (pt(t)) return {
1029
901
  version: 1,
1030
902
  analysisType: "flow",
1031
903
  activeView: "chart",
1032
- charts: { flow: _t(e, "flow") },
904
+ charts: { flow: mt(e, "flow") },
1033
905
  query: t
1034
906
  };
1035
- if (ht(t)) return {
907
+ if (ft(t)) return {
1036
908
  version: 1,
1037
909
  analysisType: "funnel",
1038
910
  activeView: "chart",
1039
- charts: { funnel: _t(e, "funnel") },
911
+ charts: { funnel: mt(e, "funnel") },
1040
912
  query: t
1041
913
  };
1042
- if (mt(t)) return yt(t, e);
914
+ if (dt(t)) return gt(t, e);
1043
915
  if (e.analysisType === "funnel") return {
1044
916
  version: 1,
1045
917
  analysisType: "funnel",
1046
918
  activeView: "chart",
1047
- charts: { funnel: _t(e, "funnel") },
1048
- query: ht(t) ? t : { funnel: {
919
+ charts: { funnel: mt(e, "funnel") },
920
+ query: ft(t) ? t : { funnel: {
1049
921
  bindingKey: "",
1050
922
  timeDimension: "",
1051
923
  steps: []
1052
924
  } }
1053
925
  };
1054
- let n = _t(e, "query");
1055
- return pt(t) ? {
926
+ let n = mt(e, "query");
927
+ return ut(t) ? {
1056
928
  version: 1,
1057
929
  analysisType: "query",
1058
930
  activeView: "chart",
@@ -1071,10 +943,10 @@ function vt(e) {
1071
943
  query: t
1072
944
  };
1073
945
  } catch (e) {
1074
- return console.warn("[configMigration] Failed to parse legacy portlet:", e), ot();
946
+ return console.warn("[configMigration] Failed to parse legacy portlet:", e), rt();
1075
947
  }
1076
948
  }
1077
- function yt(e, t) {
949
+ function gt(e, t) {
1078
950
  let n = "";
1079
951
  e.funnelBindingKey?.dimension && (typeof e.funnelBindingKey.dimension == "string" ? n = e.funnelBindingKey.dimension : Array.isArray(e.funnelBindingKey.dimension) && (n = e.funnelBindingKey.dimension.map((e) => ({
1080
952
  cube: e.cube,
@@ -1090,7 +962,7 @@ function yt(e, t) {
1090
962
  version: 1,
1091
963
  analysisType: "funnel",
1092
964
  activeView: "chart",
1093
- charts: { funnel: t ? _t(t, "funnel") : {
965
+ charts: { funnel: t ? mt(t, "funnel") : {
1094
966
  chartType: "funnel",
1095
967
  chartConfig: {},
1096
968
  displayConfig: {}
@@ -1103,20 +975,20 @@ function yt(e, t) {
1103
975
  } }
1104
976
  };
1105
977
  }
1106
- function bt(e) {
1107
- if (at(e)) return e;
1108
- if (e && typeof e == "object" && "query" in e && typeof e.query == "string") return vt(e);
978
+ function _t(e) {
979
+ if (nt(e)) return e;
980
+ if (e && typeof e == "object" && "query" in e && typeof e.query == "string") return ht(e);
1109
981
  if (e && typeof e == "object") try {
1110
- return vt({ query: JSON.stringify(e) });
982
+ return ht({ query: JSON.stringify(e) });
1111
983
  } catch {}
1112
- return console.warn("[configMigration] Unknown config format, using defaults"), ot();
984
+ return console.warn("[configMigration] Unknown config format, using defaults"), rt();
1113
985
  }
1114
- function xt(e) {
1115
- return typeof e == "object" && !!e && "analysisConfig" in e && at(e.analysisConfig);
986
+ function vt(e) {
987
+ return typeof e == "object" && !!e && "analysisConfig" in e && nt(e.analysisConfig);
1116
988
  }
1117
- function St(e) {
1118
- if (xt(e)) return e;
1119
- let t = vt({
989
+ function yt(e) {
990
+ if (vt(e)) return e;
991
+ let t = ht({
1120
992
  query: e.query ?? "{}",
1121
993
  chartType: e.chartType,
1122
994
  chartConfig: e.chartConfig,
@@ -1133,7 +1005,27 @@ function St(e) {
1133
1005
  }
1134
1006
  //#endregion
1135
1007
  //#region src/client/utils/filterUtils.ts
1136
- function Ct(e) {
1008
+ function bt(e) {
1009
+ return e ? e.map((e) => typeof e == "string" ? { filterId: e } : e) : [];
1010
+ }
1011
+ function xt(e) {
1012
+ return e.map((e) => e.member ? e : e.filterId);
1013
+ }
1014
+ function St(e, t) {
1015
+ return e ? e.some((e) => typeof e == "string" ? e === t : e.filterId === t) : !1;
1016
+ }
1017
+ function Ct(e, t) {
1018
+ if (!e) return;
1019
+ let n = e.find((e) => typeof e == "string" ? e === t : e.filterId === t);
1020
+ return typeof n == "object" ? n.member : void 0;
1021
+ }
1022
+ function wt(e, t) {
1023
+ return t && "member" in e && "operator" in e ? {
1024
+ ...e,
1025
+ member: t
1026
+ } : e;
1027
+ }
1028
+ function Tt(e) {
1137
1029
  if ("member" in e && "operator" in e) {
1138
1030
  let t = e;
1139
1031
  return [
@@ -1143,32 +1035,32 @@ function Ct(e) {
1143
1035
  "isNotEmpty"
1144
1036
  ].includes(t.operator) || t.operator === "inDateRange" && t.dateRange ? !0 : !!(t.values && t.values.length > 0);
1145
1037
  }
1146
- return "type" in e && "filters" in e ? e.filters.filter((e) => Ct(e)).length > 0 : !1;
1038
+ return "type" in e && "filters" in e ? e.filters.filter((e) => Tt(e)).length > 0 : !1;
1147
1039
  }
1148
- function wt(e, t) {
1149
- return !e || !e.length || !t || !t.length ? [] : e.filter((e) => t.includes(e.id)).filter((e) => Ct(e.filter)).map((e) => e.filter);
1040
+ function Et(e, t) {
1041
+ return !e || !e.length || !t || !t.length ? [] : e.filter((e) => St(t, e.id)).filter((e) => Tt(e.filter)).map((e) => wt(e.filter, Ct(t, e.id)));
1150
1042
  }
1151
- function Tt(e) {
1043
+ function Dt(e) {
1152
1044
  if ("type" in e && "filters" in e) {
1153
- let t = e, n = t.filters.map(Tt);
1045
+ let t = e, n = t.filters.map(Dt);
1154
1046
  return t.type === "and" ? { and: n } : { or: n };
1155
1047
  }
1156
1048
  return e;
1157
1049
  }
1158
- function Et(e, t, n = "server") {
1159
- return !e || e.length === 0 ? t : !t || t.length === 0 ? [...e] : n === "server" ? [{ and: [...e, ...t].map(Tt) }] : [{
1050
+ function Ot(e, t, n = "server") {
1051
+ return !e || e.length === 0 ? t : !t || t.length === 0 ? [...e] : n === "server" ? [{ and: [...e, ...t].map(Dt) }] : [{
1160
1052
  type: "and",
1161
1053
  filters: [...e, ...t]
1162
1054
  }];
1163
1055
  }
1164
- function Dt(e) {
1056
+ function kt(e) {
1165
1057
  let t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
1166
1058
  return e.portlets.forEach((e) => {
1167
1059
  try {
1168
- let i = St(e).analysisConfig.query, a = (e) => {
1060
+ let i = yt(e).analysisConfig.query, a = (e) => {
1169
1061
  e.measures && Array.isArray(e.measures) && e.measures.forEach((e) => t.add(e)), e.dimensions && Array.isArray(e.dimensions) && e.dimensions.forEach((e) => n.add(e)), e.timeDimensions && Array.isArray(e.timeDimensions) && e.timeDimensions.forEach((e) => {
1170
1062
  e.dimension && r.add(e.dimension);
1171
- }), e.filters && Ot(e.filters).forEach((e) => {
1063
+ }), e.filters && At(e.filters).forEach((e) => {
1172
1064
  n.add(e);
1173
1065
  });
1174
1066
  };
@@ -1185,33 +1077,161 @@ function Dt(e) {
1185
1077
  timeDimensions: r
1186
1078
  };
1187
1079
  }
1188
- function Ot(e) {
1080
+ function At(e) {
1189
1081
  let t = [];
1190
1082
  return e.forEach((e) => {
1191
- "member" in e ? t.push(e.member) : "type" in e && "filters" in e && t.push(...Ot(e.filters));
1083
+ "member" in e ? t.push(e.member) : "type" in e && "filters" in e && t.push(...At(e.filters));
1192
1084
  }), [...new Set(t)];
1193
1085
  }
1194
- function kt(e) {
1086
+ function jt(e) {
1195
1087
  if (e.dateRange) return e.dateRange;
1196
1088
  if (e.values && e.values.length > 0) return e.values.length === 1 ? e.values[0] : e.values;
1197
1089
  }
1198
- function At(e, t, n) {
1090
+ function Mt(e, t, n) {
1199
1091
  if (!n || n.length === 0 || !t || t.length === 0) return n;
1200
- let r = e?.filter((e) => e.isUniversalTime && t.includes(e.id))?.filter((e) => {
1092
+ let r = e?.filter((e) => e.isUniversalTime && St(t, e.id))?.filter((e) => {
1201
1093
  if (!("member" in e.filter)) return !1;
1202
1094
  let t = e.filter;
1203
- return kt(t) !== void 0;
1095
+ return jt(t) !== void 0;
1204
1096
  });
1205
1097
  if (!r || r.length === 0) return n;
1206
- let i = r[0].filter, a = kt(i);
1098
+ let i = r[0].filter, a = jt(i);
1207
1099
  return n.map((e) => ({
1208
1100
  ...e,
1209
1101
  dateRange: a
1210
1102
  }));
1211
1103
  }
1212
1104
  //#endregion
1105
+ //#region src/client/hooks/useDrillInteraction.ts
1106
+ function Nt(e) {
1107
+ let { query: t, metadata: n, onQueryChange: r, chartConfig: i, dashboardFilters: a, dashboardFilterMapping: o, enabled: s = !0 } = e, [c, l] = Y(!1), [u, d] = Y(null), [f, p] = Y([]), [m, h] = Y(null), [g, _] = Y([]), [v, y] = Y(null), [b, x] = Y(null), [S, C] = Y(null), [w, T] = Y(null), E = q(() => {
1108
+ if (!s || !n) return !1;
1109
+ let e = (t.timeDimensions?.length ?? 0) > 0, r = (t.dimensions?.length ?? 0) > 0, i = t.measures?.some((e) => Re(e, n) !== null) ?? !1;
1110
+ return e || r || i;
1111
+ }, [
1112
+ s,
1113
+ n,
1114
+ t
1115
+ ]), D = q(() => !a || !o ? !1 : a.some((e) => e.isUniversalTime && St(o, e.id)), [a, o]);
1116
+ return {
1117
+ handleDataPointClick: G((e) => {
1118
+ if (!s || !n) return;
1119
+ let r = Be(e, t, n, a, o);
1120
+ r.length !== 0 && (h(e), p(r), d(e.position), l(!0));
1121
+ }, [
1122
+ s,
1123
+ n,
1124
+ t,
1125
+ a,
1126
+ o
1127
+ ]),
1128
+ menuOpen: c,
1129
+ menuPosition: u,
1130
+ menuOptions: f,
1131
+ handleOptionSelect: G((e) => {
1132
+ if (!(!m || !n)) {
1133
+ try {
1134
+ if (e.targetGranularity && g.length > 0) {
1135
+ let n = g.findIndex((t) => t.granularity === e.targetGranularity);
1136
+ if (n !== -1) {
1137
+ let e = n + 1;
1138
+ if (e < g.length) {
1139
+ let t = g.slice(0, e), n = t[t.length - 1];
1140
+ _(t), r(n.query), C(n.chartConfig || null);
1141
+ }
1142
+ l(!1), h(null);
1143
+ return;
1144
+ }
1145
+ if (v && e.targetGranularity === v) {
1146
+ let e = w || t;
1147
+ _([]), C(b), x(null), y(null), T(null), r(e), l(!1), h(null);
1148
+ return;
1149
+ }
1150
+ }
1151
+ if (e.targetDimension && g.length > 0) {
1152
+ let t = g.findIndex((t) => t.dimension === e.targetDimension);
1153
+ if (t !== -1) {
1154
+ let e = t + 1;
1155
+ if (e < g.length) {
1156
+ let t = g.slice(0, e), n = t[t.length - 1];
1157
+ _(t), r(n.query), C(n.chartConfig || null);
1158
+ }
1159
+ l(!1), h(null);
1160
+ return;
1161
+ }
1162
+ }
1163
+ let a = Ge(e, m, t, n);
1164
+ if (g.length === 0 && (T(t), i && x(i), e.targetGranularity && t.timeDimensions?.[0])) {
1165
+ let e = t.timeDimensions[0].granularity;
1166
+ e && y(e);
1167
+ }
1168
+ _((e) => [...e, a.pathEntry]), r(a.query), a.chartConfig && C(a.chartConfig);
1169
+ } catch (e) {
1170
+ console.error("Error building drill query:", e);
1171
+ }
1172
+ l(!1), h(null);
1173
+ }
1174
+ }, [
1175
+ m,
1176
+ n,
1177
+ t,
1178
+ g,
1179
+ v,
1180
+ w,
1181
+ r,
1182
+ i,
1183
+ b
1184
+ ]),
1185
+ closeMenu: G(() => {
1186
+ l(!1), d(null), p([]), h(null);
1187
+ }, []),
1188
+ drillPath: g,
1189
+ navigateBack: G(() => {
1190
+ if (g.length !== 0) if (g.length === 1) {
1191
+ let e = w || t;
1192
+ _([]), C(b), x(null), y(null), T(null), r(e);
1193
+ } else {
1194
+ let e = g.slice(0, -1), t = e[e.length - 1];
1195
+ _(e), r(t.query), C(t.chartConfig || null);
1196
+ }
1197
+ }, [
1198
+ g,
1199
+ r,
1200
+ b,
1201
+ w,
1202
+ t
1203
+ ]),
1204
+ navigateToLevel: G((e) => {
1205
+ if (e <= 0) {
1206
+ let e = w || t;
1207
+ _([]), C(b), x(null), y(null), T(null), r(e);
1208
+ } else if (e < g.length) {
1209
+ let t = g.slice(0, e), n = t[t.length - 1];
1210
+ _(t), r(n.query), C(n.chartConfig || null);
1211
+ }
1212
+ }, [
1213
+ g,
1214
+ r,
1215
+ b,
1216
+ w,
1217
+ t
1218
+ ]),
1219
+ drillEnabled: E,
1220
+ hasDashboardFilterMatch: D,
1221
+ currentChartConfig: S
1222
+ };
1223
+ }
1224
+ //#endregion
1225
+ //#region src/client/types.ts
1226
+ function Pt(e) {
1227
+ return typeof e == "object" && !!e && "queries" in e && Array.isArray(e.queries) && e.queries.length > 0;
1228
+ }
1229
+ function Ft(e) {
1230
+ return typeof e == "object" && !!e && "funnel" in e && typeof e.funnel == "object";
1231
+ }
1232
+ //#endregion
1213
1233
  //#region src/client/components/AnalyticsPortlet.tsx
1214
- var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, dashboardFilters: i, dashboardFilterMapping: o, eagerLoad: s = !1, isVisible: c, height: l = 300, title: u, colorPalette: f, loadingComponent: p, onDebugDataReady: h }, v) => {
1234
+ var It = V.memo(U(({ query: e, chartType: t, chartConfig: n, displayConfig: r, dashboardFilters: i, dashboardFilterMapping: o, eagerLoad: s = !1, isVisible: c, height: l = 300, title: u, colorPalette: f, loadingComponent: p, onDebugDataReady: h }, v) => {
1215
1235
  let { t: y } = P(), b = J(h), { ref: x, inView: S } = a({
1216
1236
  root: oe(),
1217
1237
  rootMargin: "500px",
@@ -1222,7 +1242,7 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
1222
1242
  K(() => {
1223
1243
  b.current = h;
1224
1244
  }, [h]);
1225
- let { config: D } = m(t), O = D.skipQuery === !0, te = q(() => i?.filter((e) => !e.isUniversalTime), [i]), { queryObject: k, multiQueryConfig: j, serverFunnelQuery: M, serverFlowQuery: N, serverRetentionQuery: le } = q(() => {
1245
+ let { config: D } = m(t), O = D.skipQuery === !0, te = q(() => i?.filter((e) => !e.isUniversalTime), [i]), { queryObject: k, multiQueryConfig: j, serverFunnelQuery: M, serverFlowQuery: N, serverRetentionQuery: F } = q(() => {
1226
1246
  if (O) return {
1227
1247
  queryObject: null,
1228
1248
  multiQueryConfig: null,
@@ -1231,8 +1251,8 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
1231
1251
  serverRetentionQuery: null
1232
1252
  };
1233
1253
  try {
1234
- let t = JSON.parse(e), n = wt(te, o);
1235
- if (F(t)) return {
1254
+ let t = JSON.parse(e), n = Et(te, o);
1255
+ if (le(t)) return {
1236
1256
  queryObject: null,
1237
1257
  multiQueryConfig: null,
1238
1258
  serverFunnelQuery: null,
@@ -1246,7 +1266,7 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
1246
1266
  serverFlowQuery: t,
1247
1267
  serverRetentionQuery: null
1248
1268
  };
1249
- if (Qe(t)) {
1269
+ if (Ft(t)) {
1250
1270
  let e = t, r = {
1251
1271
  ...e,
1252
1272
  funnel: {
@@ -1256,9 +1276,9 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
1256
1276
  };
1257
1277
  if (n.length > 0 && r.funnel.steps.length > 0) {
1258
1278
  let e = { ...r.funnel.steps[0] };
1259
- e.filter = Et(n, e.filter ? Array.isArray(e.filter) ? e.filter : [e.filter] : []), r.funnel.steps[0] = e;
1279
+ e.filter = Ot(n, e.filter ? Array.isArray(e.filter) ? e.filter : [e.filter] : []), r.funnel.steps[0] = e;
1260
1280
  }
1261
- let a = i?.filter((e) => e.isUniversalTime && o?.includes(e.id));
1281
+ let a = i?.filter((e) => e.isUniversalTime && St(o, e.id));
1262
1282
  if (a && a.length > 0 && r.funnel.steps.length > 0) {
1263
1283
  let e = a[0];
1264
1284
  if ("member" in e.filter) {
@@ -1290,21 +1310,21 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
1290
1310
  serverRetentionQuery: null
1291
1311
  };
1292
1312
  }
1293
- if (Ze(t)) return {
1313
+ if (Pt(t)) return {
1294
1314
  queryObject: null,
1295
1315
  multiQueryConfig: {
1296
1316
  ...t,
1297
1317
  queries: t.queries.map((e) => ({
1298
1318
  ...e,
1299
- filters: Et(n, e.filters),
1300
- timeDimensions: At(i, o, e.timeDimensions)
1319
+ filters: Ot(n, e.filters),
1320
+ timeDimensions: Mt(i, o, e.timeDimensions)
1301
1321
  }))
1302
1322
  },
1303
1323
  serverFunnelQuery: null,
1304
1324
  serverFlowQuery: null,
1305
1325
  serverRetentionQuery: null
1306
1326
  };
1307
- let r = Et(n, t.filters), a = At(i, o, t.timeDimensions);
1327
+ let r = Ot(n, t.filters), a = Mt(i, o, t.timeDimensions);
1308
1328
  return {
1309
1329
  queryObject: {
1310
1330
  ...t,
@@ -1331,16 +1351,16 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
1331
1351
  te,
1332
1352
  i,
1333
1353
  o
1334
- ]), I = j !== null, L = M !== null, R = N !== null, z = le !== null, [ue, B] = Y(null), V = k ? JSON.stringify(k) : null, de = J(null);
1354
+ ]), I = j !== null, L = M !== null, R = N !== null, z = F !== null, [ue, B] = Y(null), V = k ? JSON.stringify(k) : null, de = J(null);
1335
1355
  K(() => {
1336
1356
  V !== de.current && (de.current = V, ue && B(null));
1337
1357
  }, [V, ue]);
1338
- let H = ue || k, { meta: U } = se(), W = Xe({
1358
+ let H = ue || k, { meta: fe } = se(), U = Nt({
1339
1359
  query: H || {
1340
1360
  measures: [],
1341
1361
  dimensions: []
1342
1362
  },
1343
- metadata: U,
1363
+ metadata: fe,
1344
1364
  onQueryChange: (e) => {
1345
1365
  B(e);
1346
1366
  },
@@ -1348,11 +1368,11 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
1348
1368
  dashboardFilters: i,
1349
1369
  dashboardFilterMapping: o,
1350
1370
  enabled: !I && !L && !R && !z && !!H
1351
- }), fe = G(() => {
1352
- W.drillPath.length === 1 && B(null), W.navigateBack();
1353
- }, [W]), pe = G((e) => {
1354
- e === 0 && B(null), W.navigateToLevel(e);
1355
- }, [W]), me = !H || O || !s && !w || I || L || R || z, he = !j || O || !s && !w || L || R || z, X = !L || O || !s && !w, _e = !R || O || !s && !w, ve = !z || O || !s && !w, ye = g(), be = C(H, {
1371
+ }), W = G(() => {
1372
+ U.drillPath.length === 1 && B(null), U.navigateBack();
1373
+ }, [U]), pe = G((e) => {
1374
+ e === 0 && B(null), U.navigateToLevel(e);
1375
+ }, [U]), me = !H || O || !s && !w || I || L || R || z, he = !j || O || !s && !w || L || R || z, X = !L || O || !s && !w, _e = !R || O || !s && !w, ve = !z || O || !s && !w, ye = g(), be = C(H, {
1356
1376
  skip: me,
1357
1377
  resetResultSetOnChange: !0,
1358
1378
  debounceMs: 100
@@ -1367,17 +1387,17 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
1367
1387
  }), $ = A(N, {
1368
1388
  skip: _e,
1369
1389
  debounceMs: 100
1370
- }), we = T(le, {
1390
+ }), we = T(F, {
1371
1391
  skip: ve,
1372
1392
  debounceMs: 100
1373
1393
  }), Te = I ? null : be.resultSet, Ee = z ? we.isLoading || we.isDebouncing : R ? $.isLoading || $.isDebouncing : L ? Ce.isExecuting || Ce.isDebouncing : I ? Se.isLoading : be.isLoading, De = z ? we.isFetching : R ? $.isFetching : L ? Ce.isExecuting : I ? Se.isFetching : be.isFetching, Oe = z ? we.error : R ? $.error : L ? Ce.error : I ? Se.error : be.error, Ae = z || R ? null : L ? Ce.chartData : I ? Se.data : null, je = R ? $.data : null, Me = z ? we.chartData : null;
1374
1394
  ge(v, () => ({ refresh: (e) => {
1375
1395
  let t = e?.bustCache ?? !1;
1376
- if (z && le) {
1396
+ if (z && F) {
1377
1397
  let e = [
1378
1398
  "cube",
1379
1399
  "retention",
1380
- JSON.stringify(le)
1400
+ JSON.stringify(F)
1381
1401
  ];
1382
1402
  t ? ye.removeQueries({ queryKey: e }) : ye.invalidateQueries({ queryKey: e }), we.refetch();
1383
1403
  } else if (R && N) {
@@ -1413,7 +1433,7 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
1413
1433
  j,
1414
1434
  H,
1415
1435
  ye,
1416
- le,
1436
+ F,
1417
1437
  N,
1418
1438
  M,
1419
1439
  we,
@@ -1459,11 +1479,11 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
1459
1479
  });
1460
1480
  return;
1461
1481
  }
1462
- if (z && le && Me) {
1482
+ if (z && F && Me) {
1463
1483
  b.current({
1464
1484
  chartConfig: n || {},
1465
1485
  displayConfig: r || {},
1466
- queryObject: le,
1486
+ queryObject: F,
1467
1487
  data: Me,
1468
1488
  chartType: t,
1469
1489
  cacheInfo: we.cacheInfo ?? void 0
@@ -1479,9 +1499,9 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
1479
1499
  }
1480
1500
  })();
1481
1501
  if (e) {
1482
- let i = W.drillPath.length > 0 ? {
1502
+ let i = U.drillPath.length > 0 ? {
1483
1503
  isDrilling: !0,
1484
- drillPath: W.drillPath.map((e) => ({
1504
+ drillPath: U.drillPath.map((e) => ({
1485
1505
  id: e.id,
1486
1506
  label: e.label,
1487
1507
  clickedValue: e.clickedValue,
@@ -1489,12 +1509,12 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
1489
1509
  granularity: e.granularity,
1490
1510
  hierarchy: e.hierarchy
1491
1511
  })),
1492
- currentDrillDepth: W.drillPath.length,
1512
+ currentDrillDepth: U.drillPath.length,
1493
1513
  originalQuery: k,
1494
1514
  activeQuery: H
1495
1515
  } : void 0;
1496
1516
  b.current({
1497
- chartConfig: W.currentChartConfig || n || {},
1517
+ chartConfig: U.currentChartConfig || n || {},
1498
1518
  displayConfig: r || {},
1499
1519
  queryObject: H || k,
1500
1520
  data: e,
@@ -1519,14 +1539,14 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
1519
1539
  Ae,
1520
1540
  M,
1521
1541
  N,
1522
- le,
1542
+ F,
1523
1543
  je,
1524
1544
  Me,
1525
1545
  $.cacheInfo,
1526
1546
  Ce.cacheInfo,
1527
1547
  we.cacheInfo,
1528
- W.drillPath,
1529
- W.currentChartConfig
1548
+ U.drillPath,
1549
+ U.currentChartConfig
1530
1550
  ]);
1531
1551
  let Fe = !O && D.dropZones.some((e) => e.mandatory === !0);
1532
1552
  if (!n && Fe) return /* @__PURE__ */ Z("div", {
@@ -1616,15 +1636,15 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
1616
1636
  style: { backgroundColor: "rgba(var(--dc-primary-rgb), 0.05)" },
1617
1637
  children: JSON.stringify({
1618
1638
  chartType: t,
1619
- chartConfig: W.currentChartConfig || n,
1639
+ chartConfig: U.currentChartConfig || n,
1620
1640
  displayConfig: r
1621
1641
  }, null, 2)
1622
1642
  })] })]
1623
1643
  })
1624
1644
  ]
1625
1645
  });
1626
- if (!(z ? Me !== null && le !== null : R ? je !== null && N !== null : L ? Ae !== null && M !== null : I ? Ae !== null && j !== null : Te !== null && k !== null)) {
1627
- let e = W.drillPath.length > 0;
1646
+ if (!(z ? Me !== null && F !== null : R ? je !== null && N !== null : L ? Ae !== null && M !== null : I ? Ae !== null && j !== null : Te !== null && k !== null)) {
1647
+ let e = U.drillPath.length > 0;
1628
1648
  return /* @__PURE__ */ Q("div", {
1629
1649
  ref: x,
1630
1650
  className: "dc:flex dc:flex-col dc:w-full",
@@ -1632,8 +1652,8 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
1632
1652
  children: [e && /* @__PURE__ */ Z("div", {
1633
1653
  className: "dc:mb-2 dc:flex-shrink-0",
1634
1654
  children: /* @__PURE__ */ Z(Pe, {
1635
- path: W.drillPath,
1636
- onNavigate: fe,
1655
+ path: U.drillPath,
1656
+ onNavigate: W,
1637
1657
  onLevelClick: pe
1638
1658
  })
1639
1659
  }), /* @__PURE__ */ Z("div", {
@@ -1686,16 +1706,16 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
1686
1706
  })]
1687
1707
  })
1688
1708
  });
1689
- let a = i === "markdown" ? [] : Ie, o = !I && !L && !R && !z && W.drillEnabled;
1709
+ let a = i === "markdown" ? [] : Ie, o = !I && !L && !R && !z && U.drillEnabled;
1690
1710
  return /* @__PURE__ */ Z(_, {
1691
1711
  chartType: i,
1692
1712
  data: a,
1693
- chartConfig: o && W.currentChartConfig ? W.currentChartConfig : n,
1713
+ chartConfig: o && U.currentChartConfig ? U.currentChartConfig : n,
1694
1714
  displayConfig: r,
1695
1715
  queryObject: H ?? void 0,
1696
1716
  height: e,
1697
1717
  colorPalette: f,
1698
- onDataPointClick: o ? W.handleDataPointClick : void 0,
1718
+ onDataPointClick: o ? U.handleDataPointClick : void 0,
1699
1719
  drillEnabled: o,
1700
1720
  fallback: /* @__PURE__ */ Z("div", {
1701
1721
  className: "dc:flex dc:items-center dc:justify-center dc:w-full",
@@ -1719,7 +1739,7 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
1719
1739
  })
1720
1740
  });
1721
1741
  }
1722
- }, Re = !I && !L && !R && !z && W.drillEnabled;
1742
+ }, Re = !I && !L && !R && !z && U.drillEnabled;
1723
1743
  return /* @__PURE__ */ Q("div", {
1724
1744
  ref: x,
1725
1745
  className: "dc:w-full dc:h-full dc:relative",
@@ -1735,11 +1755,11 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
1735
1755
  children: /* @__PURE__ */ Q("div", {
1736
1756
  className: "dc:w-full dc:h-full dc:flex dc:flex-col dc:flex-1",
1737
1757
  style: { minHeight: t === "markdown" ? void 0 : "200px" },
1738
- children: [Re && W.drillPath.length > 0 && /* @__PURE__ */ Z("div", {
1758
+ children: [Re && U.drillPath.length > 0 && /* @__PURE__ */ Z("div", {
1739
1759
  className: "dc:mb-2 dc:flex-shrink-0",
1740
1760
  children: /* @__PURE__ */ Z(Pe, {
1741
- path: W.drillPath,
1742
- onNavigate: fe,
1761
+ path: U.drillPath,
1762
+ onNavigate: W,
1743
1763
  onLevelClick: pe
1744
1764
  })
1745
1765
  }), /* @__PURE__ */ Z("div", {
@@ -1747,18 +1767,18 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
1747
1767
  children: Le()
1748
1768
  })]
1749
1769
  })
1750
- }), Re && W.menuOpen && W.menuPosition && /* @__PURE__ */ Z(ke, {
1751
- options: W.menuOptions,
1752
- position: W.menuPosition,
1753
- onSelect: W.handleOptionSelect,
1754
- onClose: W.closeMenu
1770
+ }), Re && U.menuOpen && U.menuPosition && /* @__PURE__ */ Z(ke, {
1771
+ options: U.menuOptions,
1772
+ position: U.menuPosition,
1773
+ onSelect: U.handleOptionSelect,
1774
+ onClose: U.closeMenu
1755
1775
  })]
1756
1776
  });
1757
1777
  }));
1758
- jt.displayName = "AnalyticsPortlet";
1778
+ It.displayName = "AnalyticsPortlet";
1759
1779
  //#endregion
1760
1780
  //#region src/client/stores/dashboardStore.tsx
1761
- var Mt = () => ({
1781
+ var Lt = () => ({
1762
1782
  isEditMode: !1,
1763
1783
  selectedFilterId: null,
1764
1784
  isPortletModalOpen: !1,
@@ -1776,13 +1796,13 @@ var Mt = () => ({
1776
1796
  debugData: {},
1777
1797
  thumbnailDirty: !1
1778
1798
  });
1779
- function Nt(e) {
1799
+ function Rt(e) {
1780
1800
  return {
1781
- ...Mt(),
1801
+ ...Lt(),
1782
1802
  isEditMode: e.initialEditMode ?? !1
1783
1803
  };
1784
1804
  }
1785
- function Pt(e, t, n) {
1805
+ function zt(e, t, n) {
1786
1806
  return {
1787
1807
  setEditMode: (t) => e({
1788
1808
  isEditMode: t,
@@ -1844,61 +1864,61 @@ function Pt(e, t, n) {
1844
1864
  reset: () => e(n)
1845
1865
  };
1846
1866
  }
1847
- function Ft(t = {}) {
1848
- let n = Nt(t);
1867
+ function Bt(t = {}) {
1868
+ let n = Rt(t);
1849
1869
  return i()(r(e((e, t) => ({
1850
1870
  ...n,
1851
- ...Pt(e, t, n)
1871
+ ...zt(e, t, n)
1852
1872
  })), { name: "DashboardStore" }));
1853
1873
  }
1854
- var It = null;
1855
- function Lt() {
1856
- return It ||= Ft(), It;
1874
+ var Vt = null;
1875
+ function Ht() {
1876
+ return Vt ||= Bt(), Vt;
1857
1877
  }
1858
- var Rt = U(null);
1859
- function zt({ children: e, initialEditMode: t }) {
1878
+ var Ut = fe(null);
1879
+ function Wt({ children: e, initialEditMode: t }) {
1860
1880
  let n = J(null);
1861
- return n.current ||= Ft({ initialEditMode: t }), /* @__PURE__ */ Z(Rt.Provider, {
1881
+ return n.current ||= Bt({ initialEditMode: t }), /* @__PURE__ */ Z(Ut.Provider, {
1862
1882
  value: n.current,
1863
1883
  children: e
1864
1884
  });
1865
1885
  }
1866
- function Bt(e) {
1867
- let t = he(Rt);
1886
+ function Gt(e) {
1887
+ let t = he(Ut);
1868
1888
  if (!t) throw Error("useDashboardStore must be used within DashboardStoreProvider");
1869
1889
  return n(t, e);
1870
1890
  }
1871
- function Vt() {
1872
- let e = he(Rt);
1891
+ function Kt() {
1892
+ let e = he(Ut);
1873
1893
  if (!e) throw Error("useDashboardStoreApi must be used within DashboardStoreProvider");
1874
1894
  return e;
1875
1895
  }
1876
- function Ht(e) {
1877
- let t = he(Rt), r = n(t ?? Lt(), e);
1896
+ function qt(e) {
1897
+ let t = he(Ut), r = n(t ?? Ht(), e);
1878
1898
  return t ? r : null;
1879
1899
  }
1880
- var Ut = (e) => ({
1900
+ var Jt = (e) => ({
1881
1901
  isEditMode: e.isEditMode,
1882
1902
  selectedFilterId: e.selectedFilterId
1883
- }), Wt = (e) => ({
1903
+ }), Yt = (e) => ({
1884
1904
  isPortletModalOpen: e.isPortletModalOpen,
1885
1905
  editingPortlet: e.editingPortlet,
1886
1906
  isFilterConfigModalOpen: e.isFilterConfigModalOpen,
1887
1907
  filterConfigPortlet: e.filterConfigPortlet,
1888
1908
  isTextModalOpen: e.isTextModalOpen,
1889
1909
  editingTextPortlet: e.editingTextPortlet
1890
- }), Gt = (e) => ({
1910
+ }), Xt = (e) => ({
1891
1911
  draftRows: e.draftRows,
1892
1912
  isDraggingPortlet: e.isDraggingPortlet,
1893
1913
  lastKnownLayout: e.lastKnownLayout,
1894
1914
  isInitialized: e.isInitialized,
1895
1915
  dragState: e.dragState
1896
- }), Kt = (e) => e.debugData, qt = (e) => (t) => t.debugData[e], Jt = (e) => ({
1916
+ }), Zt = (e) => e.debugData, Qt = (e) => (t) => t.debugData[e], $t = (e) => ({
1897
1917
  setEditMode: e.setEditMode,
1898
1918
  toggleEditMode: e.toggleEditMode,
1899
1919
  setSelectedFilterId: e.setSelectedFilterId,
1900
1920
  exitFilterSelectionMode: e.exitFilterSelectionMode
1901
- }), Yt = (e) => ({
1921
+ }), en = (e) => ({
1902
1922
  openPortletModal: e.openPortletModal,
1903
1923
  closePortletModal: e.closePortletModal,
1904
1924
  openTextModal: e.openTextModal,
@@ -1907,17 +1927,17 @@ var Ut = (e) => ({
1907
1927
  closeFilterConfigModal: e.closeFilterConfigModal,
1908
1928
  openDeleteConfirm: e.openDeleteConfirm,
1909
1929
  closeDeleteConfirm: e.closeDeleteConfirm
1910
- }), Xt = (e) => ({
1930
+ }), tn = (e) => ({
1911
1931
  setDraftRows: e.setDraftRows,
1912
1932
  setIsDraggingPortlet: e.setIsDraggingPortlet,
1913
1933
  setLastKnownLayout: e.setLastKnownLayout,
1914
1934
  setIsInitialized: e.setIsInitialized,
1915
1935
  setDragState: e.setDragState,
1916
1936
  clearDragState: e.clearDragState
1917
- }), Zt = (e) => ({
1937
+ }), nn = (e) => ({
1918
1938
  setDebugData: e.setDebugData,
1919
1939
  clearDebugData: e.clearDebugData
1920
- }), Qt = (e) => e.thumbnailDirty, $t = (e) => ({
1940
+ }), rn = (e) => e.thumbnailDirty, an = (e) => ({
1921
1941
  setEditMode: e.setEditMode,
1922
1942
  toggleEditMode: e.toggleEditMode,
1923
1943
  setSelectedFilterId: e.setSelectedFilterId,
@@ -1943,7 +1963,7 @@ var Ut = (e) => ({
1943
1963
  });
1944
1964
  //#endregion
1945
1965
  //#region src/client/hooks/useScrollDetection.ts
1946
- function en(e, { threshold: t = 20, debounceMs: n = 150, container: r } = {}) {
1966
+ function on(e, { threshold: t = 20, debounceMs: n = 150, container: r } = {}) {
1947
1967
  let [i, a] = Y(!1), o = J();
1948
1968
  return K(() => {
1949
1969
  let r = e.current;
@@ -1965,7 +1985,7 @@ function en(e, { threshold: t = 20, debounceMs: n = 150, container: r } = {}) {
1965
1985
  }
1966
1986
  //#endregion
1967
1987
  //#region src/client/hooks/useElementVisibility.ts
1968
- function tn(e, { threshold: t = 80, debounceMs: n = 100, containerRef: r, container: i } = {}) {
1988
+ function sn(e, { threshold: t = 80, debounceMs: n = 100, containerRef: r, container: i } = {}) {
1969
1989
  let [a, o] = Y(!0), s = J(), c = J(!1);
1970
1990
  return K(() => {
1971
1991
  let i = r?.current, a = () => {
@@ -1998,7 +2018,7 @@ function tn(e, { threshold: t = 80, debounceMs: n = 100, containerRef: r, contai
1998
2018
  }
1999
2019
  //#endregion
2000
2020
  //#region src/client/hooks/useDragAutoScroll.ts
2001
- function nn(e, t = {}) {
2021
+ function cn(e, t = {}) {
2002
2022
  let { edgeThreshold: n = 80, maxScrollSpeed: r = 15, enabled: i = !0 } = t, a = J(null), o = J(null), s = J(0), c = G((e) => {
2003
2023
  let t = Math.max(0, Math.min(1, 1 - e / n));
2004
2024
  return Math.round(t * t * r);
@@ -2056,7 +2076,7 @@ function nn(e, t = {}) {
2056
2076
  }
2057
2077
  //#endregion
2058
2078
  //#region src/client/shared/components/CodeBlock.tsx
2059
- var rn = ({ code: e, language: t, title: n, maxHeight: r = "16rem", height: i, className: a = "", headerRight: o }) => {
2079
+ var ln = ({ code: e, language: t, title: n, maxHeight: r = "16rem", height: i, className: a = "", headerRight: o }) => {
2060
2080
  let { t: c } = P(), [l, u] = Y(!1), d = J(null), f = s("copy"), p = s("check");
2061
2081
  return K(() => {
2062
2082
  if (!d.current) return;
@@ -2119,7 +2139,7 @@ var rn = ({ code: e, language: t, title: n, maxHeight: r = "16rem", height: i, c
2119
2139
  };
2120
2140
  //#endregion
2121
2141
  //#region src/client/components/DebugModal.tsx
2122
- function an({ chartConfig: e, displayConfig: t, queryObject: n, data: r, chartType: i, cacheInfo: a }) {
2142
+ function un({ chartConfig: e, displayConfig: t, queryObject: n, data: r, chartType: i, cacheInfo: a }) {
2123
2143
  let { t: o } = P(), [s, c] = Y(!1);
2124
2144
  if (K(() => {
2125
2145
  let e = (e) => {
@@ -2205,37 +2225,37 @@ function an({ chartConfig: e, displayConfig: t, queryObject: n, data: r, chartTy
2205
2225
  /* @__PURE__ */ Q("div", {
2206
2226
  className: "dc:grid dc:grid-cols-1 dc:lg:grid-cols-2 dc:gap-4 dc:flex-1 dc:overflow-auto",
2207
2227
  children: [
2208
- /* @__PURE__ */ Z(rn, {
2228
+ /* @__PURE__ */ Z(ln, {
2209
2229
  code: i,
2210
2230
  language: "json",
2211
2231
  title: "Chart Type",
2212
2232
  maxHeight: "3rem"
2213
2233
  }),
2214
- /* @__PURE__ */ Z(rn, {
2234
+ /* @__PURE__ */ Z(ln, {
2215
2235
  code: l,
2216
2236
  language: "json",
2217
2237
  title: "Field Analysis",
2218
2238
  maxHeight: "8rem"
2219
2239
  }),
2220
- /* @__PURE__ */ Z(rn, {
2240
+ /* @__PURE__ */ Z(ln, {
2221
2241
  code: JSON.stringify(e, null, 2),
2222
2242
  language: "json",
2223
2243
  title: "Chart Config",
2224
2244
  className: "dc:lg:col-span-2"
2225
2245
  }),
2226
- /* @__PURE__ */ Z(rn, {
2246
+ /* @__PURE__ */ Z(ln, {
2227
2247
  code: JSON.stringify(t, null, 2),
2228
2248
  language: "json",
2229
2249
  title: "Display Config",
2230
2250
  className: "dc:lg:col-span-2"
2231
2251
  }),
2232
- /* @__PURE__ */ Z(rn, {
2252
+ /* @__PURE__ */ Z(ln, {
2233
2253
  code: JSON.stringify(n, null, 2),
2234
2254
  language: "json",
2235
2255
  title: "Query Object",
2236
2256
  className: "dc:lg:col-span-2"
2237
2257
  }),
2238
- /* @__PURE__ */ Z(rn, {
2258
+ /* @__PURE__ */ Z(ln, {
2239
2259
  code: JSON.stringify(Array.isArray(r) ? r.slice(0, 3) : r, null, 2),
2240
2260
  language: "json",
2241
2261
  title: "Data Sample (first 3 rows)",
@@ -2306,18 +2326,18 @@ function an({ chartConfig: e, displayConfig: t, queryObject: n, data: r, chartTy
2306
2326
  }
2307
2327
  //#endregion
2308
2328
  //#region src/client/components/DashboardPortletCard.tsx
2309
- var on = {
2329
+ var dn = {
2310
2330
  width: "16px",
2311
2331
  height: "16px",
2312
2332
  color: "currentColor"
2313
2333
  };
2314
- function sn(e, t) {
2334
+ function fn(e, t) {
2315
2335
  if (e === t) return !0;
2316
2336
  if (e.editable !== t.editable || e.layoutMode !== t.layoutMode || e.configEagerLoad !== t.configEagerLoad || e.portlet !== t.portlet || e.dashboardFilters !== t.dashboardFilters || e.colorPalette !== t.colorPalette || e.loadingComponent !== t.loadingComponent || e.callbacks !== t.callbacks || e.icons !== t.icons || e.setPortletRef !== t.setPortletRef || e.setPortletComponentRef !== t.setPortletComponentRef) return !1;
2317
- let n = cn(e.containerProps, t.containerProps), r = cn(e.headerProps, t.headerProps);
2337
+ let n = pn(e.containerProps, t.containerProps), r = pn(e.headerProps, t.headerProps);
2318
2338
  return n && r;
2319
2339
  }
2320
- function cn(e, t) {
2340
+ function pn(e, t) {
2321
2341
  if (e === t) return !0;
2322
2342
  if (!e || !t) return e === t;
2323
2343
  let n = Object.keys(e);
@@ -2325,11 +2345,11 @@ function cn(e, t) {
2325
2345
  for (let r of n) if (e[r] !== t[r]) return !1;
2326
2346
  return !0;
2327
2347
  }
2328
- var ln = V.memo(function({ isTransparent: e, setChartContainerRef: t, setPortletComponentRef: n, renderQuery: r, renderChartType: i, renderChartConfig: a, renderDisplayConfig: o, dashboardFilters: s, dashboardFilterMapping: c, eagerLoad: l, title: u, isMarkdownAutoHeight: d, colorPalette: f, loadingComponent: p, onDebugDataReady: m }) {
2348
+ var mn = V.memo(function({ isTransparent: e, setChartContainerRef: t, setPortletComponentRef: n, renderQuery: r, renderChartType: i, renderChartConfig: a, renderDisplayConfig: o, dashboardFilters: s, dashboardFilterMapping: c, eagerLoad: l, title: u, isMarkdownAutoHeight: d, colorPalette: f, loadingComponent: p, onDebugDataReady: m }) {
2329
2349
  return /* @__PURE__ */ Z("div", {
2330
2350
  ref: t,
2331
2351
  className: `dc:flex-1 dc:min-h-0 dc:flex dc:flex-col${e ? "" : " dc:px-2 dc:py-3 dc:md:px-4 dc:md:py-4"}`,
2332
- children: /* @__PURE__ */ Z(jt, {
2352
+ children: /* @__PURE__ */ Z(It, {
2333
2353
  ref: n,
2334
2354
  query: r,
2335
2355
  chartType: i,
@@ -2345,86 +2365,147 @@ var ln = V.memo(function({ isTransparent: e, setChartContainerRef: t, setPortlet
2345
2365
  onDebugDataReady: m
2346
2366
  })
2347
2367
  });
2348
- }), un = V.memo(function({ portlet: e, editable: t, layoutMode: n = "grid", dashboardFilters: r, configEagerLoad: i, loadingComponent: a, colorPalette: c, containerProps: l, headerProps: d, setPortletRef: m, setPortletComponentRef: h, callbacks: g, icons: _ }) {
2349
- let { analysisConfig: y } = q(() => St(e), [e]), b = y.charts[y.analysisType], x = q(() => JSON.stringify(y.query), [y.query]), S = b?.chartType || "line", C = b?.chartConfig, w = b?.displayConfig, T = Bt((e) => e.isEditMode), E = Bt((e) => e.selectedFilterId), D = Bt((t) => t.debugData[e.id]), O = S === "markdown", ee = n !== "grid" && O && (w?.autoHeight ?? !0), te = O && !!w?.transparentBackground, k = te && !T, A = S === "markdown" ? (w?.hideHeader ?? !0) || !!w?.transparentBackground || !e.title : w?.hideHeader ?? !1, j = Bt((e) => e.setDebugData), { features: ne } = u(), re = s("camera"), ie = s("check"), ae = s("download"), [oe, M] = Y(!1), [N, se] = Y(!1), P = J(null), [ce, le] = Y(!1), [F, I] = Y(!1), [L, R] = Y(!1), [z, ue] = Y(!1);
2368
+ }), hn = V.memo(function({ portlet: e, editable: t, layoutMode: n = "grid", dashboardFilters: r, configEagerLoad: i, loadingComponent: a, colorPalette: c, containerProps: l, headerProps: d, setPortletRef: m, setPortletComponentRef: h, callbacks: g, icons: _ }) {
2369
+ let { analysisConfig: y } = q(() => yt(e), [e]), b = y.charts[y.analysisType], x = q(() => JSON.stringify(y.query), [y.query]), S = b?.chartType || "line", C = b?.chartConfig, w = b?.displayConfig, T = Gt((e) => e.isEditMode), E = Gt((e) => e.selectedFilterId), D = Gt((t) => t.debugData[e.id]), O = S === "markdown", ee = n !== "grid" && O && (w?.autoHeight ?? !0), te = O && !!w?.transparentBackground, k = te && !T, A = S === "markdown" ? (w?.hideHeader ?? !0) || !!w?.transparentBackground || !e.title : w?.hideHeader ?? !1, j = Gt((e) => e.setDebugData), { features: ne } = u(), { t: re } = P(), ie = s("camera"), ae = s("check"), oe = s("download"), [M, N] = Y(!1), [se, ce] = Y(!1), F = J(null), [le, I] = Y(!1), [L, R] = Y(!1), [z, ue] = Y(!1), [B, V] = Y(!1);
2350
2370
  K(() => {
2351
2371
  let e = (e) => {
2352
- e.key === "Shift" && R(!0);
2372
+ e.key === "Shift" && ue(!0);
2353
2373
  }, t = (e) => {
2354
- e.key === "Shift" && R(!1);
2374
+ e.key === "Shift" && ue(!1);
2355
2375
  };
2356
2376
  return window.addEventListener("keydown", e), window.addEventListener("keyup", t), () => {
2357
2377
  window.removeEventListener("keydown", e), window.removeEventListener("keyup", t);
2358
2378
  };
2359
2379
  }, []);
2360
- let B = L && z;
2380
+ let de = z && B;
2361
2381
  K(() => {
2362
- ne.thumbnail?.enabled ? p().then(se) : se(!1);
2382
+ ne.thumbnail?.enabled ? p().then(ce) : ce(!1);
2363
2383
  }, [ne.thumbnail?.enabled]), K(() => {
2364
- ne.xlsExport?.enabled ? o().then(le) : le(!1);
2384
+ ne.xlsExport?.enabled ? o().then(I) : I(!1);
2365
2385
  }, [ne.xlsExport?.enabled]);
2366
- let V = G(async (t) => {
2367
- if (t.stopPropagation(), !(!D || F)) {
2368
- I(!0);
2386
+ let H = G(async (t) => {
2387
+ if (t.stopPropagation(), !(!D || L)) {
2388
+ R(!0);
2369
2389
  try {
2370
2390
  await v(e.title || "export", D);
2371
2391
  } finally {
2372
- I(!1);
2392
+ R(!1);
2373
2393
  }
2374
2394
  }
2375
2395
  }, [
2376
2396
  D,
2377
- F,
2397
+ L,
2378
2398
  e.title
2379
- ]), de = G(async (e) => {
2380
- e.stopPropagation(), P.current && await f(P.current) && (M(!0), setTimeout(() => M(!1), 2e3));
2381
- }, []), H = E ? (e.dashboardFilterMapping || []).includes(E) : !1, U = !!E, W = [
2399
+ ]), fe = G(async (e) => {
2400
+ e.stopPropagation(), F.current && await f(F.current) && (N(!0), setTimeout(() => N(!1), 2e3));
2401
+ }, []), U = E ? St(e.dashboardFilterMapping, E) : !1, W = !!E, pe = q(() => {
2402
+ if (!W || !U || !E) return null;
2403
+ let t = r?.find((e) => e.id === E);
2404
+ if (!t || t.isUniversalTime) return null;
2405
+ let n = Ct(e.dashboardFilterMapping, E);
2406
+ return n ? {
2407
+ field: n,
2408
+ isOverride: !0
2409
+ } : "member" in t.filter && t.filter.member ? {
2410
+ field: t.filter.member,
2411
+ isOverride: !1
2412
+ } : null;
2413
+ }, [
2414
+ W,
2415
+ U,
2416
+ E,
2417
+ r,
2418
+ e.dashboardFilterMapping
2419
+ ]), me = [
2382
2420
  k ? "dc:flex dc:flex-col dc:transition-all" : "bg-dc-surface dc:border dc:rounded-lg dc:flex dc:flex-col dc:transition-all",
2383
2421
  ee ? "" : "dc:h-full",
2384
- U ? "dc:cursor-pointer" : "",
2422
+ W ? "dc:cursor-pointer dc:relative" : "",
2385
2423
  l?.className
2386
- ].filter(Boolean).join(" "), fe = [
2424
+ ].filter(Boolean).join(" "), he = [
2387
2425
  "flex items-center justify-between px-3 py-1.5 md:px-4 md:py-1 border-b border-dc-border shrink-0 bg-dc-surface-secondary rounded-t-lg portlet-drag-handle",
2388
2426
  T ? "cursor-move" : "cursor-default",
2389
2427
  d?.className
2390
- ].filter(Boolean).join(" "), { onClick: pe, className: me, style: he, ...ge } = l ?? {}, { onClick: _e, className: ve, style: ye, ...be } = d ?? {}, xe = G((t) => {
2428
+ ].filter(Boolean).join(" "), { onClick: ge, className: _e, style: ve, ...ye } = l ?? {}, { onClick: be, className: xe, style: Se, ...Ce } = d ?? {}, $ = G((t) => {
2391
2429
  j(e.id, t);
2392
- }, [e.id, j]), Se = G((t) => {
2430
+ }, [e.id, j]), we = G((t) => {
2393
2431
  m(e.id, t);
2394
- }, [e.id, m]), Ce = G((t) => {
2432
+ }, [e.id, m]), Te = G((t) => {
2395
2433
  h(e.id, t);
2396
- }, [e.id, h]), $ = G((e) => {
2397
- P.current = e;
2434
+ }, [e.id, h]), Ee = G((e) => {
2435
+ F.current = e;
2398
2436
  }, []);
2399
2437
  return /* @__PURE__ */ Q("div", {
2400
2438
  "data-portlet-id": e.id,
2401
- ref: Se,
2402
- className: W,
2439
+ ref: we,
2440
+ className: me,
2403
2441
  style: {
2404
2442
  boxShadow: k ? "none" : "var(--dc-shadow-sm)",
2405
- borderColor: k ? "transparent" : U && H ? "var(--dc-primary)" : "var(--dc-border)",
2406
- borderWidth: k ? "0" : U && H ? "2px" : "1px",
2407
- backgroundColor: k ? "transparent" : U && H ? "rgba(var(--dc-primary-rgb), 0.05)" : "var(--dc-surface)",
2408
- opacity: U && !H ? "0.5" : "1",
2409
- ...he
2443
+ borderColor: k ? "transparent" : W && U ? "var(--dc-primary)" : "var(--dc-border)",
2444
+ borderWidth: k ? "0" : W && U ? "2px" : "1px",
2445
+ backgroundColor: k ? "transparent" : W && U ? "rgba(var(--dc-primary-rgb), 0.05)" : "var(--dc-surface)",
2446
+ opacity: W && !U ? "0.5" : "1",
2447
+ ...ve
2410
2448
  },
2411
2449
  onClick: (t) => {
2412
- U && E && (t.stopPropagation(), g.onToggleFilter(e.id, E)), pe?.(t);
2450
+ W && E && (t.stopPropagation(), g.onToggleFilter(e.id, E)), ge?.(t);
2413
2451
  },
2414
- ...ge,
2415
- children: [(!A || T) && /* @__PURE__ */ Q("div", {
2416
- className: fe,
2417
- style: ye,
2418
- onClick: (e) => {
2419
- _e?.(e);
2420
- },
2421
- ...be,
2422
- children: [/* @__PURE__ */ Q("div", {
2423
- className: "dc:flex dc:items-center dc:gap-2 dc:flex-1 dc:min-w-0",
2424
- children: [/* @__PURE__ */ Z("h3", {
2425
- className: "dc:font-semibold dc:text-sm text-dc-text dc:truncate",
2426
- children: e.title
2427
- }), t && T && D && /* @__PURE__ */ Z("div", {
2452
+ ...ye,
2453
+ children: [
2454
+ pe && /* @__PURE__ */ Q("button", {
2455
+ onClick: (t) => {
2456
+ t.stopPropagation(), g.onOpenFilterConfig(e);
2457
+ },
2458
+ onTouchEnd: (t) => {
2459
+ t.stopPropagation(), t.preventDefault(), g.onOpenFilterConfig(e);
2460
+ },
2461
+ title: re("dashboard.filterFieldChipHint"),
2462
+ className: "dc:absolute dc:bottom-2 dc:left-1/2 dc:-translate-x-1/2 dc:z-10 dc:flex dc:items-center dc:gap-1 dc:px-2.5 dc:py-1 dc:text-xs dc:font-medium dc:rounded-full dc:border dc:cursor-pointer dc:transition-colors dc:max-w-[90%] dc:truncate",
2463
+ style: {
2464
+ backgroundColor: pe.isOverride ? "var(--dc-primary)" : "var(--dc-surface)",
2465
+ color: pe.isOverride ? "white" : "var(--dc-text-secondary)",
2466
+ borderColor: "var(--dc-primary)",
2467
+ boxShadow: "var(--dc-shadow-sm)"
2468
+ },
2469
+ children: [/* @__PURE__ */ Z(_.FilterIcon, { style: {
2470
+ width: "12px",
2471
+ height: "12px"
2472
+ } }), /* @__PURE__ */ Z("span", {
2473
+ className: "dc:truncate",
2474
+ children: pe.field
2475
+ })]
2476
+ }),
2477
+ (!A || T) && /* @__PURE__ */ Q("div", {
2478
+ className: he,
2479
+ style: Se,
2480
+ onClick: (e) => {
2481
+ be?.(e);
2482
+ },
2483
+ ...Ce,
2484
+ children: [/* @__PURE__ */ Q("div", {
2485
+ className: "dc:flex dc:items-center dc:gap-2 dc:flex-1 dc:min-w-0",
2486
+ children: [/* @__PURE__ */ Z("h3", {
2487
+ className: "dc:font-semibold dc:text-sm text-dc-text dc:truncate",
2488
+ children: e.title
2489
+ }), t && T && D && /* @__PURE__ */ Z("div", {
2490
+ onMouseDown: (e) => {
2491
+ e.stopPropagation(), e.preventDefault();
2492
+ },
2493
+ onClick: (e) => e.stopPropagation(),
2494
+ onTouchStart: (e) => {
2495
+ e.stopPropagation(), e.preventDefault();
2496
+ },
2497
+ onTouchEnd: (e) => e.stopPropagation(),
2498
+ children: /* @__PURE__ */ Z(un, {
2499
+ chartConfig: D.chartConfig,
2500
+ displayConfig: D.displayConfig,
2501
+ queryObject: D.queryObject,
2502
+ data: D.data,
2503
+ chartType: D.chartType,
2504
+ cacheInfo: D.cacheInfo
2505
+ })
2506
+ })]
2507
+ }), /* @__PURE__ */ Q("div", {
2508
+ className: "dc:flex dc:items-center dc:gap-1 dc:shrink-0 dc:ml-4 dc:-mr-2",
2428
2509
  onMouseDown: (e) => {
2429
2510
  e.stopPropagation(), e.preventDefault();
2430
2511
  },
@@ -2433,152 +2514,135 @@ var ln = V.memo(function({ isTransparent: e, setChartContainerRef: t, setPortlet
2433
2514
  e.stopPropagation(), e.preventDefault();
2434
2515
  },
2435
2516
  onTouchEnd: (e) => e.stopPropagation(),
2436
- children: /* @__PURE__ */ Z(an, {
2437
- chartConfig: D.chartConfig,
2438
- displayConfig: D.displayConfig,
2439
- queryObject: D.queryObject,
2440
- data: D.data,
2441
- chartType: D.chartType,
2442
- cacheInfo: D.cacheInfo
2443
- })
2444
- })]
2445
- }), /* @__PURE__ */ Q("div", {
2446
- className: "dc:flex dc:items-center dc:gap-1 dc:shrink-0 dc:ml-4 dc:-mr-2",
2447
- onMouseDown: (e) => {
2448
- e.stopPropagation(), e.preventDefault();
2449
- },
2450
- onClick: (e) => e.stopPropagation(),
2451
- onTouchStart: (e) => {
2452
- e.stopPropagation(), e.preventDefault();
2453
- },
2454
- onTouchEnd: (e) => e.stopPropagation(),
2455
- children: [
2456
- D?.cacheInfo && /* @__PURE__ */ Z("span", {
2457
- className: "dc:p-1 text-dc-text-muted dc:opacity-40",
2458
- title: `Cached ${Math.round((Date.now() - new Date(D.cacheInfo.cachedAt).getTime()) / 1e3)}s ago`,
2459
- children: /* @__PURE__ */ Q("svg", {
2460
- width: "12",
2461
- height: "12",
2462
- viewBox: "0 0 24 24",
2463
- fill: "none",
2464
- stroke: "currentColor",
2465
- strokeWidth: "2",
2466
- strokeLinecap: "round",
2467
- strokeLinejoin: "round",
2468
- children: [
2469
- /* @__PURE__ */ Z("ellipse", {
2470
- cx: "12",
2471
- cy: "5",
2472
- rx: "9",
2473
- ry: "3"
2474
- }),
2475
- /* @__PURE__ */ Z("path", { d: "M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5" }),
2476
- /* @__PURE__ */ Z("path", { d: "M3 12c0 1.66 4 3 9 3s9-1.34 9-3" })
2477
- ]
2478
- })
2479
- }),
2480
- /* @__PURE__ */ Z("button", {
2481
- onClick: (t) => {
2482
- t.stopPropagation(), g.onRefresh(e.id, { bustCache: t.shiftKey });
2483
- },
2484
- onTouchEnd: (t) => {
2485
- t.stopPropagation(), t.preventDefault(), g.onRefresh(e.id);
2486
- },
2487
- onMouseEnter: () => ue(!0),
2488
- onMouseLeave: () => ue(!1),
2489
- disabled: U,
2490
- className: `dc:p-1 bg-transparent dc:border-none dc:rounded-sm dc:transition-colors ${U ? "dc:cursor-not-allowed dc:opacity-50 text-dc-text-secondary" : B ? "dc:cursor-pointer text-dc-warning bg-dc-warning-bg" : "dc:cursor-pointer text-dc-text-secondary hover:bg-dc-surface-hover"}`,
2491
- title: B ? "Click to refresh and bypass cache" : "Refresh portlet data (Shift+click to bypass cache)",
2492
- children: /* @__PURE__ */ Z(_.RefreshIcon, { style: on })
2493
- }),
2494
- N && !U && /* @__PURE__ */ Z("button", {
2495
- onClick: de,
2496
- onTouchEnd: (e) => {
2497
- e.preventDefault(), de(e);
2498
- },
2499
- className: "dc:p-1 bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer hover:bg-dc-surface-hover dc:transition-colors",
2500
- title: oe ? "Copied!" : "Copy chart to clipboard",
2501
- children: Z(oe ? ie : re, { style: on })
2502
- }),
2503
- ce && !U && D && /* @__PURE__ */ Z("button", {
2504
- onClick: V,
2505
- onTouchEnd: (e) => {
2506
- e.preventDefault(), V(e);
2507
- },
2508
- disabled: F,
2509
- className: `dc:p-1 bg-transparent dc:border-none dc:rounded-sm dc:transition-colors ${F ? "dc:opacity-50 dc:cursor-wait text-dc-text-secondary" : "text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover"}`,
2510
- title: F ? "Exporting..." : "Download data as XLSX",
2511
- children: /* @__PURE__ */ Z(ae, { style: on })
2512
- }),
2513
- t && T && !U && /* @__PURE__ */ Q(X, { children: [
2514
- /* @__PURE__ */ Z("button", {
2515
- onClick: (t) => {
2516
- t.stopPropagation(), g.onOpenFilterConfig(e);
2517
- },
2518
- onTouchEnd: (t) => {
2519
- t.stopPropagation(), t.preventDefault(), g.onOpenFilterConfig(e);
2520
- },
2521
- className: "dc:p-1 bg-transparent dc:border-none dc:rounded-sm dc:cursor-pointer hover:bg-dc-surface-hover dc:transition-colors dc:relative",
2522
- title: `Configure dashboard filters${e.dashboardFilterMapping && e.dashboardFilterMapping.length > 0 ? ` (${e.dashboardFilterMapping.length} active)` : ""}`,
2523
- style: { color: e.dashboardFilterMapping && e.dashboardFilterMapping.length > 0 ? "var(--dc-primary)" : "var(--dc-text-secondary)" },
2524
- children: /* @__PURE__ */ Z(_.FilterIcon, { style: on })
2517
+ children: [
2518
+ D?.cacheInfo && /* @__PURE__ */ Z("span", {
2519
+ className: "dc:p-1 text-dc-text-muted dc:opacity-40",
2520
+ title: `Cached ${Math.round((Date.now() - new Date(D.cacheInfo.cachedAt).getTime()) / 1e3)}s ago`,
2521
+ children: /* @__PURE__ */ Q("svg", {
2522
+ width: "12",
2523
+ height: "12",
2524
+ viewBox: "0 0 24 24",
2525
+ fill: "none",
2526
+ stroke: "currentColor",
2527
+ strokeWidth: "2",
2528
+ strokeLinecap: "round",
2529
+ strokeLinejoin: "round",
2530
+ children: [
2531
+ /* @__PURE__ */ Z("ellipse", {
2532
+ cx: "12",
2533
+ cy: "5",
2534
+ rx: "9",
2535
+ ry: "3"
2536
+ }),
2537
+ /* @__PURE__ */ Z("path", { d: "M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5" }),
2538
+ /* @__PURE__ */ Z("path", { d: "M3 12c0 1.66 4 3 9 3s9-1.34 9-3" })
2539
+ ]
2540
+ })
2525
2541
  }),
2526
2542
  /* @__PURE__ */ Z("button", {
2527
2543
  onClick: (t) => {
2528
- t.stopPropagation(), g.onDuplicate(e.id);
2544
+ t.stopPropagation(), g.onRefresh(e.id, { bustCache: t.shiftKey });
2529
2545
  },
2530
2546
  onTouchEnd: (t) => {
2531
- t.stopPropagation(), t.preventDefault(), g.onDuplicate(e.id);
2547
+ t.stopPropagation(), t.preventDefault(), g.onRefresh(e.id);
2532
2548
  },
2533
- className: "dc:p-1 bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer hover:bg-dc-surface-hover dc:transition-colors",
2534
- title: "Duplicate portlet",
2535
- children: /* @__PURE__ */ Z(_.CopyIcon, { style: on })
2549
+ onMouseEnter: () => V(!0),
2550
+ onMouseLeave: () => V(!1),
2551
+ disabled: W,
2552
+ className: `dc:p-1 bg-transparent dc:border-none dc:rounded-sm dc:transition-colors ${W ? "dc:cursor-not-allowed dc:opacity-50 text-dc-text-secondary" : de ? "dc:cursor-pointer text-dc-warning bg-dc-warning-bg" : "dc:cursor-pointer text-dc-text-secondary hover:bg-dc-surface-hover"}`,
2553
+ title: de ? "Click to refresh and bypass cache" : "Refresh portlet data (Shift+click to bypass cache)",
2554
+ children: /* @__PURE__ */ Z(_.RefreshIcon, { style: dn })
2536
2555
  }),
2537
- /* @__PURE__ */ Z("button", {
2538
- onClick: (t) => {
2539
- t.stopPropagation(), g.onEdit(e);
2540
- },
2541
- onTouchEnd: (t) => {
2542
- t.stopPropagation(), t.preventDefault(), g.onEdit(e);
2556
+ se && !W && /* @__PURE__ */ Z("button", {
2557
+ onClick: fe,
2558
+ onTouchEnd: (e) => {
2559
+ e.preventDefault(), fe(e);
2543
2560
  },
2544
2561
  className: "dc:p-1 bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer hover:bg-dc-surface-hover dc:transition-colors",
2545
- title: "Edit portlet",
2546
- children: /* @__PURE__ */ Z(_.EditIcon, { style: on })
2562
+ title: M ? "Copied!" : "Copy chart to clipboard",
2563
+ children: Z(M ? ae : ie, { style: dn })
2547
2564
  }),
2548
- /* @__PURE__ */ Z("button", {
2549
- onClick: (t) => {
2550
- t.stopPropagation(), g.onDelete(e.id);
2551
- },
2552
- onTouchEnd: (t) => {
2553
- t.stopPropagation(), t.preventDefault(), g.onDelete(e.id);
2565
+ le && !W && D && /* @__PURE__ */ Z("button", {
2566
+ onClick: H,
2567
+ onTouchEnd: (e) => {
2568
+ e.preventDefault(), H(e);
2554
2569
  },
2555
- className: "dc:p-1 dc:mr-0.5 bg-transparent dc:border-none dc:rounded-sm dc:cursor-pointer hover:bg-dc-danger-bg text-dc-danger dc:transition-colors",
2556
- title: "Delete portlet",
2557
- children: /* @__PURE__ */ Z(_.DeleteIcon, { style: on })
2558
- })
2559
- ] })
2560
- ]
2561
- })]
2562
- }), /* @__PURE__ */ Z(ln, {
2563
- isTransparent: te,
2564
- setChartContainerRef: $,
2565
- setPortletComponentRef: Ce,
2566
- renderQuery: x,
2567
- renderChartType: S,
2568
- renderChartConfig: C,
2569
- renderDisplayConfig: w,
2570
- dashboardFilters: r,
2571
- dashboardFilterMapping: e.dashboardFilterMapping,
2572
- eagerLoad: e.eagerLoad ?? i ?? !1,
2573
- title: e.title,
2574
- isMarkdownAutoHeight: ee,
2575
- colorPalette: c,
2576
- loadingComponent: a,
2577
- onDebugDataReady: xe
2578
- })]
2570
+ disabled: L,
2571
+ className: `dc:p-1 bg-transparent dc:border-none dc:rounded-sm dc:transition-colors ${L ? "dc:opacity-50 dc:cursor-wait text-dc-text-secondary" : "text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover"}`,
2572
+ title: L ? "Exporting..." : "Download data as XLSX",
2573
+ children: /* @__PURE__ */ Z(oe, { style: dn })
2574
+ }),
2575
+ t && T && !W && /* @__PURE__ */ Q(X, { children: [
2576
+ /* @__PURE__ */ Z("button", {
2577
+ onClick: (t) => {
2578
+ t.stopPropagation(), g.onOpenFilterConfig(e);
2579
+ },
2580
+ onTouchEnd: (t) => {
2581
+ t.stopPropagation(), t.preventDefault(), g.onOpenFilterConfig(e);
2582
+ },
2583
+ className: "dc:p-1 bg-transparent dc:border-none dc:rounded-sm dc:cursor-pointer hover:bg-dc-surface-hover dc:transition-colors dc:relative",
2584
+ title: `Configure dashboard filters${e.dashboardFilterMapping && e.dashboardFilterMapping.length > 0 ? ` (${e.dashboardFilterMapping.length} active)` : ""}`,
2585
+ style: { color: e.dashboardFilterMapping && e.dashboardFilterMapping.length > 0 ? "var(--dc-primary)" : "var(--dc-text-secondary)" },
2586
+ children: /* @__PURE__ */ Z(_.FilterIcon, { style: dn })
2587
+ }),
2588
+ /* @__PURE__ */ Z("button", {
2589
+ onClick: (t) => {
2590
+ t.stopPropagation(), g.onDuplicate(e.id);
2591
+ },
2592
+ onTouchEnd: (t) => {
2593
+ t.stopPropagation(), t.preventDefault(), g.onDuplicate(e.id);
2594
+ },
2595
+ className: "dc:p-1 bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer hover:bg-dc-surface-hover dc:transition-colors",
2596
+ title: "Duplicate portlet",
2597
+ children: /* @__PURE__ */ Z(_.CopyIcon, { style: dn })
2598
+ }),
2599
+ /* @__PURE__ */ Z("button", {
2600
+ onClick: (t) => {
2601
+ t.stopPropagation(), g.onEdit(e);
2602
+ },
2603
+ onTouchEnd: (t) => {
2604
+ t.stopPropagation(), t.preventDefault(), g.onEdit(e);
2605
+ },
2606
+ className: "dc:p-1 bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer hover:bg-dc-surface-hover dc:transition-colors",
2607
+ title: "Edit portlet",
2608
+ children: /* @__PURE__ */ Z(_.EditIcon, { style: dn })
2609
+ }),
2610
+ /* @__PURE__ */ Z("button", {
2611
+ onClick: (t) => {
2612
+ t.stopPropagation(), g.onDelete(e.id);
2613
+ },
2614
+ onTouchEnd: (t) => {
2615
+ t.stopPropagation(), t.preventDefault(), g.onDelete(e.id);
2616
+ },
2617
+ className: "dc:p-1 dc:mr-0.5 bg-transparent dc:border-none dc:rounded-sm dc:cursor-pointer hover:bg-dc-danger-bg text-dc-danger dc:transition-colors",
2618
+ title: "Delete portlet",
2619
+ children: /* @__PURE__ */ Z(_.DeleteIcon, { style: dn })
2620
+ })
2621
+ ] })
2622
+ ]
2623
+ })]
2624
+ }),
2625
+ /* @__PURE__ */ Z(mn, {
2626
+ isTransparent: te,
2627
+ setChartContainerRef: Ee,
2628
+ setPortletComponentRef: Te,
2629
+ renderQuery: x,
2630
+ renderChartType: S,
2631
+ renderChartConfig: C,
2632
+ renderDisplayConfig: w,
2633
+ dashboardFilters: r,
2634
+ dashboardFilterMapping: e.dashboardFilterMapping,
2635
+ eagerLoad: e.eagerLoad ?? i ?? !1,
2636
+ title: e.title,
2637
+ isMarkdownAutoHeight: ee,
2638
+ colorPalette: c,
2639
+ loadingComponent: a,
2640
+ onDebugDataReady: $
2641
+ })
2642
+ ]
2579
2643
  });
2580
- }, sn), dn = 16;
2581
- function fn({ rows: e, portlets: t, gridSettings: n, gridWidth: r, canEdit: i, isDragging: a, onRowResize: o, onColumnResize: s, onPortletDragStart: c, onPortletDragEnd: l, onRowDrop: u, onNewRowDrop: d, renderPortlet: f }) {
2644
+ }, fn), gn = 16;
2645
+ function _n({ rows: e, portlets: t, gridSettings: n, gridWidth: r, canEdit: i, isDragging: a, onRowResize: o, onColumnResize: s, onPortletDragStart: c, onPortletDragEnd: l, onRowDrop: u, onNewRowDrop: d, renderPortlet: f }) {
2582
2646
  let p = new Map(t.map((e) => [e.id, e])), [m, h] = Y(null), g = (e) => {
2583
2647
  h(e);
2584
2648
  }, _ = a || m !== null, v = G((e) => {
@@ -2590,7 +2654,7 @@ function fn({ rows: e, portlets: t, gridSettings: n, gridWidth: r, canEdit: i, i
2590
2654
  className: `dc-row-layout${i ? " dc-row-layout-editable" : ""}${_ ? " dc-row-layout-dragging" : ""}`,
2591
2655
  style: {
2592
2656
  "--dc-row-gap": "24px",
2593
- "--dc-column-gap": `${dn}px`,
2657
+ "--dc-column-gap": `${gn}px`,
2594
2658
  "--dc-top-drop-space": b ? "24px" : "0px",
2595
2659
  "--dc-bottom-drop-space": x ? "24px" : "0px"
2596
2660
  },
@@ -2609,9 +2673,9 @@ function fn({ rows: e, portlets: t, gridSettings: n, gridWidth: r, canEdit: i, i
2609
2673
  let a = e.columns.length > 0 && e.columns.every((e) => {
2610
2674
  let t = p.get(e.portletId);
2611
2675
  if (!t) return !1;
2612
- let n = St(t), r = n.analysisConfig.charts[n.analysisConfig.analysisType];
2676
+ let n = yt(t), r = n.analysisConfig.charts[n.analysisConfig.analysisType];
2613
2677
  return r?.chartType === "markdown" && (r.displayConfig?.autoHeight ?? !0);
2614
- }), c = a ? void 0 : e.h * n.rowHeight, l = r || n.cols * n.rowHeight, h = m === `row-${t}-insert-0` ? dn : 0, _ = m === `row-${t}-insert-${e.columns.length}` ? dn : 0, b = (l - (e.columns.length - 1) * dn - h - _) / n.cols;
2678
+ }), c = a ? void 0 : e.h * n.rowHeight, l = r || n.cols * n.rowHeight, h = m === `row-${t}-insert-0` ? gn : 0, _ = m === `row-${t}-insert-${e.columns.length}` ? gn : 0, b = (l - (e.columns.length - 1) * gn - h - _) / n.cols;
2615
2679
  return /* @__PURE__ */ Q("div", {
2616
2680
  className: "dc-row-layout-row-wrapper",
2617
2681
  children: [
@@ -2704,7 +2768,7 @@ function fn({ rows: e, portlets: t, gridSettings: n, gridWidth: r, canEdit: i, i
2704
2768
  }
2705
2769
  //#endregion
2706
2770
  //#region src/client/hooks/dashboard/useGridLayoutEngine.ts
2707
- function pn({ storeApi: e }) {
2771
+ function vn({ storeApi: e }) {
2708
2772
  return { hasLayoutActuallyChanged: G((t) => {
2709
2773
  let { isInitialized: n, lastKnownLayout: r } = e.getState();
2710
2774
  if (!n || r.length === 0) return !1;
@@ -2717,7 +2781,7 @@ function pn({ storeApi: e }) {
2717
2781
  }
2718
2782
  //#endregion
2719
2783
  //#region src/client/hooks/dashboard/layoutUtils.ts
2720
- var mn = () => `row-${Date.now()}`, hn = (e, t) => {
2784
+ var yn = () => `row-${Date.now()}`, bn = (e, t) => {
2721
2785
  let n = e.length;
2722
2786
  if (n === 0) return [];
2723
2787
  let { cols: r, minW: i } = t, a = i * n;
@@ -2733,7 +2797,7 @@ var mn = () => `row-${Date.now()}`, hn = (e, t) => {
2733
2797
  portletId: e,
2734
2798
  w: i + s + +(t < c)
2735
2799
  }));
2736
- }, gn = (e, t) => {
2800
+ }, xn = (e, t) => {
2737
2801
  if (e.length === 0) return [];
2738
2802
  let { cols: n, minW: r } = t, i = e.map((e) => ({
2739
2803
  ...e,
@@ -2753,7 +2817,7 @@ var mn = () => `row-${Date.now()}`, hn = (e, t) => {
2753
2817
  t.w -= a, o -= a;
2754
2818
  }
2755
2819
  return i;
2756
- }, _n = (e, t) => {
2820
+ }, Sn = (e, t) => {
2757
2821
  if (e.length === 0) return [];
2758
2822
  let n = [...e].sort((e, t) => e.y === t.y ? e.x - t.x : e.y - t.y), r = /* @__PURE__ */ new Map();
2759
2823
  return n.forEach((e) => {
@@ -2764,17 +2828,17 @@ var mn = () => `row-${Date.now()}`, hn = (e, t) => {
2764
2828
  return {
2765
2829
  id: `row-${e}`,
2766
2830
  h: r,
2767
- columns: hn(i, t)
2831
+ columns: bn(i, t)
2768
2832
  };
2769
2833
  });
2770
- }, vn = (e, t, n) => {
2834
+ }, Cn = (e, t, n) => {
2771
2835
  let r = new Set(t.map((e) => e.id));
2772
2836
  return e.map((e) => ({
2773
2837
  ...e,
2774
2838
  h: Math.max(n.minH, e.h),
2775
- columns: gn(e.columns.filter((e) => r.has(e.portletId)), n)
2839
+ columns: xn(e.columns.filter((e) => r.has(e.portletId)), n)
2776
2840
  })).filter((e) => e.columns.length > 0);
2777
- }, yn = (e, t) => {
2841
+ }, wn = (e, t) => {
2778
2842
  let n = new Map(t.map((e) => [e.id, e])), r = 0, i = [];
2779
2843
  e.forEach((e) => {
2780
2844
  let t = 0;
@@ -2796,9 +2860,9 @@ var mn = () => `row-${Date.now()}`, hn = (e, t) => {
2796
2860
  };
2797
2861
  //#endregion
2798
2862
  //#region src/client/hooks/dashboard/useRowLayoutEngine.ts
2799
- function bn({ layoutMode: e, draftRows: t, config: n, gridSettings: r, configRef: i, onConfigChangeRef: a, onSaveRef: o, setDraftRows: s, setThumbnailDirty: c }) {
2863
+ function Tn({ layoutMode: e, draftRows: t, config: n, gridSettings: r, configRef: i, onConfigChangeRef: a, onSaveRef: o, setDraftRows: s, setThumbnailDirty: c }) {
2800
2864
  return {
2801
- resolvedRows: q(() => e === "rows" ? vn(t ?? n.rows ?? _n(n.portlets, r), n.portlets, r) : [], [
2865
+ resolvedRows: q(() => e === "rows" ? Cn(t ?? n.rows ?? Sn(n.portlets, r), n.portlets, r) : [], [
2802
2866
  e,
2803
2867
  t,
2804
2868
  n.rows,
@@ -2807,7 +2871,7 @@ function bn({ layoutMode: e, draftRows: t, config: n, gridSettings: r, configRef
2807
2871
  ]),
2808
2872
  updateRowLayout: G(async (e, t = !0, n) => {
2809
2873
  if (!a.current) return;
2810
- let l = n ?? i.current.portlets, u = vn(e, l, r), d = yn(u, l), f = {
2874
+ let l = n ?? i.current.portlets, u = Cn(e, l, r), d = wn(u, l), f = {
2811
2875
  ...i.current,
2812
2876
  layoutMode: "rows",
2813
2877
  rows: u,
@@ -2830,7 +2894,7 @@ function bn({ layoutMode: e, draftRows: t, config: n, gridSettings: r, configRef
2830
2894
  }
2831
2895
  //#endregion
2832
2896
  //#region src/client/hooks/dashboard/useDashboardController.ts
2833
- function xn({ allowedModes: e, canChangeLayoutMode: t, isResponsiveEditable: n, layoutMode: r, resolvedRows: i, gridSettings: a, thumbnailConfig: o, dashboardRef: s, storeApi: c, storeActions: u, configRef: d, onConfigChangeRef: f, onSaveRef: p, onSaveThumbnailRef: m, updateRowLayout: h, portletComponentRefs: g, onPortletRefresh: _ }) {
2897
+ function En({ allowedModes: e, canChangeLayoutMode: t, isResponsiveEditable: n, layoutMode: r, resolvedRows: i, gridSettings: a, thumbnailConfig: o, dashboardRef: s, storeApi: c, storeActions: u, configRef: d, onConfigChangeRef: f, onSaveRef: p, onSaveThumbnailRef: m, updateRowLayout: h, portletComponentRefs: g, onPortletRefresh: _ }) {
2834
2898
  let v = J(r);
2835
2899
  v.current = r;
2836
2900
  let y = J(t);
@@ -2900,7 +2964,7 @@ function xn({ allowedModes: e, canChangeLayoutMode: t, isResponsiveEditable: n,
2900
2964
  u.openFilterConfigModal(e);
2901
2965
  }, [u]), k = G(async (t) => {
2902
2966
  if (!f.current || t === v.current || !y.current || !e.includes(t)) return;
2903
- let n = d.current, r = vn(n.rows && n.rows.length > 0 ? n.rows : _n(n.portlets, a), n.portlets, a), i = yn(r, n.portlets);
2967
+ let n = d.current, r = Cn(n.rows && n.rows.length > 0 ? n.rows : Sn(n.portlets, a), n.portlets, a), i = wn(r, n.portlets);
2904
2968
  await x({
2905
2969
  ...n,
2906
2970
  layoutMode: t,
@@ -2937,11 +3001,11 @@ function xn({ allowedModes: e, canChangeLayoutMode: t, isResponsiveEditable: n,
2937
3001
  let e = b.current, o = e.length > 0 ? e.map((e) => ({
2938
3002
  ...e,
2939
3003
  columns: e.columns.map((e) => ({ ...e }))
2940
- })) : vn(t.rows ?? _n(t.portlets, a), n, a);
3004
+ })) : Cn(t.rows ?? Sn(t.portlets, a), n, a);
2941
3005
  await h(r && i ? [...o, {
2942
- id: mn(),
3006
+ id: yn(),
2943
3007
  h: Math.max(a.minH, 3),
2944
- columns: hn([i], a)
3008
+ columns: bn([i], a)
2945
3009
  }] : o, !0, n);
2946
3010
  } else await x({
2947
3011
  ...t,
@@ -2965,7 +3029,7 @@ function xn({ allowedModes: e, canChangeLayoutMode: t, isResponsiveEditable: n,
2965
3029
  columns: t.columns.filter((t) => t.portletId !== e)
2966
3030
  })).filter((e) => e.columns.length > 0).map((e) => ({
2967
3031
  ...e,
2968
- columns: hn(e.columns.map((e) => e.portletId), a)
3032
+ columns: bn(e.columns.map((e) => e.portletId), a)
2969
3033
  })), !0, n) : await x({
2970
3034
  ...t,
2971
3035
  portlets: n
@@ -3020,9 +3084,9 @@ function xn({ allowedModes: e, canChangeLayoutMode: t, isResponsiveEditable: n,
3020
3084
  ...e,
3021
3085
  columns: e.columns.map((e) => ({ ...e }))
3022
3086
  })), {
3023
- id: mn(),
3087
+ id: yn(),
3024
3088
  h: Math.max(a.minH, 3),
3025
- columns: hn([r.id], a)
3089
+ columns: bn([r.id], a)
3026
3090
  }], !0, o) : await x({
3027
3091
  ...t,
3028
3092
  portlets: o
@@ -3043,10 +3107,10 @@ function xn({ allowedModes: e, canChangeLayoutMode: t, isResponsiveEditable: n,
3043
3107
  if (!f.current) return;
3044
3108
  let n = d.current, r = n.portlets.map((n) => {
3045
3109
  if (n.id === e) {
3046
- let e = n.dashboardFilterMapping || [], r = e.includes(t);
3110
+ let e = n.dashboardFilterMapping || [], r = St(e, t);
3047
3111
  return {
3048
3112
  ...n,
3049
- dashboardFilterMapping: r ? e.filter((e) => e !== t) : [...e, t]
3113
+ dashboardFilterMapping: r ? e.filter((e) => typeof e == "string" ? e !== t : e.filterId !== t) : [...e, t]
3050
3114
  };
3051
3115
  }
3052
3116
  return n;
@@ -3064,7 +3128,7 @@ function xn({ allowedModes: e, canChangeLayoutMode: t, isResponsiveEditable: n,
3064
3128
  if (!f.current) return;
3065
3129
  let t = d.current, n = t.portlets.map((t) => {
3066
3130
  let n = t.dashboardFilterMapping || [];
3067
- return n.includes(e) ? t : {
3131
+ return St(n, e) ? t : {
3068
3132
  ...t,
3069
3133
  dashboardFilterMapping: [...n, e]
3070
3134
  };
@@ -3109,7 +3173,7 @@ function xn({ allowedModes: e, canChangeLayoutMode: t, isResponsiveEditable: n,
3109
3173
  }
3110
3174
  //#endregion
3111
3175
  //#region src/client/hooks/useDashboardHook.ts
3112
- var Sn = (e) => ({
3176
+ var Dn = (e) => ({
3113
3177
  isEditMode: e.isEditMode,
3114
3178
  selectedFilterId: e.selectedFilterId,
3115
3179
  isPortletModalOpen: e.isPortletModalOpen,
@@ -3123,7 +3187,7 @@ var Sn = (e) => ({
3123
3187
  isDraggingPortlet: e.isDraggingPortlet,
3124
3188
  lastKnownLayout: e.lastKnownLayout,
3125
3189
  isInitialized: e.isInitialized
3126
- }), Cn = (e) => ({
3190
+ }), On = (e) => ({
3127
3191
  setEditMode: e.setEditMode,
3128
3192
  toggleEditMode: e.toggleEditMode,
3129
3193
  setSelectedFilterId: e.setSelectedFilterId,
@@ -3146,8 +3210,8 @@ var Sn = (e) => ({
3146
3210
  clearDebugData: e.clearDebugData,
3147
3211
  setThumbnailDirty: e.setThumbnailDirty
3148
3212
  });
3149
- function wn(e) {
3150
- let { config: n, editable: r = !1, dashboardFilters: i, gridSettings: a, allowedModes: o, isResponsiveEditable: s = !0, onConfigChange: c, onSave: l, onSaveThumbnail: d, portletComponentRefs: f, onPortletRefresh: p, dashboardRef: m } = e, h = Bt(t(Sn)), g = Bt(t(Cn)), _ = Vt(), { features: v } = u(), y = v.thumbnail, b = J(n);
3213
+ function kn(e) {
3214
+ let { config: n, editable: r = !1, dashboardFilters: i, gridSettings: a, allowedModes: o, isResponsiveEditable: s = !0, onConfigChange: c, onSave: l, onSaveThumbnail: d, portletComponentRefs: f, onPortletRefresh: p, dashboardRef: m } = e, h = Gt(t(Dn)), g = Gt(t(On)), _ = Kt(), { features: v } = u(), y = v.thumbnail, b = J(n);
3151
3215
  b.current = n;
3152
3216
  let x = J(c);
3153
3217
  x.current = c;
@@ -3169,7 +3233,7 @@ function wn(e) {
3169
3233
  s,
3170
3234
  h.selectedFilterId,
3171
3235
  w.length
3172
- ]), O = q(() => !h.selectedFilterId || !i ? null : i.find((e) => e.id === h.selectedFilterId) ?? null, [h.selectedFilterId, i]), { resolvedRows: ee, updateRowLayout: te } = bn({
3236
+ ]), O = q(() => !h.selectedFilterId || !i ? null : i.find((e) => e.id === h.selectedFilterId) ?? null, [h.selectedFilterId, i]), { resolvedRows: ee, updateRowLayout: te } = Tn({
3173
3237
  layoutMode: T,
3174
3238
  draftRows: h.draftRows,
3175
3239
  config: n,
@@ -3179,7 +3243,7 @@ function wn(e) {
3179
3243
  onSaveRef: S,
3180
3244
  setDraftRows: g.setDraftRows,
3181
3245
  setThumbnailDirty: g.setThumbnailDirty
3182
- }), { hasLayoutActuallyChanged: k } = pn({ storeApi: _ }), { enterEditMode: A, exitEditMode: j, toggleEditMode: ne, selectFilter: re, openAddPortlet: ie, openEditPortlet: ae, openAddText: oe, openEditText: M, openFilterConfig: N, handleLayoutModeChange: se, savePortlet: P, deletePortlet: ce, confirmDelete: le, duplicatePortlet: F, refreshPortlet: I, toggleFilterForPortlet: L, selectAllForFilter: R, saveFilterConfig: z, handlePaletteChange: ue } = xn({
3246
+ }), { hasLayoutActuallyChanged: k } = vn({ storeApi: _ }), { enterEditMode: A, exitEditMode: j, toggleEditMode: ne, selectFilter: re, openAddPortlet: ie, openEditPortlet: ae, openAddText: oe, openEditText: M, openFilterConfig: N, handleLayoutModeChange: se, savePortlet: P, deletePortlet: ce, confirmDelete: F, duplicatePortlet: le, refreshPortlet: I, toggleFilterForPortlet: L, selectAllForFilter: R, saveFilterConfig: z, handlePaletteChange: ue } = En({
3183
3247
  allowedModes: w,
3184
3248
  canChangeLayoutMode: D,
3185
3249
  isResponsiveEditable: s,
@@ -3222,7 +3286,7 @@ function wn(e) {
3222
3286
  handleLayoutModeChange: se,
3223
3287
  savePortlet: P,
3224
3288
  deletePortlet: ce,
3225
- duplicatePortlet: F,
3289
+ duplicatePortlet: le,
3226
3290
  refreshPortlet: I,
3227
3291
  toggleFilterForPortlet: L,
3228
3292
  selectAllForFilter: R,
@@ -3230,7 +3294,7 @@ function wn(e) {
3230
3294
  handlePaletteChange: ue,
3231
3295
  openDeleteConfirm: g.openDeleteConfirm,
3232
3296
  closeDeleteConfirm: g.closeDeleteConfirm,
3233
- confirmDelete: le,
3297
+ confirmDelete: F,
3234
3298
  setDebugData: g.setDebugData,
3235
3299
  clearDebugData: g.clearDebugData
3236
3300
  }), [
@@ -3249,13 +3313,13 @@ function wn(e) {
3249
3313
  se,
3250
3314
  P,
3251
3315
  ce,
3252
- F,
3316
+ le,
3253
3317
  I,
3254
3318
  L,
3255
3319
  R,
3256
3320
  z,
3257
3321
  ue,
3258
- le
3322
+ F
3259
3323
  ]);
3260
3324
  return {
3261
3325
  ...h,
@@ -3270,17 +3334,17 @@ function wn(e) {
3270
3334
  }
3271
3335
  //#endregion
3272
3336
  //#region src/client/components/dashboard/dashboardGridUtils.tsx
3273
- var Tn = {
3337
+ var An = {
3274
3338
  cols: 12,
3275
3339
  rowHeight: 80,
3276
3340
  minW: 2,
3277
3341
  minH: 1
3278
- }, En = () => `row-${Date.now()}`, Dn = (e) => ({
3279
- cols: e.grid?.cols ?? Tn.cols,
3280
- rowHeight: e.grid?.rowHeight ?? Tn.rowHeight,
3281
- minW: e.grid?.minW ?? Tn.minW,
3282
- minH: e.grid?.minH ?? Tn.minH
3283
- }), On = (e, t) => {
3342
+ }, jn = () => `row-${Date.now()}`, Mn = (e) => ({
3343
+ cols: e.grid?.cols ?? An.cols,
3344
+ rowHeight: e.grid?.rowHeight ?? An.rowHeight,
3345
+ minW: e.grid?.minW ?? An.minW,
3346
+ minH: e.grid?.minH ?? An.minH
3347
+ }), Nn = (e, t) => {
3284
3348
  let n = e.length;
3285
3349
  if (n === 0) return [];
3286
3350
  let { cols: r, minW: i } = t, a = i * n;
@@ -3296,7 +3360,7 @@ var Tn = {
3296
3360
  portletId: e,
3297
3361
  w: i + s + +(t < c)
3298
3362
  }));
3299
- }, kn = (e, t) => {
3363
+ }, Pn = (e, t) => {
3300
3364
  if (e.length === 0) return [];
3301
3365
  let { cols: n, minW: r } = t, i = e.map((e) => ({
3302
3366
  ...e,
@@ -3317,7 +3381,7 @@ var Tn = {
3317
3381
  }
3318
3382
  return i;
3319
3383
  };
3320
- function An(e) {
3384
+ function Fn(e) {
3321
3385
  if (!e) return null;
3322
3386
  let t = e.parentElement;
3323
3387
  for (; t;) {
@@ -3328,7 +3392,7 @@ function An(e) {
3328
3392
  }
3329
3393
  return null;
3330
3394
  }
3331
- function jn({ className: e, style: t }) {
3395
+ function In({ className: e, style: t }) {
3332
3396
  return /* @__PURE__ */ Q("svg", {
3333
3397
  className: e,
3334
3398
  style: t,
@@ -3354,22 +3418,22 @@ function jn({ className: e, style: t }) {
3354
3418
  }
3355
3419
  //#endregion
3356
3420
  //#region src/client/components/dashboard/DashboardContext.tsx
3357
- var Mn = U(null);
3358
- function Nn() {
3359
- let e = he(Mn);
3421
+ var Ln = fe(null);
3422
+ function Rn() {
3423
+ let e = he(Ln);
3360
3424
  if (!e) throw Error("useDashboardContext must be used within a DashboardProvider");
3361
3425
  return e;
3362
3426
  }
3363
3427
  //#endregion
3364
3428
  //#region src/client/components/dashboard/DashboardCoordinator.tsx
3365
- var Pn = s("refresh"), Fn = s("edit"), In = s("delete"), Ln = s("copy"), Rn = s("filter");
3366
- function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent: r, onConfigChange: i, onPortletRefresh: a, onSave: o, onSaveThumbnail: s, colorPalette: c, schema: l, onDashboardFiltersChange: d, dashboardModes: f, hideToolbar: p, children: m }) {
3367
- let { features: h } = u(), { containerRef: g, containerWidth: _, displayMode: v, scaleFactor: y, isEditable: b, designWidth: x } = D(), S = f && f.length > 0 ? f : ["rows", "grid"], C = q(() => Dn(e), [e]), [w, T] = Y(null), E = J(null), O = J(null), ee = J(null), te = J(null), k = G((e) => {
3429
+ var zn = s("refresh"), Bn = s("edit"), Vn = s("delete"), Hn = s("copy"), Un = s("filter");
3430
+ function Wn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent: r, onConfigChange: i, onPortletRefresh: a, onSave: o, onSaveThumbnail: s, colorPalette: c, schema: l, onDashboardFiltersChange: d, dashboardModes: f, hideToolbar: p, children: m }) {
3431
+ let { features: h } = u(), { containerRef: g, containerWidth: _, displayMode: v, scaleFactor: y, isEditable: b, designWidth: x } = D(), S = f && f.length > 0 ? f : ["rows", "grid"], C = q(() => Mn(e), [e]), [w, T] = Y(null), E = J(null), O = J(null), ee = J(null), te = J(null), k = G((e) => {
3368
3432
  if (E.current = e, g(e), e) {
3369
- let t = An(e);
3433
+ let t = Fn(e);
3370
3434
  T(t), O.current = t;
3371
3435
  }
3372
- }, [g]), A = v === "desktop" ? _ : x, j = J({}), ne = J({}), re = J(null), ie = J(null), ae = J(null), { isEditMode: oe, selectedFilterId: N, isPortletModalOpen: se, editingPortlet: P, isTextModalOpen: ce, editingTextPortlet: le, isFilterConfigModalOpen: F, filterConfigPortlet: I, deleteConfirmPortletId: L, draftRows: R, isDraggingPortlet: z, isInitialized: ue, canEdit: B, canChangeLayoutMode: V, selectedFilter: de, resolvedRows: H, layoutMode: U, actions: W } = wn({
3436
+ }, [g]), A = v === "desktop" ? _ : x, j = J({}), ne = J({}), re = J(null), ie = J(null), ae = J(null), { isEditMode: oe, selectedFilterId: N, isPortletModalOpen: se, editingPortlet: P, isTextModalOpen: ce, editingTextPortlet: F, isFilterConfigModalOpen: le, filterConfigPortlet: I, deleteConfirmPortletId: L, draftRows: R, isDraggingPortlet: z, isInitialized: ue, canEdit: B, canChangeLayoutMode: V, selectedFilter: de, resolvedRows: H, layoutMode: fe, actions: U } = kn({
3373
3437
  config: e,
3374
3438
  editable: t,
3375
3439
  dashboardFilters: n,
@@ -3383,43 +3447,43 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
3383
3447
  portletComponentRefs: ne,
3384
3448
  onPortletRefresh: a,
3385
3449
  dashboardRef: te
3386
- }), fe = J(W);
3387
- fe.current = W;
3450
+ }), W = J(U);
3451
+ W.current = U;
3388
3452
  let pe = J(B);
3389
3453
  pe.current = B, K(() => {
3390
3454
  re.current = R;
3391
3455
  }, [R]), K(() => {
3392
- (!oe || !b) && N && W.exitFilterSelectionMode();
3456
+ (!oe || !b) && N && U.exitFilterSelectionMode();
3393
3457
  }, [
3394
3458
  oe,
3395
3459
  b,
3396
3460
  N,
3397
- W
3461
+ U
3398
3462
  ]), K(() => {
3399
- !b && oe && W.exitEditMode();
3463
+ !b && oe && U.exitEditMode();
3400
3464
  }, [
3401
3465
  b,
3402
3466
  oe,
3403
- W
3467
+ U
3404
3468
  ]);
3405
- let me = en(O, {
3469
+ let me = on(O, {
3406
3470
  threshold: 20,
3407
3471
  debounceMs: 150,
3408
3472
  container: w
3409
- }), he = tn(ee, {
3473
+ }), he = sn(ee, {
3410
3474
  threshold: 80,
3411
3475
  debounceMs: 100,
3412
3476
  containerRef: O,
3413
3477
  container: w
3414
3478
  });
3415
- nn(O, {
3416
- enabled: U === "rows" && z,
3479
+ cn(O, {
3480
+ enabled: fe === "rows" && z,
3417
3481
  edgeThreshold: 80,
3418
3482
  maxScrollSpeed: 15
3419
3483
  }), K(() => {
3420
3484
  if (ue) return;
3421
3485
  let t = setTimeout(() => {
3422
- W.setIsInitialized(!0);
3486
+ U.setIsInitialized(!0);
3423
3487
  let t = e.portlets.map((e) => ({
3424
3488
  i: e.id,
3425
3489
  x: e.x,
@@ -3427,25 +3491,37 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
3427
3491
  w: e.w,
3428
3492
  h: e.h
3429
3493
  }));
3430
- W.setLastKnownLayout(t);
3494
+ U.setLastKnownLayout(t);
3431
3495
  }, 200);
3432
3496
  return () => clearTimeout(t);
3433
3497
  }, [
3434
3498
  ue,
3435
3499
  e.portlets,
3436
- W
3437
- ]), K(() => {
3500
+ U
3501
+ ]);
3502
+ let ge = se || ce || le || !!L;
3503
+ K(() => {
3438
3504
  let e = (e) => {
3439
- e.key === "Escape" && N && W.exitFilterSelectionMode();
3505
+ if (!(!N || ge)) {
3506
+ if (e.key === "Escape") U.exitFilterSelectionMode();
3507
+ else if (e.key === "Enter") {
3508
+ if (e.target?.closest("button, a, input, select, textarea, [contenteditable=\"true\"]")) return;
3509
+ U.exitFilterSelectionMode();
3510
+ }
3511
+ }
3440
3512
  };
3441
3513
  return window.addEventListener("keydown", e), () => {
3442
3514
  window.removeEventListener("keydown", e);
3443
3515
  };
3444
- }, [N, W]);
3445
- let ge = G((e) => {}, []), X = G(async (n, r, a, s, c, l) => {
3516
+ }, [
3517
+ N,
3518
+ ge,
3519
+ U
3520
+ ]);
3521
+ let X = G((e) => {}, []), Q = G(async (n, r, a, s, c, l) => {
3446
3522
  if (!t || !oe || !o || !ue) return;
3447
3523
  let u = [...n];
3448
- if (!W.hasLayoutActuallyChanged(u)) return;
3524
+ if (!U.hasLayoutActuallyChanged(u)) return;
3449
3525
  let d = e.portlets.map((e) => {
3450
3526
  let t = u.find((t) => t.i === e.id);
3451
3527
  return t ? {
@@ -3463,7 +3539,7 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
3463
3539
  lg: u
3464
3540
  }
3465
3541
  };
3466
- W.setLastKnownLayout(u), i?.(f);
3542
+ U.setLastKnownLayout(u), i?.(f);
3467
3543
  try {
3468
3544
  await o(f);
3469
3545
  } catch (e) {
@@ -3476,11 +3552,11 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
3476
3552
  i,
3477
3553
  o,
3478
3554
  ue,
3479
- W
3480
- ]), Q = G(async (n, r, a, s, c, l) => {
3555
+ U
3556
+ ]), _e = G(async (n, r, a, s, c, l) => {
3481
3557
  if (!t || !oe || !i || !ue) return;
3482
3558
  let u = [...n];
3483
- if (!W.hasLayoutActuallyChanged(u)) return;
3559
+ if (!U.hasLayoutActuallyChanged(u)) return;
3484
3560
  let d = e.portlets.map((e) => {
3485
3561
  let t = u.find((t) => t.i === e.id);
3486
3562
  return t ? {
@@ -3498,7 +3574,7 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
3498
3574
  lg: u
3499
3575
  }
3500
3576
  };
3501
- if (W.setLastKnownLayout(u), i(f), o) try {
3577
+ if (U.setLastKnownLayout(u), i(f), o) try {
3502
3578
  await o(f);
3503
3579
  } catch (e) {
3504
3580
  console.error("Auto-save failed after resize:", e);
@@ -3510,8 +3586,8 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
3510
3586
  i,
3511
3587
  o,
3512
3588
  ue,
3513
- W
3514
- ]), _e = G((e, t) => {
3589
+ U
3590
+ ]), be = G((e, t) => {
3515
3591
  if (!B) return;
3516
3592
  t.preventDefault();
3517
3593
  let n = t.clientY, r = H.map((e) => ({
@@ -3524,19 +3600,19 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
3524
3600
  ...t,
3525
3601
  h: Math.max(C.minH, t.h + a)
3526
3602
  } : t);
3527
- ie.current = o, W.setDraftRows(o);
3603
+ ie.current = o, U.setDraftRows(o);
3528
3604
  }, a = () => {
3529
3605
  document.removeEventListener("mousemove", i), document.removeEventListener("mouseup", a);
3530
3606
  let e = ie.current ?? r;
3531
- ie.current = null, W.updateRowLayout(e);
3607
+ ie.current = null, U.updateRowLayout(e);
3532
3608
  };
3533
3609
  document.addEventListener("mousemove", i), document.addEventListener("mouseup", a);
3534
3610
  }, [
3535
3611
  B,
3536
3612
  C,
3537
3613
  H,
3538
- W
3539
- ]), be = G((e, t, n) => {
3614
+ U
3615
+ ]), xe = G((e, t, n) => {
3540
3616
  if (!B) return;
3541
3617
  n.preventDefault();
3542
3618
  let r = n.clientX, i = H.map((e) => ({
@@ -3549,7 +3625,7 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
3549
3625
  let l = (n) => {
3550
3626
  let a = n.clientX - r, l = Math.round(a / c);
3551
3627
  if (l === 0) {
3552
- ie.current = i, W.setDraftRows(i);
3628
+ ie.current = i, U.setDraftRows(i);
3553
3629
  return;
3554
3630
  }
3555
3631
  let u = o.w + l, d = s.w - l;
@@ -3573,14 +3649,14 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
3573
3649
  } : e);
3574
3650
  return {
3575
3651
  ...n,
3576
- columns: kn(i, C)
3652
+ columns: Pn(i, C)
3577
3653
  };
3578
3654
  });
3579
- ie.current = f, W.setDraftRows(f);
3655
+ ie.current = f, U.setDraftRows(f);
3580
3656
  }, u = () => {
3581
3657
  document.removeEventListener("mousemove", l), document.removeEventListener("mouseup", u);
3582
3658
  let e = ie.current ?? i;
3583
- ie.current = null, W.updateRowLayout(e);
3659
+ ie.current = null, U.updateRowLayout(e);
3584
3660
  };
3585
3661
  document.addEventListener("mousemove", l), document.addEventListener("mouseup", u);
3586
3662
  }, [
@@ -3588,16 +3664,16 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
3588
3664
  C,
3589
3665
  A,
3590
3666
  H,
3591
- W
3592
- ]), xe = G((e, t, n, r) => {
3667
+ U
3668
+ ]), Se = G((e, t, n, r) => {
3593
3669
  pe.current && (ae.current = {
3594
3670
  rowIndex: e,
3595
3671
  colIndex: t,
3596
3672
  portletId: n
3597
- }, fe.current.setIsDraggingPortlet(!0), r.dataTransfer.effectAllowed = "move", r.dataTransfer.setData("text/plain", n));
3598
- }, []), Se = G(() => {
3599
- ae.current = null, fe.current.setIsDraggingPortlet(!1);
3600
- }, []), Ce = G((e, t) => {
3673
+ }, W.current.setIsDraggingPortlet(!0), r.dataTransfer.effectAllowed = "move", r.dataTransfer.setData("text/plain", n));
3674
+ }, []), Ce = G(() => {
3675
+ ae.current = null, W.current.setIsDraggingPortlet(!1);
3676
+ }, []), $ = G((e, t) => {
3601
3677
  let n = ae.current;
3602
3678
  if (!n) return;
3603
3679
  let r = H.map((e) => ({
@@ -3614,16 +3690,16 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
3614
3690
  let u = t ?? l.columns.length;
3615
3691
  !s && i === c && t !== null && t > n.colIndex && --u, l.columns.splice(u, 0, o), (i !== c || s) && (s || (r[i] = {
3616
3692
  ...r[i],
3617
- columns: On(r[i].columns.map((e) => e.portletId), C)
3693
+ columns: Nn(r[i].columns.map((e) => e.portletId), C)
3618
3694
  }), r[c] = {
3619
3695
  ...r[c],
3620
- columns: On(r[c].columns.map((e) => e.portletId), C)
3621
- }), W.updateRowLayout(r);
3696
+ columns: Nn(r[c].columns.map((e) => e.portletId), C)
3697
+ }), U.updateRowLayout(r);
3622
3698
  }, [
3623
3699
  C,
3624
3700
  H,
3625
- W
3626
- ]), $ = G((e) => {
3701
+ U
3702
+ ]), we = G((e) => {
3627
3703
  let t = ae.current;
3628
3704
  if (!t) return;
3629
3705
  let n = H.map((e) => ({
@@ -3632,22 +3708,22 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
3632
3708
  })), r = n[t.rowIndex];
3633
3709
  if (!r) return;
3634
3710
  let [i] = r.columns.splice(t.colIndex, 1);
3635
- r.columns.length === 0 ? n.splice(t.rowIndex, 1) : r.columns = On(r.columns.map((e) => e.portletId), C);
3711
+ r.columns.length === 0 ? n.splice(t.rowIndex, 1) : r.columns = Nn(r.columns.map((e) => e.portletId), C);
3636
3712
  let a = {
3637
- id: En(),
3713
+ id: jn(),
3638
3714
  h: Math.max(C.minH, 3),
3639
- columns: On([i.portletId], C)
3715
+ columns: Nn([i.portletId], C)
3640
3716
  };
3641
- n.splice(e, 0, a), W.updateRowLayout(n);
3717
+ n.splice(e, 0, a), U.updateRowLayout(n);
3642
3718
  }, [
3643
3719
  C,
3644
3720
  H,
3645
- W
3646
- ]), we = G((e, t) => {
3647
- fe.current.refreshPortlet(e, t);
3648
- }, []), Te = G(async (e) => {
3649
- let t = await W.savePortlet(e);
3650
- W.closePortletModal(), t && setTimeout(() => {
3721
+ U
3722
+ ]), Te = G((e, t) => {
3723
+ W.current.refreshPortlet(e, t);
3724
+ }, []), Ee = G(async (e) => {
3725
+ let t = await U.savePortlet(e);
3726
+ U.closePortletModal(), t && setTimeout(() => {
3651
3727
  let e = () => {
3652
3728
  let e = j.current[t];
3653
3729
  return e ||= document.querySelector(`[data-portlet-id="${t}"]`), e ? (e.scrollIntoView({
@@ -3662,10 +3738,10 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
3662
3738
  }, 300);
3663
3739
  }, 200);
3664
3740
  }, 200);
3665
- }, [W]), Ee = G(async (e) => {
3666
- await fe.current.deletePortlet(e);
3667
- }, []), De = G(async (e) => {
3668
- let t = await fe.current.duplicatePortlet(e);
3741
+ }, [U]), De = G(async (e) => {
3742
+ await W.current.deletePortlet(e);
3743
+ }, []), Oe = G(async (e) => {
3744
+ let t = await W.current.duplicatePortlet(e);
3669
3745
  t && setTimeout(() => {
3670
3746
  let e = () => {
3671
3747
  let e = j.current[t];
@@ -3681,75 +3757,75 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
3681
3757
  }, 300);
3682
3758
  }, 200);
3683
3759
  }, 200);
3684
- }, []), Oe = G(() => {
3685
- W.openAddPortlet();
3686
- }, [W]), ke = G(() => {
3687
- W.openAddText();
3688
- }, [W]), Ae = G((e) => {
3689
- let t = St(e);
3690
- t.analysisConfig.charts[t.analysisConfig.analysisType]?.chartType === "markdown" ? fe.current.openEditText(e) : fe.current.openEditPortlet(e);
3691
- }, []), je = G(async (e) => {
3692
- await W.handlePaletteChange(e);
3693
- }, [W]), Me = G((e) => {
3694
- fe.current.openFilterConfig(e);
3695
- }, []), Ne = G(async (e) => {
3696
- await W.saveFilterConfig(e);
3697
- }, [W]), Pe = G((e, t) => {
3760
+ }, []), ke = G(() => {
3761
+ U.openAddPortlet();
3762
+ }, [U]), Ae = G(() => {
3763
+ U.openAddText();
3764
+ }, [U]), je = G((e) => {
3765
+ let t = yt(e);
3766
+ t.analysisConfig.charts[t.analysisConfig.analysisType]?.chartType === "markdown" ? W.current.openEditText(e) : W.current.openEditPortlet(e);
3767
+ }, []), Me = G(async (e) => {
3768
+ await U.handlePaletteChange(e);
3769
+ }, [U]), Ne = G((e) => {
3770
+ W.current.openFilterConfig(e);
3771
+ }, []), Pe = G(async (e) => {
3772
+ await U.saveFilterConfig(e);
3773
+ }, [U]), Fe = G((e, t) => {
3698
3774
  j.current[e] = t;
3699
- }, []), Fe = G((e, t) => {
3775
+ }, []), Ie = G((e, t) => {
3700
3776
  ne.current[e] = t;
3701
- }, []), Ie = q(() => ({
3702
- RefreshIcon: Pn,
3703
- EditIcon: Fn,
3704
- DeleteIcon: In,
3705
- CopyIcon: Ln,
3706
- FilterIcon: Rn
3707
- }), []), Le = G(async (e, t) => {
3708
- await fe.current.toggleFilterForPortlet(e, t);
3709
- }, []), Re = G((e) => {
3710
- W.selectFilter(e);
3711
- }, [W]), ze = G(async (e) => {
3712
- await W.selectAllForFilter(e);
3713
- }, [W]), Be = q(() => ({
3714
- onToggleFilter: Le,
3715
- onRefresh: we,
3716
- onDuplicate: De,
3717
- onEdit: Ae,
3718
- onDelete: Ee,
3719
- onOpenFilterConfig: Me
3777
+ }, []), Le = q(() => ({
3778
+ RefreshIcon: zn,
3779
+ EditIcon: Bn,
3780
+ DeleteIcon: Vn,
3781
+ CopyIcon: Hn,
3782
+ FilterIcon: Un
3783
+ }), []), Re = G(async (e, t) => {
3784
+ await W.current.toggleFilterForPortlet(e, t);
3785
+ }, []), ze = G((e) => {
3786
+ U.selectFilter(e);
3787
+ }, [U]), Be = G(async (e) => {
3788
+ await U.selectAllForFilter(e);
3789
+ }, [U]), Ve = q(() => ({
3790
+ onToggleFilter: Re,
3791
+ onRefresh: Te,
3792
+ onDuplicate: Oe,
3793
+ onEdit: je,
3794
+ onDelete: De,
3795
+ onOpenFilterConfig: Ne
3720
3796
  }), [
3721
- Le,
3722
- we,
3797
+ Re,
3798
+ Te,
3799
+ Oe,
3800
+ je,
3723
3801
  De,
3724
- Ae,
3725
- Ee,
3726
- Me
3727
- ]), Ve = G((i, a, o) => /* @__PURE__ */ Z(un, {
3802
+ Ne
3803
+ ]), He = G((i, a, o) => /* @__PURE__ */ Z(hn, {
3728
3804
  portlet: i,
3729
3805
  editable: t,
3730
- layoutMode: U,
3806
+ layoutMode: fe,
3731
3807
  dashboardFilters: n,
3732
3808
  configEagerLoad: e.eagerLoad,
3733
3809
  loadingComponent: r,
3734
3810
  colorPalette: c,
3735
3811
  containerProps: a,
3736
3812
  headerProps: o,
3737
- callbacks: Be,
3738
- setPortletRef: Pe,
3739
- setPortletComponentRef: Fe,
3740
- icons: Ie
3813
+ callbacks: Ve,
3814
+ setPortletRef: Fe,
3815
+ setPortletComponentRef: Ie,
3816
+ icons: Le
3741
3817
  }), [
3742
3818
  t,
3743
- U,
3819
+ fe,
3744
3820
  n,
3745
3821
  e.eagerLoad,
3746
3822
  r,
3747
3823
  c,
3748
- Be,
3749
- Pe,
3824
+ Ve,
3750
3825
  Fe,
3751
- Ie
3752
- ]), He = e.portlets.map((e) => ({
3826
+ Ie,
3827
+ Le
3828
+ ]), Ue = e.portlets.map((e) => ({
3753
3829
  i: e.id,
3754
3830
  x: e.x,
3755
3831
  y: e.y,
@@ -3769,12 +3845,12 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
3769
3845
  "ne",
3770
3846
  "nw"
3771
3847
  ] } : {}
3772
- })), Ue = G(() => /* @__PURE__ */ Z(ve, {
3848
+ })), We = G(() => /* @__PURE__ */ Z(ve, {
3773
3849
  className: "layout",
3774
- layout: He,
3775
- onLayoutChange: ge,
3776
- onDragStop: X,
3777
- onResizeStop: Q,
3850
+ layout: Ue,
3851
+ onLayoutChange: X,
3852
+ onDragStop: Q,
3853
+ onResizeStop: _e,
3778
3854
  width: A,
3779
3855
  gridConfig: {
3780
3856
  cols: C.cols,
@@ -3805,31 +3881,31 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
3805
3881
  })
3806
3882
  },
3807
3883
  compactor: ye,
3808
- children: e.portlets.filter((e) => e && e.id).map((e) => /* @__PURE__ */ Z("div", { children: Ve(e) }, e.id))
3884
+ children: e.portlets.filter((e) => e && e.id).map((e) => /* @__PURE__ */ Z("div", { children: He(e) }, e.id))
3809
3885
  }), [
3810
- He,
3811
- ge,
3886
+ Ue,
3812
3887
  X,
3813
3888
  Q,
3889
+ _e,
3814
3890
  A,
3815
3891
  C,
3816
3892
  B,
3817
3893
  e.portlets,
3818
- Ve
3819
- ]), We = G(() => /* @__PURE__ */ Z(fn, {
3894
+ He
3895
+ ]), Ge = G(() => /* @__PURE__ */ Z(_n, {
3820
3896
  rows: H,
3821
3897
  portlets: e.portlets,
3822
3898
  gridSettings: C,
3823
3899
  gridWidth: A,
3824
3900
  canEdit: B,
3825
3901
  isDragging: z,
3826
- onRowResize: _e,
3827
- onColumnResize: be,
3828
- onPortletDragStart: xe,
3829
- onPortletDragEnd: Se,
3830
- onRowDrop: Ce,
3831
- onNewRowDrop: $,
3832
- renderPortlet: Ve
3902
+ onRowResize: be,
3903
+ onColumnResize: xe,
3904
+ onPortletDragStart: Se,
3905
+ onPortletDragEnd: Ce,
3906
+ onRowDrop: $,
3907
+ onNewRowDrop: we,
3908
+ renderPortlet: He
3833
3909
  }), [
3834
3910
  H,
3835
3911
  e.portlets,
@@ -3837,14 +3913,14 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
3837
3913
  A,
3838
3914
  B,
3839
3915
  z,
3840
- _e,
3841
3916
  be,
3842
3917
  xe,
3843
3918
  Se,
3844
3919
  Ce,
3845
3920
  $,
3846
- Ve
3847
- ]), Ge = {
3921
+ we,
3922
+ He
3923
+ ]), Ke = {
3848
3924
  config: e,
3849
3925
  editable: t,
3850
3926
  dashboardFilters: n,
@@ -3860,8 +3936,8 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
3860
3936
  isPortletModalOpen: se,
3861
3937
  editingPortlet: P,
3862
3938
  isTextModalOpen: ce,
3863
- editingTextPortlet: le,
3864
- isFilterConfigModalOpen: F,
3939
+ editingTextPortlet: F,
3940
+ isFilterConfigModalOpen: le,
3865
3941
  filterConfigPortlet: I,
3866
3942
  deleteConfirmPortletId: L,
3867
3943
  draftRows: R,
@@ -3871,9 +3947,9 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
3871
3947
  canChangeLayoutMode: V,
3872
3948
  selectedFilter: de,
3873
3949
  resolvedRows: H,
3874
- layoutMode: U,
3950
+ layoutMode: fe,
3875
3951
  allowedModes: S,
3876
- actions: W,
3952
+ actions: U,
3877
3953
  displayMode: v,
3878
3954
  scaleFactor: y,
3879
3955
  designWidth: x,
@@ -3886,33 +3962,33 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
3886
3962
  editBarRef: ee,
3887
3963
  gridContentRef: te,
3888
3964
  gridSettings: C,
3889
- baseLayout: He,
3890
- renderPortletCard: Ve,
3891
- renderActiveLayout: G(() => U === "rows" ? We() : Ue(), [
3892
- U,
3893
- We,
3894
- Ue
3965
+ baseLayout: Ue,
3966
+ renderPortletCard: He,
3967
+ renderActiveLayout: G(() => fe === "rows" ? Ge() : We(), [
3968
+ fe,
3969
+ Ge,
3970
+ We
3895
3971
  ]),
3896
- handleAddPortlet: Oe,
3897
- handleAddText: ke,
3898
- handlePaletteChange: je,
3899
- handleFilterSelect: Re,
3900
- handleSelectAllForFilter: ze,
3901
- handleSaveFilterConfig: Ne,
3902
- handlePortletSave: Te,
3903
- handlePortletRefresh: we,
3904
- handleLayoutChange: ge,
3905
- handleDragStop: X,
3906
- handleResizeStop: Q,
3907
- startRowResize: _e,
3908
- startColumnResize: be,
3909
- handlePortletDragStart: xe,
3910
- handlePortletDragEnd: Se,
3911
- handleRowDrop: Ce,
3912
- handleNewRowDrop: $
3972
+ handleAddPortlet: ke,
3973
+ handleAddText: Ae,
3974
+ handlePaletteChange: Me,
3975
+ handleFilterSelect: ze,
3976
+ handleSelectAllForFilter: Be,
3977
+ handleSaveFilterConfig: Pe,
3978
+ handlePortletSave: Ee,
3979
+ handlePortletRefresh: Te,
3980
+ handleLayoutChange: X,
3981
+ handleDragStop: Q,
3982
+ handleResizeStop: _e,
3983
+ startRowResize: be,
3984
+ startColumnResize: xe,
3985
+ handlePortletDragStart: Se,
3986
+ handlePortletDragEnd: Ce,
3987
+ handleRowDrop: $,
3988
+ handleNewRowDrop: we
3913
3989
  };
3914
- return /* @__PURE__ */ Z(Mn.Provider, {
3915
- value: Ge,
3990
+ return /* @__PURE__ */ Z(Ln.Provider, {
3991
+ value: Ke,
3916
3992
  children: /* @__PURE__ */ Z(M, {
3917
3993
  value: w,
3918
3994
  children: /* @__PURE__ */ Z("div", {
@@ -3929,15 +4005,15 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
3929
4005
  }
3930
4006
  //#endregion
3931
4007
  //#region src/client/components/dashboard/DashboardProvider.tsx
3932
- function Bn({ children: e, ...t }) {
3933
- return /* @__PURE__ */ Z(zt, { children: /* @__PURE__ */ Z(zn, {
4008
+ function Gn({ children: e, ...t }) {
4009
+ return /* @__PURE__ */ Z(Wt, { children: /* @__PURE__ */ Z(Wn, {
3934
4010
  ...t,
3935
4011
  children: e
3936
4012
  }) });
3937
4013
  }
3938
4014
  //#endregion
3939
4015
  //#region src/client/utils/colorPalettes.ts
3940
- var Vn = [
4016
+ var Kn = [
3941
4017
  {
3942
4018
  name: "default",
3943
4019
  label: "Default",
@@ -4620,14 +4696,14 @@ var Vn = [
4620
4696
  ]
4621
4697
  }
4622
4698
  ];
4623
- function Hn(e) {
4624
- return e && Vn.find((t) => t.name === e) || Vn[0];
4699
+ function qn(e) {
4700
+ return e && Kn.find((t) => t.name === e) || Kn[0];
4625
4701
  }
4626
4702
  //#endregion
4627
4703
  //#region src/client/components/ColorPaletteSelector.tsx
4628
- var Un = s("chevronDown");
4629
- function Wn({ currentPalette: e = "default", onPaletteChange: t, className: n = "" }) {
4630
- let [r, i] = Y(!1), a = J(null), o = Hn(e);
4704
+ var Jn = s("chevronDown");
4705
+ function Yn({ currentPalette: e = "default", onPaletteChange: t, className: n = "" }) {
4706
+ let [r, i] = Y(!1), a = J(null), o = qn(e);
4631
4707
  K(() => {
4632
4708
  function e(e) {
4633
4709
  a.current && !a.current.contains(e.target) && i(!1);
@@ -4674,13 +4750,13 @@ function Wn({ currentPalette: e = "default", onPaletteChange: t, className: n =
4674
4750
  ]
4675
4751
  }),
4676
4752
  /* @__PURE__ */ Z("span", { children: o.label }),
4677
- /* @__PURE__ */ Z(Un, { className: `dc:w-4 dc:h-4 dc:transition-transform ${r ? "dc:rotate-180" : ""}` })
4753
+ /* @__PURE__ */ Z(Jn, { className: `dc:w-4 dc:h-4 dc:transition-transform ${r ? "dc:rotate-180" : ""}` })
4678
4754
  ]
4679
4755
  }), r && /* @__PURE__ */ Z("div", {
4680
4756
  className: "dc:absolute dc:top-full dc:left-0 dc:mt-1 dc:w-72 dc:md:w-80 dc:lg:w-96 bg-dc-surface dc:border border-dc-border dc:rounded-md dc:shadow-lg dc:z-50 dc:max-h-80 dc:overflow-y-auto",
4681
4757
  children: /* @__PURE__ */ Z("div", {
4682
4758
  className: "dc:py-1",
4683
- children: Vn.slice().sort((e, t) => e.label.localeCompare(t.label)).map((t) => /* @__PURE__ */ Z("button", {
4759
+ children: Kn.slice().sort((e, t) => e.label.localeCompare(t.label)).map((t) => /* @__PURE__ */ Z("button", {
4684
4760
  type: "button",
4685
4761
  onClick: () => s(t.name),
4686
4762
  className: `dc:w-full dc:px-3 dc:py-2 dc:text-left dc:text-sm hover:bg-dc-surface-hover focus:outline-hidden focus:bg-dc-surface-hover ${t.name === e ? "bg-dc-surface-secondary" : "text-dc-text-secondary"}`,
@@ -4728,8 +4804,8 @@ function Wn({ currentPalette: e = "default", onPaletteChange: t, className: n =
4728
4804
  }
4729
4805
  //#endregion
4730
4806
  //#region src/client/components/FloatingEditToolbar.tsx
4731
- var Gn = s("edit"), Kn = s("check"), qn = s("segment"), Jn = s("table"), Yn = s("add");
4732
- function Xn({ className: e }) {
4807
+ var Xn = s("edit"), Zn = s("check"), Qn = s("segment"), $n = s("table"), er = s("add");
4808
+ function tr({ className: e }) {
4733
4809
  return /* @__PURE__ */ Q("svg", {
4734
4810
  className: e,
4735
4811
  viewBox: "0 0 24 24",
@@ -4752,8 +4828,8 @@ function Xn({ className: e }) {
4752
4828
  })]
4753
4829
  });
4754
4830
  }
4755
- var Zn = s("swatch");
4756
- function Qn({ isEditBarVisible: e, position: t, isEditMode: n, onEditModeToggle: r, layoutMode: i, onLayoutModeChange: a, allowedModes: o, canChangeLayoutMode: s, currentPalette: c, onPaletteChange: l, onAddPortlet: u, onAddText: d }) {
4831
+ var nr = s("swatch");
4832
+ function rr({ isEditBarVisible: e, position: t, isEditMode: n, onEditModeToggle: r, layoutMode: i, onLayoutModeChange: a, allowedModes: o, canChangeLayoutMode: s, currentPalette: c, onPaletteChange: l, onAddPortlet: u, onAddText: d }) {
4757
4833
  let [f, p] = Y(!1), m = J(null);
4758
4834
  K(() => {
4759
4835
  if (!f) return;
@@ -4771,23 +4847,23 @@ function Qn({ isEditBarVisible: e, position: t, isEditMode: n, onEditModeToggle:
4771
4847
  ${h} ${t === "left" ? g ? "dc:-translate-x-16 dc:opacity-0 dc:pointer-events-none" : "dc:translate-x-0 dc:opacity-100" : g ? "dc:translate-x-16 dc:opacity-0 dc:pointer-events-none" : "dc:translate-x-0 dc:opacity-100"}`,
4772
4848
  style: { boxShadow: "var(--dc-shadow-lg)" },
4773
4849
  children: [
4774
- /* @__PURE__ */ Z($n, {
4775
- icon: n ? Kn : Gn,
4850
+ /* @__PURE__ */ Z(ir, {
4851
+ icon: n ? Zn : Xn,
4776
4852
  tooltip: n ? "Finish Editing" : "Edit Dashboard",
4777
4853
  isActive: n,
4778
4854
  onClick: r
4779
4855
  }),
4780
4856
  n && o.length > 1 && /* @__PURE__ */ Q(X, { children: [
4781
4857
  /* @__PURE__ */ Z("div", { className: "dc:w-full dc:h-px bg-dc-border dc:my-0.5" }),
4782
- /* @__PURE__ */ Z($n, {
4783
- icon: qn,
4858
+ /* @__PURE__ */ Z(ir, {
4859
+ icon: Qn,
4784
4860
  tooltip: "Grid Layout",
4785
4861
  isActive: i === "grid",
4786
4862
  disabled: !s,
4787
4863
  onClick: () => a("grid")
4788
4864
  }),
4789
- /* @__PURE__ */ Z($n, {
4790
- icon: Jn,
4865
+ /* @__PURE__ */ Z(ir, {
4866
+ icon: $n,
4791
4867
  tooltip: "Rows Layout",
4792
4868
  isActive: i === "rows",
4793
4869
  disabled: !s,
@@ -4797,12 +4873,12 @@ function Qn({ isEditBarVisible: e, position: t, isEditMode: n, onEditModeToggle:
4797
4873
  n && /* @__PURE__ */ Q(X, { children: [/* @__PURE__ */ Z("div", { className: "dc:w-full dc:h-px bg-dc-border dc:my-0.5" }), /* @__PURE__ */ Q("div", {
4798
4874
  ref: m,
4799
4875
  className: "dc:relative",
4800
- children: [/* @__PURE__ */ Z($n, {
4801
- icon: Zn,
4876
+ children: [/* @__PURE__ */ Z(ir, {
4877
+ icon: nr,
4802
4878
  tooltip: "Color Palette",
4803
4879
  isActive: f,
4804
4880
  onClick: () => p(!f)
4805
- }), f && /* @__PURE__ */ Z(er, {
4881
+ }), f && /* @__PURE__ */ Z(ar, {
4806
4882
  position: t,
4807
4883
  currentPalette: c,
4808
4884
  onPaletteChange: (e) => {
@@ -4812,13 +4888,13 @@ function Qn({ isEditBarVisible: e, position: t, isEditMode: n, onEditModeToggle:
4812
4888
  })] }),
4813
4889
  n && /* @__PURE__ */ Q(X, { children: [
4814
4890
  /* @__PURE__ */ Z("div", { className: "dc:w-full dc:h-px bg-dc-border dc:my-0.5" }),
4815
- d && /* @__PURE__ */ Z($n, {
4816
- icon: Xn,
4891
+ d && /* @__PURE__ */ Z(ir, {
4892
+ icon: tr,
4817
4893
  tooltip: "Add Text",
4818
4894
  onClick: d
4819
4895
  }),
4820
- /* @__PURE__ */ Z($n, {
4821
- icon: Yn,
4896
+ /* @__PURE__ */ Z(ir, {
4897
+ icon: er,
4822
4898
  tooltip: "Add Portlet",
4823
4899
  onClick: u
4824
4900
  })
@@ -4827,7 +4903,7 @@ function Qn({ isEditBarVisible: e, position: t, isEditMode: n, onEditModeToggle:
4827
4903
  });
4828
4904
  return typeof document > "u" ? null : _e(_, document.body);
4829
4905
  }
4830
- function $n({ icon: e, tooltip: t, isActive: n, disabled: r, onClick: i }) {
4906
+ function ir({ icon: e, tooltip: t, isActive: n, disabled: r, onClick: i }) {
4831
4907
  return /* @__PURE__ */ Z("button", {
4832
4908
  type: "button",
4833
4909
  onClick: i,
@@ -4838,13 +4914,13 @@ function $n({ icon: e, tooltip: t, isActive: n, disabled: r, onClick: i }) {
4838
4914
  children: /* @__PURE__ */ Z(e, { className: "dc:w-5 dc:h-5" })
4839
4915
  });
4840
4916
  }
4841
- function er({ position: e, currentPalette: t, onPaletteChange: n }) {
4917
+ function ar({ position: e, currentPalette: t, onPaletteChange: n }) {
4842
4918
  return /* @__PURE__ */ Z("div", {
4843
4919
  className: `dc:absolute dc:top-0 ${e === "left" ? "dc:left-full dc:ml-2" : "dc:right-full dc:mr-2"} dc:w-52 bg-dc-surface dc:border border-dc-border dc:rounded-md dc:z-50 dc:max-h-72 dc:overflow-y-auto`,
4844
4920
  style: { boxShadow: "var(--dc-shadow-lg)" },
4845
4921
  children: /* @__PURE__ */ Z("div", {
4846
4922
  className: "dc:py-1",
4847
- children: Vn.slice().sort((e, t) => e.label.localeCompare(t.label)).map((e) => /* @__PURE__ */ Z("button", {
4923
+ children: Kn.slice().sort((e, t) => e.label.localeCompare(t.label)).map((e) => /* @__PURE__ */ Z("button", {
4848
4924
  type: "button",
4849
4925
  onClick: () => n(e.name),
4850
4926
  className: `dc:w-full dc:px-3 dc:py-2 dc:text-left dc:text-sm hover:bg-dc-surface-hover dc:transition-colors ${e.name === t ? "bg-dc-surface-secondary text-dc-primary" : "text-dc-text-secondary"}`,
@@ -4871,9 +4947,9 @@ function er({ position: e, currentPalette: t, onPaletteChange: n }) {
4871
4947
  }
4872
4948
  //#endregion
4873
4949
  //#region src/client/components/dashboard/DashboardToolbar.tsx
4874
- var tr = s("edit"), nr = s("check"), rr = s("add"), ir = s("desktop"), ar = s("segment"), or = s("table");
4875
- function sr() {
4876
- let { t: e } = P(), { editable: t, hideToolbar: n, features: r, displayMode: i, isEditMode: a, isResponsiveEditable: o, layoutMode: s, allowedModes: c, canChangeLayoutMode: l, isScrolled: u, isEditBarVisible: d, editBarRef: f, config: p, actions: m, handleAddText: h, handleAddPortlet: g, handlePaletteChange: _ } = Nn();
4950
+ var or = s("edit"), sr = s("check"), cr = s("add"), lr = s("desktop"), ur = s("segment"), dr = s("table");
4951
+ function fr() {
4952
+ let { t: e } = P(), { editable: t, hideToolbar: n, features: r, displayMode: i, isEditMode: a, isResponsiveEditable: o, layoutMode: s, allowedModes: c, canChangeLayoutMode: l, isScrolled: u, isEditBarVisible: d, editBarRef: f, config: p, actions: m, handleAddText: h, handleAddPortlet: g, handlePaletteChange: _ } = Rn();
4877
4953
  return !t || n ? null : /* @__PURE__ */ Q(X, { children: [r.editToolbar !== "floating" && /* @__PURE__ */ Q("div", {
4878
4954
  ref: f,
4879
4955
  className: `dc:mb-4 dc:flex dc:justify-between dc:items-center dc:sticky dc:top-0 dc:z-10 dc:px-4 dc:py-4 bg-dc-surface-tertiary dc:border border-dc-border dc:rounded-lg dc:transition-all dc:duration-200 ${u ? "dc:border-b" : ""}`,
@@ -4889,7 +4965,7 @@ function sr() {
4889
4965
  color: o ? "var(--dc-primary)" : "var(--dc-text-muted)",
4890
4966
  borderColor: o ? a ? "var(--dc-border)" : "var(--dc-primary)" : "var(--dc-border)"
4891
4967
  },
4892
- children: [Z(a ? nr : tr, { className: "dc:w-4 dc:h-4 dc:mr-1.5" }), e(a ? "dashboard.finishEditing" : "dashboard.edit")]
4968
+ children: [Z(a ? sr : or, { className: "dc:w-4 dc:h-4 dc:mr-1.5" }), e(a ? "dashboard.finishEditing" : "dashboard.edit")]
4893
4969
  }),
4894
4970
  a && c.length > 1 && /* @__PURE__ */ Q("div", {
4895
4971
  className: "dc:inline-flex dc:rounded-md dc:border border-dc-border dc:overflow-hidden dc:whitespace-nowrap",
@@ -4897,17 +4973,17 @@ function sr() {
4897
4973
  onClick: () => m.handleLayoutModeChange("grid"),
4898
4974
  disabled: !l,
4899
4975
  className: `dc:inline-flex dc:items-center dc:gap-2 dc:whitespace-nowrap dc:px-3 dc:py-1.5 dc:text-sm dc:font-medium dc:transition-colors dc:border-b-2 ${s === "grid" ? "bg-dc-accent-bg text-dc-accent border-b-dc-accent" : "bg-dc-surface text-dc-text-secondary hover:bg-dc-surface-hover border-b-transparent"} ${l ? "" : "dc:cursor-not-allowed dc:opacity-50"}`,
4900
- children: [/* @__PURE__ */ Z(ar, { className: "dc:w-4 dc:h-4 dc:shrink-0" }), e("dashboard.grid")]
4976
+ children: [/* @__PURE__ */ Z(ur, { className: "dc:w-4 dc:h-4 dc:shrink-0" }), e("dashboard.grid")]
4901
4977
  }), /* @__PURE__ */ Q("button", {
4902
4978
  onClick: () => m.handleLayoutModeChange("rows"),
4903
4979
  disabled: !l,
4904
4980
  className: `dc:inline-flex dc:items-center dc:gap-2 dc:whitespace-nowrap dc:px-3 dc:py-1.5 dc:text-sm dc:font-medium dc:transition-colors dc:border-b-2 ${s === "rows" ? "bg-dc-accent-bg text-dc-accent border-b-dc-accent" : "bg-dc-surface text-dc-text-secondary hover:bg-dc-surface-hover border-b-transparent"} ${l ? "" : "dc:cursor-not-allowed dc:opacity-50"}`,
4905
- children: [/* @__PURE__ */ Z(or, { className: "dc:w-4 dc:h-4 dc:shrink-0" }), e("dashboard.rows")]
4981
+ children: [/* @__PURE__ */ Z(dr, { className: "dc:w-4 dc:h-4 dc:shrink-0" }), e("dashboard.rows")]
4906
4982
  })]
4907
4983
  }),
4908
4984
  !o && /* @__PURE__ */ Q("div", {
4909
4985
  className: "dc:flex dc:items-center dc:gap-2 dc:text-sm text-dc-text-secondary",
4910
- children: [/* @__PURE__ */ Z(ir, { className: "dc:w-4 dc:h-4" }), /* @__PURE__ */ Z("span", { children: e("dashboard.desktopRequired") })]
4986
+ children: [/* @__PURE__ */ Z(lr, { className: "dc:w-4 dc:h-4" }), /* @__PURE__ */ Z("span", { children: e("dashboard.desktopRequired") })]
4911
4987
  }),
4912
4988
  a && o && /* @__PURE__ */ Z("p", {
4913
4989
  className: "dc:hidden dc:md:block dc:text-sm text-dc-text-secondary",
@@ -4917,7 +4993,7 @@ function sr() {
4917
4993
  }), a && /* @__PURE__ */ Q("div", {
4918
4994
  className: "dc:flex dc:items-center dc:gap-3",
4919
4995
  children: [
4920
- /* @__PURE__ */ Z(Wn, {
4996
+ /* @__PURE__ */ Z(Yn, {
4921
4997
  currentPalette: p.colorPalette,
4922
4998
  onPaletteChange: _,
4923
4999
  className: "dc:shrink-0"
@@ -4929,7 +5005,7 @@ function sr() {
4929
5005
  color: "var(--dc-text-secondary)",
4930
5006
  borderColor: "var(--dc-border)"
4931
5007
  },
4932
- children: [/* @__PURE__ */ Z(jn, { className: "dc:w-5 dc:h-5 dc:mr-2" }), e("dashboard.addText")]
5008
+ children: [/* @__PURE__ */ Z(In, { className: "dc:w-5 dc:h-5 dc:mr-2" }), e("dashboard.addText")]
4933
5009
  }),
4934
5010
  /* @__PURE__ */ Q("button", {
4935
5011
  onClick: g,
@@ -4938,11 +5014,11 @@ function sr() {
4938
5014
  color: "var(--dc-primary)",
4939
5015
  borderColor: "var(--dc-primary)"
4940
5016
  },
4941
- children: [/* @__PURE__ */ Z(rr, { className: "dc:w-5 dc:h-5 dc:mr-2" }), e("dashboard.addPortlet")]
5017
+ children: [/* @__PURE__ */ Z(cr, { className: "dc:w-5 dc:h-5 dc:mr-2" }), e("dashboard.addPortlet")]
4942
5018
  })
4943
5019
  ]
4944
5020
  })]
4945
- }), r.editToolbar !== "top" && i === "desktop" && /* @__PURE__ */ Z(Qn, {
5021
+ }), r.editToolbar !== "top" && i === "desktop" && /* @__PURE__ */ Z(rr, {
4946
5022
  isEditBarVisible: r.editToolbar === "floating" ? !1 : d,
4947
5023
  position: r.floatingToolbarPosition || "right",
4948
5024
  isEditMode: a,
@@ -4959,10 +5035,10 @@ function sr() {
4959
5035
  }
4960
5036
  //#endregion
4961
5037
  //#region src/client/components/AnalysisBuilder/utils/idUtils.ts
4962
- function cr() {
5038
+ function pr() {
4963
5039
  return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
4964
5040
  }
4965
- function lr(e) {
5041
+ function mr(e) {
4966
5042
  let t = "", n = e;
4967
5043
  do
4968
5044
  t = String.fromCharCode(65 + n % 26) + t, n = Math.floor(n / 26) - 1;
@@ -4971,7 +5047,7 @@ function lr(e) {
4971
5047
  }
4972
5048
  //#endregion
4973
5049
  //#region src/client/components/AnalysisBuilder/utils/fieldUtils.ts
4974
- function ur(e, t) {
5050
+ function hr(e, t) {
4975
5051
  if (!t) return null;
4976
5052
  for (let n of t.cubes) {
4977
5053
  let t = n.measures.find((t) => t.name === e);
@@ -4989,11 +5065,11 @@ function ur(e, t) {
4989
5065
  }
4990
5066
  return null;
4991
5067
  }
4992
- function dr(e, t) {
4993
- let n = ur(e, t);
5068
+ function gr(e, t) {
5069
+ let n = hr(e, t);
4994
5070
  return n && (n.field.title || n.field.shortTitle) || e;
4995
5071
  }
4996
- function fr(e, t) {
5072
+ function _r(e, t) {
4997
5073
  if (!e) return [];
4998
5074
  let n = [];
4999
5075
  for (let r of e.cubes) if (t === "metrics") for (let e of r.measures) n.push({
@@ -5036,7 +5112,7 @@ function fr(e, t) {
5036
5112
  }
5037
5113
  return n;
5038
5114
  }
5039
- function pr(e, t, n) {
5115
+ function vr(e, t, n) {
5040
5116
  let r = e;
5041
5117
  if (n && n !== "all" && (r = r.filter((e) => e.cubeName === n)), t.trim()) {
5042
5118
  let e = t.toLowerCase();
@@ -5044,7 +5120,7 @@ function pr(e, t, n) {
5044
5120
  }
5045
5121
  return r;
5046
5122
  }
5047
- function mr(e) {
5123
+ function yr(e) {
5048
5124
  let t = /* @__PURE__ */ new Map();
5049
5125
  for (let n of e) {
5050
5126
  let e = t.get(n.cubeName) || [];
@@ -5052,13 +5128,13 @@ function mr(e) {
5052
5128
  }
5053
5129
  return t;
5054
5130
  }
5055
- function hr(e) {
5131
+ function br(e) {
5056
5132
  return e ? e.cubes.map((e) => e.name) : [];
5057
5133
  }
5058
- function gr(e, t) {
5134
+ function xr(e, t) {
5059
5135
  return t && t.cubes.find((t) => t.name === e)?.title || e;
5060
5136
  }
5061
- function _r(e, t) {
5137
+ function Sr(e, t) {
5062
5138
  let n = /* @__PURE__ */ new Set();
5063
5139
  if (!t) return n;
5064
5140
  n.add(e);
@@ -5067,9 +5143,9 @@ function _r(e, t) {
5067
5143
  for (let e of r.relationships) n.add(e.targetCube);
5068
5144
  return n;
5069
5145
  }
5070
- function vr(e, t) {
5146
+ function Cr(e, t) {
5071
5147
  if (!t) return null;
5072
- let n = _r(e, t);
5148
+ let n = Sr(e, t);
5073
5149
  return { cubes: t.cubes.filter((e) => n.has(e.name)).map((e) => ({
5074
5150
  ...e,
5075
5151
  description: e.description || ""
@@ -5077,10 +5153,10 @@ function vr(e, t) {
5077
5153
  }
5078
5154
  //#endregion
5079
5155
  //#region src/client/components/AnalysisBuilder/utils/recentFieldsUtils.ts
5080
- var yr = "drizzle-cube-recent-fields", br = 10;
5081
- function xr() {
5156
+ var wr = "drizzle-cube-recent-fields", Tr = 10;
5157
+ function Er() {
5082
5158
  try {
5083
- let e = localStorage.getItem(yr);
5159
+ let e = localStorage.getItem(wr);
5084
5160
  if (e) return JSON.parse(e);
5085
5161
  } catch {}
5086
5162
  return {
@@ -5088,15 +5164,15 @@ function xr() {
5088
5164
  breakdowns: []
5089
5165
  };
5090
5166
  }
5091
- function Sr(e, t) {
5167
+ function Dr(e, t) {
5092
5168
  try {
5093
- let n = xr(), r = n[t].filter((t) => t !== e);
5094
- r.unshift(e), n[t] = r.slice(0, br), localStorage.setItem(yr, JSON.stringify(n));
5169
+ let n = Er(), r = n[t].filter((t) => t !== e);
5170
+ r.unshift(e), n[t] = r.slice(0, Tr), localStorage.setItem(wr, JSON.stringify(n));
5095
5171
  } catch {}
5096
5172
  }
5097
- function Cr(e, t, n) {
5173
+ function Or(e, t, n) {
5098
5174
  if (!e || n.length === 0) return [];
5099
- let r = fr(e, t), i = [];
5175
+ let r = _r(e, t), i = [];
5100
5176
  for (let e of n) {
5101
5177
  let t = r.find((t) => t.name === e);
5102
5178
  t && i.push(t);
@@ -5105,8 +5181,8 @@ function Cr(e, t, n) {
5105
5181
  }
5106
5182
  //#endregion
5107
5183
  //#region src/client/components/AnalysisBuilder/FieldSearchItem.tsx
5108
- var wr = s("check");
5109
- function Tr({ field: e, isSelected: t, isFocused: n, onClick: r, onMouseEnter: i, ...a }) {
5184
+ var kr = s("check");
5185
+ function Ar({ field: e, isSelected: t, isFocused: n, onClick: r, onMouseEnter: i, ...a }) {
5110
5186
  let o = () => {
5111
5187
  if (e.fieldType === "measure") {
5112
5188
  let t = h(e.type);
@@ -5145,15 +5221,15 @@ function Tr({ field: e, isSelected: t, isFocused: n, onClick: r, onMouseEnter: i
5145
5221
  }),
5146
5222
  t && /* @__PURE__ */ Z("span", {
5147
5223
  className: "dc:shrink-0 dc:w-5 dc:h-5 dc:flex dc:items-center dc:justify-center dc:rounded-full bg-dc-success text-white",
5148
- children: /* @__PURE__ */ Z(wr, { className: "dc:w-3 dc:h-3" })
5224
+ children: /* @__PURE__ */ Z(kr, { className: "dc:w-3 dc:h-3" })
5149
5225
  })
5150
5226
  ]
5151
5227
  });
5152
5228
  }
5153
- var Er = pe(Tr);
5229
+ var jr = pe(Ar);
5154
5230
  //#endregion
5155
5231
  //#region src/client/components/AnalysisBuilder/FieldDetailPanel.tsx
5156
- function Dr({ field: e }) {
5232
+ function Mr({ field: e }) {
5157
5233
  let { t } = P();
5158
5234
  return e ? /* @__PURE__ */ Q("div", {
5159
5235
  className: "dc:p-4",
@@ -5258,17 +5334,17 @@ function Dr({ field: e }) {
5258
5334
  })
5259
5335
  });
5260
5336
  }
5261
- var Or = pe(Dr), kr = s("search"), Ar = s("close");
5262
- function jr({ isOpen: e, onClose: t, onSelect: n, mode: r, schema: i, selectedFields: a, recentFields: o }) {
5337
+ var Nr = pe(Mr), Pr = s("search"), Fr = s("close");
5338
+ function Ir({ isOpen: e, onClose: t, onSelect: n, mode: r, schema: i, selectedFields: a, recentFields: o }) {
5263
5339
  let { t: s } = P(), [c, l] = Y(""), [u, d] = Y(null), [f, p] = Y(null), [m, h] = Y(-1), [g, _] = Y(null), v = J(null), y = J(null), b = q(() => {
5264
5340
  if (o) return o;
5265
- let e = xr();
5341
+ let e = Er();
5266
5342
  return r === "metrics" ? e.metrics : e.breakdowns;
5267
- }, [o, r]), x = r, S = q(() => fr(i, x), [i, x]), C = q(() => hr(i), [i]), w = q(() => pr(S, c, u), [
5343
+ }, [o, r]), x = r, S = q(() => _r(i, x), [i, x]), C = q(() => br(i), [i]), w = q(() => vr(S, c, u), [
5268
5344
  S,
5269
5345
  c,
5270
5346
  u
5271
- ]), T = q(() => mr(w), [w]), E = q(() => c.trim() ? [] : Cr(i, x, b).filter((e) => !u || e.cubeName === u), [
5347
+ ]), T = q(() => yr(w), [w]), E = q(() => c.trim() ? [] : Or(i, x, b).filter((e) => !u || e.cubeName === u), [
5272
5348
  i,
5273
5349
  x,
5274
5350
  b,
@@ -5286,7 +5362,7 @@ function jr({ isOpen: e, onClose: t, onSelect: n, mode: r, schema: i, selectedFi
5286
5362
  e || (l(""), d(null), p(null), h(-1), _(null));
5287
5363
  }, [e]);
5288
5364
  let O = G((e, t = !1) => {
5289
- Sr(e.name, r === "metrics" ? "metrics" : "breakdowns"), n({
5365
+ Dr(e.name, r === "metrics" ? "metrics" : "breakdowns"), n({
5290
5366
  name: e.name,
5291
5367
  title: e.title,
5292
5368
  shortTitle: e.shortTitle,
@@ -5362,7 +5438,7 @@ function jr({ isOpen: e, onClose: t, onSelect: n, mode: r, schema: i, selectedFi
5362
5438
  children: [/* @__PURE__ */ Q("div", {
5363
5439
  className: "dc:flex dc:items-center dc:px-4 dc:py-3 dc:gap-3",
5364
5440
  children: [
5365
- /* @__PURE__ */ Z(kr, {
5441
+ /* @__PURE__ */ Z(Pr, {
5366
5442
  className: "dc:w-5 dc:h-5 text-dc-text-muted",
5367
5443
  "aria-hidden": !0
5368
5444
  }),
@@ -5386,7 +5462,7 @@ function jr({ isOpen: e, onClose: t, onSelect: n, mode: r, schema: i, selectedFi
5386
5462
  onClick: t,
5387
5463
  className: "dc:p-1 text-dc-text-secondary hover:text-dc-text dc:rounded",
5388
5464
  "aria-label": "Close dialog",
5389
- children: /* @__PURE__ */ Z(Ar, {
5465
+ children: /* @__PURE__ */ Z(Fr, {
5390
5466
  className: "dc:w-5 dc:h-5",
5391
5467
  "aria-hidden": !0
5392
5468
  })
@@ -5404,7 +5480,7 @@ function jr({ isOpen: e, onClose: t, onSelect: n, mode: r, schema: i, selectedFi
5404
5480
  children: s("fieldSearch.filter.allCubes")
5405
5481
  }), C.map((e) => /* @__PURE__ */ Z("option", {
5406
5482
  value: e,
5407
- children: gr(e, i)
5483
+ children: xr(e, i)
5408
5484
  }, e))]
5409
5485
  })
5410
5486
  })]
@@ -5427,9 +5503,9 @@ function jr({ isOpen: e, onClose: t, onSelect: n, mode: r, schema: i, selectedFi
5427
5503
  }), C.map((e) => /* @__PURE__ */ Z("button", {
5428
5504
  onClick: () => d(e),
5429
5505
  className: `dc:w-full dc:text-left dc:px-3 dc:py-2 dc:rounded-md dc:text-sm dc:transition-colors dc:truncate ${u === e ? "bg-dc-primary/10 text-dc-primary dc:font-medium" : "text-dc-text hover:bg-dc-surface-hover"}`,
5430
- title: gr(e, i),
5506
+ title: xr(e, i),
5431
5507
  "aria-pressed": u === e,
5432
- children: gr(e, i)
5508
+ children: xr(e, i)
5433
5509
  }, e))]
5434
5510
  })
5435
5511
  }),
@@ -5455,7 +5531,7 @@ function jr({ isOpen: e, onClose: t, onSelect: n, mode: r, schema: i, selectedFi
5455
5531
  children: s("fieldSearch.section.recents")
5456
5532
  }), /* @__PURE__ */ Z("div", {
5457
5533
  className: "dc:space-y-1",
5458
- children: E.map((e, t) => /* @__PURE__ */ Z(Er, {
5534
+ children: E.map((e, t) => /* @__PURE__ */ Z(jr, {
5459
5535
  field: e,
5460
5536
  isSelected: a.includes(e.name),
5461
5537
  isFocused: m === t,
@@ -5467,12 +5543,12 @@ function jr({ isOpen: e, onClose: t, onSelect: n, mode: r, schema: i, selectedFi
5467
5543
  }, `recent-${e.name}`))
5468
5544
  })] }), Array.from(T.entries()).map(([e, t]) => /* @__PURE__ */ Q("div", { children: [/* @__PURE__ */ Z("h3", {
5469
5545
  className: "dc:text-xs dc:font-semibold text-dc-text-muted dc:uppercase dc:tracking-wider dc:mb-2",
5470
- children: gr(e, i)
5546
+ children: xr(e, i)
5471
5547
  }), /* @__PURE__ */ Z("div", {
5472
5548
  className: "dc:space-y-1",
5473
5549
  children: t.map((n) => {
5474
5550
  let r = E.length + Array.from(T.entries()).slice(0, Array.from(T.keys()).indexOf(e)).reduce((e, [, t]) => e + t.length, 0) + t.indexOf(n);
5475
- return /* @__PURE__ */ Z(Er, {
5551
+ return /* @__PURE__ */ Z(jr, {
5476
5552
  field: n,
5477
5553
  isSelected: a.includes(n.name),
5478
5554
  isFocused: m === r,
@@ -5488,7 +5564,7 @@ function jr({ isOpen: e, onClose: t, onSelect: n, mode: r, schema: i, selectedFi
5488
5564
  }),
5489
5565
  /* @__PURE__ */ Z("div", {
5490
5566
  className: "dc:hidden dc:md:block dc:w-72 dc:shrink-0 dc:border-l border-dc-border bg-dc-surface-secondary dc:overflow-y-auto",
5491
- children: /* @__PURE__ */ Z(Or, { field: f })
5567
+ children: /* @__PURE__ */ Z(Nr, { field: f })
5492
5568
  })
5493
5569
  ]
5494
5570
  }),
@@ -5546,13 +5622,13 @@ function jr({ isOpen: e, onClose: t, onSelect: n, mode: r, schema: i, selectedFi
5546
5622
  }
5547
5623
  //#endregion
5548
5624
  //#region src/client/components/DashboardFilters/DashboardFilterConfigModal.tsx
5549
- var Mr = s("close"), Nr = s("chevronDown"), Pr = s("dimension"), Fr = s("timeDimension"), Ir = s("measure"), Lr = s("edit"), Rr = s("eye"), zr = s("eyeOff");
5550
- function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i, onDelete: a, onClose: o }) {
5625
+ var Lr = s("close"), Rr = s("chevronDown"), zr = s("dimension"), Br = s("timeDimension"), Vr = s("measure"), Hr = s("edit"), Ur = s("eye"), Wr = s("eyeOff");
5626
+ function Gr({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i, onDelete: a, onClose: o }) {
5551
5627
  let { t: s } = P(), [c, l] = Y(e.label), [u, d] = Y(e.filter), [f, p] = Y(!1), [m, h] = Y(!1), [g, _] = Y(!1), [v, x] = Y(!1), [C, T] = Y(!1), [E, D] = Y("this_month"), [ee, A] = Y(1), [j, ne] = Y(""), re = J(null), ie = f ? t : n;
5552
5628
  K(() => {
5553
5629
  r && (l(e.label), d(e.filter));
5554
5630
  }, [e, r]);
5555
- let ae = te(j, 300), oe = ur(u.member, ie), M = oe?.field.type || "string", N = M === "time", se = oe?.fieldType === "measure", ce = oe?.fieldType === "dimension", le = dr(u.member, ie), F = y[u.operator], I = b(M), L = N && u.operator === "inDateRange", R = [
5631
+ let ae = te(j, 300), oe = hr(u.member, ie), M = oe?.field.type || "string", N = M === "time", se = oe?.fieldType === "measure", ce = oe?.fieldType === "dimension", F = gr(u.member, ie), le = y[u.operator], I = b(M), L = N && u.operator === "inDateRange", R = [
5556
5632
  "equals",
5557
5633
  "notEquals",
5558
5634
  "in",
@@ -5609,24 +5685,24 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
5609
5685
  operator: e,
5610
5686
  values: []
5611
5687
  }), _(!1);
5612
- }, [u.member]), U = G((e) => {
5688
+ }, [u.member]), fe = G((e) => {
5613
5689
  let t = u.values || [];
5614
- F?.supportsMultipleValues ? t.includes(e) || d({
5690
+ le?.supportsMultipleValues ? t.includes(e) || d({
5615
5691
  ...u,
5616
5692
  values: [...t, e]
5617
5693
  }) : (d({
5618
5694
  ...u,
5619
5695
  values: [e]
5620
5696
  }), x(!1)), ne("");
5621
- }, [u, F?.supportsMultipleValues]), W = G((e) => {
5697
+ }, [u, le?.supportsMultipleValues]), U = G((e) => {
5622
5698
  let t = (u.values || []).filter((t) => t !== e);
5623
5699
  d({
5624
5700
  ...u,
5625
5701
  values: t
5626
5702
  });
5627
- }, [u]), fe = G((e) => {
5703
+ }, [u]), W = G((e) => {
5628
5704
  let t = e.target.value;
5629
- if (F?.valueType === "number") {
5705
+ if (le?.valueType === "number") {
5630
5706
  let e = parseFloat(t);
5631
5707
  isNaN(e) ? (t === "" || t === "-") && d({
5632
5708
  ...u,
@@ -5639,7 +5715,7 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
5639
5715
  ...u,
5640
5716
  values: t ? [t] : []
5641
5717
  });
5642
- }, [u, F?.valueType]), pe = G((e) => {
5718
+ }, [u, le?.valueType]), pe = G((e) => {
5643
5719
  let t = parseFloat(e.target.value), n = [isNaN(t) ? "" : t, (u.values?.length >= 2 ? u.values : ["", ""])[1]].filter((e) => e !== "");
5644
5720
  d({
5645
5721
  ...u,
@@ -5710,7 +5786,7 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
5710
5786
  u,
5711
5787
  i,
5712
5788
  s
5713
- ]), be = s(I.find((e) => e.operator === u.operator)?.label || u.operator), xe = s(O.find((e) => e.value === E)?.label || "filter.modal.selectRange"), Se = N ? Fr : se ? Ir : Pr, Ce = N ? "bg-dc-time-dimension" : se ? "bg-dc-measure" : "bg-dc-dimension", $ = N ? "text-dc-time-dimension-text" : se ? "text-dc-measure-text" : "text-dc-dimension-text";
5789
+ ]), be = s(I.find((e) => e.operator === u.operator)?.label || u.operator), xe = s(O.find((e) => e.value === E)?.label || "filter.modal.selectRange"), Se = N ? Br : se ? Vr : zr, Ce = N ? "bg-dc-time-dimension" : se ? "bg-dc-measure" : "bg-dc-dimension", $ = N ? "text-dc-time-dimension-text" : se ? "text-dc-measure-text" : "text-dc-dimension-text";
5714
5790
  return r ? /* @__PURE__ */ Q(X, { children: [/* @__PURE__ */ Z("div", {
5715
5791
  className: "dc:fixed dc:inset-0 dc:z-50 dc:flex dc:items-center dc:justify-center dc:p-4",
5716
5792
  style: { backgroundColor: "var(--dc-overlay)" },
@@ -5729,7 +5805,7 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
5729
5805
  }), /* @__PURE__ */ Z("button", {
5730
5806
  onClick: o,
5731
5807
  className: "dc:p-1 text-dc-text-muted hover:text-dc-text dc:transition-colors",
5732
- children: /* @__PURE__ */ Z(Mr, { className: "dc:w-5 dc:h-5" })
5808
+ children: /* @__PURE__ */ Z(Lr, { className: "dc:w-5 dc:h-5" })
5733
5809
  })]
5734
5810
  }),
5735
5811
  /* @__PURE__ */ Q("div", {
@@ -5764,7 +5840,7 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
5764
5840
  onClick: () => p(!f),
5765
5841
  className: "dc:flex dc:items-center dc:gap-1 dc:text-xs dc:px-2 dc:py-1 dc:rounded hover:bg-dc-surface-hover text-dc-text-muted",
5766
5842
  title: f ? "Show dashboard fields only" : "Show all fields",
5767
- children: f ? /* @__PURE__ */ Q(X, { children: [/* @__PURE__ */ Z(zr, { className: "dc:w-3.5 dc:h-3.5" }), /* @__PURE__ */ Z("span", { children: s("dashboardFilter.dashboard") })] }) : /* @__PURE__ */ Q(X, { children: [/* @__PURE__ */ Z(Rr, { className: "dc:w-3.5 dc:h-3.5" }), /* @__PURE__ */ Z("span", { children: s("dashboardFilter.all") })] })
5843
+ children: f ? /* @__PURE__ */ Q(X, { children: [/* @__PURE__ */ Z(Wr, { className: "dc:w-3.5 dc:h-3.5" }), /* @__PURE__ */ Z("span", { children: s("dashboardFilter.dashboard") })] }) : /* @__PURE__ */ Q(X, { children: [/* @__PURE__ */ Z(Ur, { className: "dc:w-3.5 dc:h-3.5" }), /* @__PURE__ */ Z("span", { children: s("dashboardFilter.all") })] })
5768
5844
  })]
5769
5845
  }), /* @__PURE__ */ Q("button", {
5770
5846
  onClick: () => h(!0),
@@ -5774,14 +5850,14 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
5774
5850
  children: Se && /* @__PURE__ */ Z(Se, { className: "dc:w-4 dc:h-4" })
5775
5851
  }), /* @__PURE__ */ Z("span", {
5776
5852
  className: "dc:flex-1 dc:text-sm dc:font-medium text-dc-text dc:text-left",
5777
- children: le
5853
+ children: F
5778
5854
  })] }) : /* @__PURE__ */ Q(X, { children: [/* @__PURE__ */ Z("span", {
5779
5855
  className: "dc:w-6 dc:h-6 dc:flex dc:items-center dc:justify-center dc:rounded bg-dc-surface-tertiary text-dc-text-muted",
5780
- children: /* @__PURE__ */ Z(Pr, { className: "dc:w-4 dc:h-4" })
5856
+ children: /* @__PURE__ */ Z(zr, { className: "dc:w-4 dc:h-4" })
5781
5857
  }), /* @__PURE__ */ Z("span", {
5782
5858
  className: "dc:flex-1 dc:text-sm text-dc-text-muted dc:text-left",
5783
5859
  children: s("dashboardFilter.clickToSelectField")
5784
- })] }), /* @__PURE__ */ Z(Lr, { className: "dc:w-4 dc:h-4 text-dc-text-muted" })]
5860
+ })] }), /* @__PURE__ */ Z(Hr, { className: "dc:w-4 dc:h-4 text-dc-text-muted" })]
5785
5861
  })] }),
5786
5862
  (u.member || e.isUniversalTime) && !e.isUniversalTime && /* @__PURE__ */ Q("div", { children: [/* @__PURE__ */ Z("label", {
5787
5863
  className: "dc:block dc:text-sm dc:font-medium text-dc-text-secondary dc:mb-2",
@@ -5796,7 +5872,7 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
5796
5872
  children: [/* @__PURE__ */ Z("span", {
5797
5873
  className: "dc:truncate",
5798
5874
  children: be
5799
- }), /* @__PURE__ */ Z(Nr, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${g ? "dc:rotate-180" : ""}` })]
5875
+ }), /* @__PURE__ */ Z(Rr, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${g ? "dc:rotate-180" : ""}` })]
5800
5876
  }), g && /* @__PURE__ */ Z("div", {
5801
5877
  className: "dc:absolute dc:z-[60] dc:left-0 dc:right-0 dc:mt-1 bg-dc-surface dc:border border-dc-border dc:rounded dc:shadow-lg dc:max-h-48 dc:overflow-y-auto",
5802
5878
  children: I.map((e) => /* @__PURE__ */ Z("button", {
@@ -5809,7 +5885,7 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
5809
5885
  u.member && !e.isUniversalTime && /* @__PURE__ */ Q("div", { children: [/* @__PURE__ */ Z("label", {
5810
5886
  className: "dc:block dc:text-sm dc:font-medium text-dc-text-secondary dc:mb-2",
5811
5887
  children: s("dashboardFilter.defaultValue")
5812
- }), F?.requiresValues ? L ? /* @__PURE__ */ Q("div", {
5888
+ }), le?.requiresValues ? L ? /* @__PURE__ */ Q("div", {
5813
5889
  className: "dc:space-y-2",
5814
5890
  children: [
5815
5891
  /* @__PURE__ */ Q("div", {
@@ -5822,7 +5898,7 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
5822
5898
  children: [/* @__PURE__ */ Z("span", {
5823
5899
  className: "dc:truncate",
5824
5900
  children: xe
5825
- }), /* @__PURE__ */ Z(Nr, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${C ? "dc:rotate-180" : ""}` })]
5901
+ }), /* @__PURE__ */ Z(Rr, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${C ? "dc:rotate-180" : ""}` })]
5826
5902
  }), C && /* @__PURE__ */ Z("div", {
5827
5903
  className: "dc:absolute dc:z-[60] dc:left-0 dc:right-0 dc:mt-1 bg-dc-surface dc:border border-dc-border dc:rounded dc:shadow-lg dc:max-h-48 dc:overflow-y-auto",
5828
5904
  children: O.map((e) => /* @__PURE__ */ Z("button", {
@@ -5890,15 +5966,15 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
5890
5966
  className: "dc:flex-1 dc:text-sm dc:border border-dc-border dc:rounded dc:px-3 dc:py-2 bg-dc-surface text-dc-text"
5891
5967
  })
5892
5968
  ]
5893
- }) : F?.valueType === "date" ? /* @__PURE__ */ Z("input", {
5969
+ }) : le?.valueType === "date" ? /* @__PURE__ */ Z("input", {
5894
5970
  type: "date",
5895
5971
  value: u.values?.[0] || "",
5896
5972
  onChange: he,
5897
5973
  className: "dc:w-full dc:text-sm dc:border border-dc-border dc:rounded dc:px-3 dc:py-2 bg-dc-surface text-dc-text"
5898
- }) : F?.valueType === "number" ? /* @__PURE__ */ Z("input", {
5974
+ }) : le?.valueType === "number" ? /* @__PURE__ */ Z("input", {
5899
5975
  type: "number",
5900
5976
  value: u.values?.[0] ?? "",
5901
- onChange: fe,
5977
+ onChange: W,
5902
5978
  placeholder: "Enter number",
5903
5979
  className: "dc:w-full dc:text-sm dc:border border-dc-border dc:rounded dc:px-3 dc:py-2 bg-dc-surface text-dc-text"
5904
5980
  }) : R ? /* @__PURE__ */ Q("div", {
@@ -5911,9 +5987,9 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
5911
5987
  className: "dc:max-w-[150px] dc:truncate",
5912
5988
  children: String(e)
5913
5989
  }), /* @__PURE__ */ Z("button", {
5914
- onClick: () => W(e),
5990
+ onClick: () => U(e),
5915
5991
  className: "hover:text-dc-danger",
5916
- children: /* @__PURE__ */ Z(Mr, { className: "dc:w-3.5 dc:h-3.5" })
5992
+ children: /* @__PURE__ */ Z(Lr, { className: "dc:w-3.5 dc:h-3.5" })
5917
5993
  })]
5918
5994
  }, t))
5919
5995
  }), /* @__PURE__ */ Q("div", {
@@ -5926,7 +6002,7 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
5926
6002
  children: [/* @__PURE__ */ Z("span", {
5927
6003
  className: "text-dc-text-muted dc:truncate",
5928
6004
  children: ue ? "Loading..." : "Select value..."
5929
- }), /* @__PURE__ */ Z(Nr, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${v ? "dc:rotate-180" : ""}` })]
6005
+ }), /* @__PURE__ */ Z(Rr, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${v ? "dc:rotate-180" : ""}` })]
5930
6006
  }), v && /* @__PURE__ */ Q("div", {
5931
6007
  className: "dc:absolute dc:z-[60] dc:left-0 dc:right-0 dc:mt-1 bg-dc-surface dc:border border-dc-border dc:rounded dc:shadow-lg dc:max-h-56 dc:overflow-hidden",
5932
6008
  children: [/* @__PURE__ */ Z("div", {
@@ -5953,7 +6029,7 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
5953
6029
  }) : z.map((e, t) => {
5954
6030
  let n = u.values?.includes(e);
5955
6031
  return /* @__PURE__ */ Q("button", {
5956
- onClick: () => U(e),
6032
+ onClick: () => fe(e),
5957
6033
  className: `dc:w-full dc:text-left dc:px-3 dc:py-2 dc:text-sm hover:bg-dc-surface-hover ${n ? "bg-dc-primary/10 text-dc-primary" : "text-dc-text"}`,
5958
6034
  children: [String(e), n && /* @__PURE__ */ Z("span", {
5959
6035
  className: "dc:float-right",
@@ -5967,7 +6043,7 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
5967
6043
  }) : /* @__PURE__ */ Z("input", {
5968
6044
  type: "text",
5969
6045
  value: u.values?.[0] ?? "",
5970
- onChange: fe,
6046
+ onChange: W,
5971
6047
  placeholder: "Enter value...",
5972
6048
  className: "dc:w-full dc:text-sm dc:border border-dc-border dc:rounded dc:px-3 dc:py-2 bg-dc-surface text-dc-text placeholder-dc-text-muted"
5973
6049
  }) : /* @__PURE__ */ Z("div", {
@@ -5997,7 +6073,7 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
5997
6073
  })
5998
6074
  ]
5999
6075
  })
6000
- }), m && /* @__PURE__ */ Z(jr, {
6076
+ }), m && /* @__PURE__ */ Z(Ir, {
6001
6077
  isOpen: m,
6002
6078
  onClose: () => h(!1),
6003
6079
  onSelect: de,
@@ -6008,8 +6084,8 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
6008
6084
  }
6009
6085
  //#endregion
6010
6086
  //#region src/client/components/DashboardFilters/FilterEditModal.tsx
6011
- var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onClose: a, onDelete: o, convertToMetaResponse: s }) => {
6012
- let c = q(() => s(t), [t, s]), l = q(() => Dt(n), [n]), u = q(() => {
6087
+ var Kr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onClose: a, onDelete: o, convertToMetaResponse: s }) => {
6088
+ let c = q(() => s(t), [t, s]), l = q(() => kt(n), [n]), u = q(() => {
6013
6089
  if (!t) return null;
6014
6090
  let e = t.cubes.map((e) => {
6015
6091
  let t = e.name, n = e.measures.filter((e) => {
@@ -6040,7 +6116,7 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
6040
6116
  console.error("Failed to save filter:", e), alert("Failed to save filter. Please try again.");
6041
6117
  }
6042
6118
  }, [i, a]);
6043
- return r ? /* @__PURE__ */ Z(Br, {
6119
+ return r ? /* @__PURE__ */ Z(Gr, {
6044
6120
  filter: e,
6045
6121
  fullSchema: c,
6046
6122
  filteredSchema: u,
@@ -6049,7 +6125,7 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
6049
6125
  onDelete: o,
6050
6126
  onClose: a
6051
6127
  }) : null;
6052
- }, Hr = s("filter"), Ur = s("add"), Wr = s("close"), Gr = s("edit"), Kr = s("chevronDown"), qr = s("timeDimension"), Jr = ({ dashboardFilters: e, onAddFilter: t, onAddTimeFilter: n, onEditFilter: r, onRemoveFilter: i, selectedFilterId: a, onFilterSelect: o }) => {
6128
+ }, qr = s("filter"), Jr = s("add"), Yr = s("close"), Xr = s("edit"), Zr = s("chevronDown"), Qr = s("timeDimension"), $r = ({ dashboardFilters: e, onAddFilter: t, onAddTimeFilter: n, onEditFilter: r, onRemoveFilter: i, selectedFilterId: a, onFilterSelect: o }) => {
6053
6129
  let { t: s } = P(), [c, l] = V.useState(!1), u = (e) => {
6054
6130
  let { id: t, label: n, isUniversalTime: s } = e, c = a === t;
6055
6131
  return /* @__PURE__ */ Q("div", {
@@ -6065,7 +6141,7 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
6065
6141
  o && o(t);
6066
6142
  },
6067
6143
  children: [
6068
- /* @__PURE__ */ Z(s ? qr : Hr, {
6144
+ /* @__PURE__ */ Z(s ? Qr : qr, {
6069
6145
  className: "dc:w-3.5 dc:h-3.5 dc:shrink-0",
6070
6146
  style: { color: c ? "white" : "var(--dc-primary)" }
6071
6147
  }),
@@ -6080,12 +6156,12 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
6080
6156
  onClick: () => r(t),
6081
6157
  className: "dc:p-0.5 hover:bg-dc-hover dc:rounded dc:transition-colors",
6082
6158
  title: "Edit filter",
6083
- children: /* @__PURE__ */ Z(Gr, { className: "dc:w-3 dc:h-3" })
6159
+ children: /* @__PURE__ */ Z(Xr, { className: "dc:w-3 dc:h-3" })
6084
6160
  }), /* @__PURE__ */ Z("button", {
6085
6161
  onClick: () => i(t),
6086
6162
  className: "dc:p-0.5 hover:bg-dc-danger-bg hover:text-dc-danger dc:rounded dc:transition-colors",
6087
6163
  title: "Remove filter",
6088
- children: /* @__PURE__ */ Z(Wr, { className: "dc:w-3 dc:h-3" })
6164
+ children: /* @__PURE__ */ Z(Yr, { className: "dc:w-3 dc:h-3" })
6089
6165
  })]
6090
6166
  })
6091
6167
  ]
@@ -6100,7 +6176,7 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
6100
6176
  children: [/* @__PURE__ */ Q("div", {
6101
6177
  className: "dc:flex dc:items-center dc:gap-2",
6102
6178
  children: [
6103
- /* @__PURE__ */ Z(Hr, {
6179
+ /* @__PURE__ */ Z(qr, {
6104
6180
  className: "dc:w-4 dc:h-4 dc:shrink-0",
6105
6181
  style: { color: "var(--dc-primary)" }
6106
6182
  }),
@@ -6117,7 +6193,7 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
6117
6193
  },
6118
6194
  children: e.length
6119
6195
  }),
6120
- /* @__PURE__ */ Z(Kr, {
6196
+ /* @__PURE__ */ Z(Zr, {
6121
6197
  className: `dc:w-4 dc:h-4 dc:transition-transform ${c ? "" : "dc:rotate-180"}`,
6122
6198
  style: { color: "var(--dc-text-secondary)" }
6123
6199
  })
@@ -6135,7 +6211,7 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
6135
6211
  border: "1px solid var(--dc-border)"
6136
6212
  },
6137
6213
  title: "Add date range filter (applies to all time dimensions)",
6138
- children: [/* @__PURE__ */ Z(Ur, { className: "dc:w-3.5 dc:h-3.5" }), /* @__PURE__ */ Z(qr, { className: "dc:w-3.5 dc:h-3.5" })]
6214
+ children: [/* @__PURE__ */ Z(Jr, { className: "dc:w-3.5 dc:h-3.5" }), /* @__PURE__ */ Z(Qr, { className: "dc:w-3.5 dc:h-3.5" })]
6139
6215
  }), /* @__PURE__ */ Z("button", {
6140
6216
  onClick: (e) => {
6141
6217
  e.stopPropagation(), t();
@@ -6145,7 +6221,7 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
6145
6221
  backgroundColor: "var(--dc-primary)",
6146
6222
  color: "white"
6147
6223
  },
6148
- children: /* @__PURE__ */ Z(Ur, { className: "dc:w-3.5 dc:h-3.5" })
6224
+ children: /* @__PURE__ */ Z(Jr, { className: "dc:w-3.5 dc:h-3.5" })
6149
6225
  })]
6150
6226
  })]
6151
6227
  }),
@@ -6171,7 +6247,7 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
6171
6247
  /* @__PURE__ */ Q("div", {
6172
6248
  className: "dc:flex dc:items-center dc:gap-2 dc:shrink-0",
6173
6249
  children: [
6174
- /* @__PURE__ */ Z(Hr, {
6250
+ /* @__PURE__ */ Z(qr, {
6175
6251
  className: "dc:w-4 dc:h-4 dc:shrink-0",
6176
6252
  style: { color: "var(--dc-primary)" }
6177
6253
  }),
@@ -6215,7 +6291,7 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
6215
6291
  border: "1px solid var(--dc-border)"
6216
6292
  },
6217
6293
  title: "Add date range filter (applies to all time dimensions)",
6218
- children: [/* @__PURE__ */ Z(Ur, { className: "dc:w-3.5 dc:h-3.5" }), /* @__PURE__ */ Z("span", { children: s("dashboardFilter.editMode.dateRange") })]
6294
+ children: [/* @__PURE__ */ Z(Jr, { className: "dc:w-3.5 dc:h-3.5" }), /* @__PURE__ */ Z("span", { children: s("dashboardFilter.editMode.dateRange") })]
6219
6295
  }), /* @__PURE__ */ Q("button", {
6220
6296
  onClick: t,
6221
6297
  className: "dc:inline-flex dc:items-center dc:gap-1 dc:px-2 dc:py-1 dc:rounded-md dc:text-xs dc:font-medium dc:transition-colors dc:hover:opacity-80",
@@ -6223,12 +6299,12 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
6223
6299
  backgroundColor: "var(--dc-primary)",
6224
6300
  color: "white"
6225
6301
  },
6226
- children: [/* @__PURE__ */ Z(Ur, { className: "dc:w-3.5 dc:h-3.5" }), /* @__PURE__ */ Z("span", { children: s("dashboardFilter.editMode.filter") })]
6302
+ children: [/* @__PURE__ */ Z(Jr, { className: "dc:w-3.5 dc:h-3.5" }), /* @__PURE__ */ Z("span", { children: s("dashboardFilter.editMode.filter") })]
6227
6303
  })]
6228
6304
  })
6229
6305
  ]
6230
6306
  })] });
6231
- }, Yr = [
6307
+ }, ei = [
6232
6308
  {
6233
6309
  id: "today",
6234
6310
  label: "Today",
@@ -6264,7 +6340,7 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
6264
6340
  label: "12M",
6265
6341
  value: "last 12 months"
6266
6342
  }
6267
- ], Xr = [
6343
+ ], ti = [
6268
6344
  {
6269
6345
  id: "wtd",
6270
6346
  label: "Week to Date",
@@ -6286,7 +6362,7 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
6286
6362
  value: "this year"
6287
6363
  }
6288
6364
  ];
6289
- function Zr(e) {
6365
+ function ni(e) {
6290
6366
  let t = /* @__PURE__ */ new Date();
6291
6367
  t.setHours(0, 0, 0, 0);
6292
6368
  let n = new Date(t);
@@ -6370,7 +6446,7 @@ function Zr(e) {
6370
6446
  }
6371
6447
  }
6372
6448
  }
6373
- function Qr(e, t) {
6449
+ function ri(e, t) {
6374
6450
  let n = {
6375
6451
  month: "short",
6376
6452
  day: "numeric",
@@ -6381,15 +6457,15 @@ function Qr(e, t) {
6381
6457
  day: "numeric"
6382
6458
  })} - ${i}` : `${r} - ${i}`;
6383
6459
  }
6384
- function $r(e) {
6460
+ function ii(e) {
6385
6461
  if (!e) return null;
6386
6462
  if (Array.isArray(e)) return "custom";
6387
6463
  let t = e.toLowerCase().trim();
6388
- for (let e of Yr) if (e.value.toLowerCase() === t) return e.id;
6389
- for (let e of Xr) if (e.value.toLowerCase() === t) return e.id;
6464
+ for (let e of ei) if (e.value.toLowerCase() === t) return e.id;
6465
+ for (let e of ti) if (e.value.toLowerCase() === t) return e.id;
6390
6466
  return t.match(/^last\s+(\d+)\s+(day|days|week|weeks|month|months|quarter|quarters|year|years)$/i), "custom";
6391
6467
  }
6392
- function ei(e, t) {
6468
+ function ai(e, t) {
6393
6469
  if (!e || e.length === 0) return t === "set" ? "is set" : t === "notSet" ? "is not set" : t === "isEmpty" ? "is empty" : t === "isNotEmpty" ? "is not empty" : "";
6394
6470
  let n = e.map((e) => e === !0 ? "true" : e === !1 ? "false" : e == null ? "null" : String(e));
6395
6471
  switch (t) {
@@ -6413,18 +6489,18 @@ function ei(e, t) {
6413
6489
  }
6414
6490
  //#endregion
6415
6491
  //#region src/client/components/DashboardFilters/DatePresetChips.tsx
6416
- var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
6492
+ var oi = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
6417
6493
  let r = q(() => {
6418
6494
  let e = {};
6419
- for (let t of Yr) {
6420
- let n = Zr(t.value);
6421
- n && (e[t.id] = Qr(n.start, n.end));
6495
+ for (let t of ei) {
6496
+ let n = ni(t.value);
6497
+ n && (e[t.id] = ri(n.start, n.end));
6422
6498
  }
6423
6499
  return e;
6424
6500
  }, []);
6425
6501
  return /* @__PURE__ */ Z("div", {
6426
6502
  className: "dc:flex dc:items-center dc:gap-1",
6427
- children: Yr.map((i) => {
6503
+ children: ei.map((i) => {
6428
6504
  let a = e === i.id, o = r[i.id];
6429
6505
  return /* @__PURE__ */ Z("button", {
6430
6506
  type: "button",
@@ -6453,7 +6529,7 @@ var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
6453
6529
  }, i.id);
6454
6530
  })
6455
6531
  });
6456
- }, ni = [
6532
+ }, si = [
6457
6533
  {
6458
6534
  value: "days",
6459
6535
  label: "Days"
@@ -6474,7 +6550,7 @@ var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
6474
6550
  value: "years",
6475
6551
  label: "Years"
6476
6552
  }
6477
- ], ri = ({ isOpen: e, onClose: t, onDateRangeChange: n, currentDateRange: r }) => {
6553
+ ], ci = ({ isOpen: e, onClose: t, onDateRangeChange: n, currentDateRange: r }) => {
6478
6554
  let { t: i } = P(), a = J(null), [o, s] = Y("fixed"), [c, l] = Y(""), [u, d] = Y(""), [f, p] = Y(""), [m, h] = Y(7), [g, _] = Y("days");
6479
6555
  K(() => {
6480
6556
  if (r) if (Array.isArray(r)) s("fixed"), l(r[0] || ""), d(r[1] || r[0] || "");
@@ -6672,7 +6748,7 @@ var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
6672
6748
  backgroundColor: "var(--dc-bg)",
6673
6749
  color: "var(--dc-text)"
6674
6750
  },
6675
- children: ni.map((e) => /* @__PURE__ */ Z("option", {
6751
+ children: si.map((e) => /* @__PURE__ */ Z("option", {
6676
6752
  value: e.value,
6677
6753
  children: e.label
6678
6754
  }, e.value))
@@ -6718,7 +6794,7 @@ var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
6718
6794
  })
6719
6795
  ]
6720
6796
  });
6721
- }, ii = s("check"), ai = ({ isOpen: e, onClose: t, onSelect: n, currentXTD: r }) => {
6797
+ }, li = s("check"), ui = ({ isOpen: e, onClose: t, onSelect: n, currentXTD: r }) => {
6722
6798
  let i = J(null);
6723
6799
  if (K(() => {
6724
6800
  if (!e) return;
@@ -6746,8 +6822,8 @@ var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
6746
6822
  },
6747
6823
  onClick: a,
6748
6824
  onMouseDown: a,
6749
- children: Xr.map((e) => {
6750
- let t = r === e.id, i = Zr(e.value), a = i ? Qr(i.start, i.end) : "";
6825
+ children: ti.map((e) => {
6826
+ let t = r === e.id, i = ni(e.value), a = i ? ri(i.start, i.end) : "";
6751
6827
  return /* @__PURE__ */ Q("button", {
6752
6828
  type: "button",
6753
6829
  onClick: () => n(e.value),
@@ -6772,14 +6848,14 @@ var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
6772
6848
  style: { color: "var(--dc-text-secondary)" },
6773
6849
  children: a
6774
6850
  })]
6775
- }), t && /* @__PURE__ */ Z(ii, {
6851
+ }), t && /* @__PURE__ */ Z(li, {
6776
6852
  className: "dc:w-4 dc:h-4 dc:shrink-0",
6777
6853
  style: { color: "var(--dc-primary)" }
6778
6854
  })]
6779
6855
  }, e.id);
6780
6856
  })
6781
6857
  });
6782
- }, oi = s("chevronDown"), si = s("close"), ci = ({ fieldName: e, operator: t, values: n, onValuesChange: r, schema: i }) => {
6858
+ }, di = s("chevronDown"), fi = s("close"), pi = ({ fieldName: e, operator: t, values: n, onValuesChange: r, schema: i }) => {
6783
6859
  let { t: a } = P(), o = y[t], [s, c] = Y(!1), [l, u] = Y(""), [d, f] = Y(!1), p = J(null), m = J(""), h = te(l, 300), g = q(() => i ? i.cubes.some((t) => t.dimensions.some((t) => t.name === e)) : !1, [i, e]), _ = q(() => i ? i.cubes.some((t) => t.dimensions.some((t) => t.name === e && t.type === "time")) : !1, [i, e]), v = q(() => [
6784
6860
  "equals",
6785
6861
  "notEquals",
@@ -6916,7 +6992,7 @@ var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
6916
6992
  }), /* @__PURE__ */ Z("button", {
6917
6993
  onClick: () => O(e),
6918
6994
  className: "text-dc-accent hover:text-dc-accent focus:outline-hidden",
6919
- children: /* @__PURE__ */ Z(si, { className: "dc:w-3 dc:h-3" })
6995
+ children: /* @__PURE__ */ Z(fi, { className: "dc:w-3 dc:h-3" })
6920
6996
  })]
6921
6997
  }, t))
6922
6998
  }), /* @__PURE__ */ Z("input", {
@@ -6946,7 +7022,7 @@ var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
6946
7022
  }), /* @__PURE__ */ Z("button", {
6947
7023
  onClick: () => O(e),
6948
7024
  className: "text-dc-accent hover:text-dc-accent focus:outline-hidden",
6949
- children: /* @__PURE__ */ Z(si, { className: "dc:w-3 dc:h-3" })
7025
+ children: /* @__PURE__ */ Z(fi, { className: "dc:w-3 dc:h-3" })
6950
7026
  })]
6951
7027
  }, t))
6952
7028
  }),
@@ -6960,7 +7036,7 @@ var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
6960
7036
  }), /* @__PURE__ */ Z("button", {
6961
7037
  onClick: () => r([]),
6962
7038
  className: "text-dc-accent hover:text-dc-accent focus:outline-hidden",
6963
- children: /* @__PURE__ */ Z(si, { className: "dc:w-3 dc:h-3" })
7039
+ children: /* @__PURE__ */ Z(fi, { className: "dc:w-3 dc:h-3" })
6964
7040
  })]
6965
7041
  })
6966
7042
  }),
@@ -6970,7 +7046,7 @@ var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
6970
7046
  children: [/* @__PURE__ */ Z("span", {
6971
7047
  className: "text-dc-text-muted dc:truncate",
6972
7048
  children: a(S && !d ? "filter.shared.valueSelector.loadingValues" : "filter.shared.valueSelector.selectValue")
6973
- }), /* @__PURE__ */ Z(oi, { className: "dc:w-4 dc:h-4 text-dc-text-muted" })]
7049
+ }), /* @__PURE__ */ Z(di, { className: "dc:w-4 dc:h-4 text-dc-text-muted" })]
6974
7050
  }),
6975
7051
  s && /* @__PURE__ */ Q("div", {
6976
7052
  className: "dc:absolute dc:z-30 dc:left-0 dc:right-0 dc:mt-1 bg-dc-surface dc:border border-dc-border dc:rounded-md dc:shadow-lg dc:max-h-60 dc:overflow-y-auto",
@@ -7022,7 +7098,7 @@ var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
7022
7098
  };
7023
7099
  //#endregion
7024
7100
  //#region src/client/components/DashboardFilters/FilterValuePopover.tsx
7025
- function li(e) {
7101
+ function mi(e) {
7026
7102
  return e ? { cubes: e.cubes.map((e) => ({
7027
7103
  name: e.name,
7028
7104
  title: e.title || e.name,
@@ -7050,7 +7126,7 @@ function li(e) {
7050
7126
  })) || []
7051
7127
  })) } : null;
7052
7128
  }
7053
- var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i }) => {
7129
+ var hi = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i }) => {
7054
7130
  let { t: a } = P(), o = J(null);
7055
7131
  K(() => {
7056
7132
  let e = (e) => {
@@ -7066,7 +7142,7 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7066
7142
  }, [r, i]);
7067
7143
  let s = G((e) => {
7068
7144
  n(e);
7069
- }, [n]), c = li(t);
7145
+ }, [n]), c = mi(t);
7070
7146
  return /* @__PURE__ */ Q("div", {
7071
7147
  ref: o,
7072
7148
  className: "dc:absolute dc:top-full dc:left-0 dc:mt-1 dc:z-50 dc:border dc:rounded-lg dc:shadow-lg dc:p-3 dc:min-w-[220px]",
@@ -7083,7 +7159,7 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7083
7159
  }),
7084
7160
  /* @__PURE__ */ Z("div", {
7085
7161
  className: "dc:min-w-[180px]",
7086
- children: /* @__PURE__ */ Z(ci, {
7162
+ children: /* @__PURE__ */ Z(pi, {
7087
7163
  fieldName: e.member,
7088
7164
  operator: e.operator,
7089
7165
  values: e.values || [],
@@ -7108,8 +7184,8 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7108
7184
  })
7109
7185
  ]
7110
7186
  });
7111
- }, di = s("close"), fi = s("edit"), pi = ({ filter: e, schema: t, isEditMode: n, onChange: r, onEdit: i, onRemove: a }) => {
7112
- let [o, s] = Y(!1), c = J(null), l = e.filter, { label: u } = e, { operator: d, values: f } = l, p = ei(f || [], d), m = G((t) => {
7187
+ }, gi = s("close"), _i = s("edit"), vi = ({ filter: e, schema: t, isEditMode: n, onChange: r, onEdit: i, onRemove: a }) => {
7188
+ let [o, s] = Y(!1), c = J(null), l = e.filter, { label: u } = e, { operator: d, values: f } = l, p = ai(f || [], d), m = G((t) => {
7113
7189
  r({
7114
7190
  ...e,
7115
7191
  filter: {
@@ -7168,7 +7244,7 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7168
7244
  onMouseLeave: (e) => {
7169
7245
  e.currentTarget.style.color = "var(--dc-text-secondary)";
7170
7246
  },
7171
- children: /* @__PURE__ */ Z(fi, { className: "dc:w-3 dc:h-3" })
7247
+ children: /* @__PURE__ */ Z(_i, { className: "dc:w-3 dc:h-3" })
7172
7248
  }), /* @__PURE__ */ Z("button", {
7173
7249
  type: "button",
7174
7250
  onClick: (e) => {
@@ -7182,10 +7258,10 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7182
7258
  onMouseLeave: (e) => {
7183
7259
  e.currentTarget.style.color = "var(--dc-text-secondary)";
7184
7260
  },
7185
- children: /* @__PURE__ */ Z(di, { className: "dc:w-3 dc:h-3" })
7261
+ children: /* @__PURE__ */ Z(gi, { className: "dc:w-3 dc:h-3" })
7186
7262
  })] })
7187
7263
  ]
7188
- }), o && !n && /* @__PURE__ */ Z(ui, {
7264
+ }), o && !n && /* @__PURE__ */ Z(hi, {
7189
7265
  filter: l,
7190
7266
  schema: t,
7191
7267
  onValuesChange: m,
@@ -7193,7 +7269,7 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7193
7269
  anchorRef: c
7194
7270
  })]
7195
7271
  }) : null;
7196
- }, mi = s("add"), hi = s("timeDimension"), gi = s("chevronDown"), _i = s("filter"), vi = ({ dashboardFilters: e, schema: t, isEditMode: n, onDashboardFiltersChange: r, onAddFilter: i, onEditFilter: a, onRemoveFilter: o }) => {
7272
+ }, yi = s("add"), bi = s("timeDimension"), xi = s("chevronDown"), Si = s("filter"), Ci = ({ dashboardFilters: e, schema: t, isEditMode: n, onDashboardFiltersChange: r, onAddFilter: i, onEditFilter: a, onRemoveFilter: o }) => {
7197
7273
  let { t: s } = P(), [c, l] = Y(e);
7198
7274
  K(() => {
7199
7275
  l(e);
@@ -7202,10 +7278,10 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7202
7278
  if (!g) return null;
7203
7279
  let e = g.filter;
7204
7280
  return e.dateRange ? e.dateRange : e.values && e.values.length > 0 ? e.values.length === 1 && typeof e.values[0] == "string" ? e.values[0] : e.values : null;
7205
- }, [g]), v = q(() => $r(_), [_]), y = q(() => {
7281
+ }, [g]), v = q(() => ii(_), [_]), y = q(() => {
7206
7282
  if (!_ || Array.isArray(_)) return null;
7207
- let e = $r(_);
7208
- return Xr.find((t) => t.id === e)?.id || null;
7283
+ let e = ii(_);
7284
+ return ti.find((t) => t.id === e)?.id || null;
7209
7285
  }, [_]), b = q(() => c.filter((e) => !e.isUniversalTime), [c]), x = G(() => `df_${Date.now()}_${Math.random().toString(36).substring(7)}`, []), S = G((e) => {
7210
7286
  if (g) {
7211
7287
  let t = c.map((t) => t.id === g.id ? {
@@ -7247,9 +7323,9 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7247
7323
  l(n), r(n);
7248
7324
  }, [c, r]), D = q(() => {
7249
7325
  if (!_) return null;
7250
- if (Array.isArray(_)) return Qr(new Date(_[0]), new Date(_[1] || _[0]));
7251
- let e = Zr(_);
7252
- return e ? Qr(e.start, e.end) : _;
7326
+ if (Array.isArray(_)) return ri(new Date(_[0]), new Date(_[1] || _[0]));
7327
+ let e = ni(_);
7328
+ return e ? ri(e.start, e.end) : _;
7253
7329
  }, [_]);
7254
7330
  return !n && c.length === 0 ? null : /* @__PURE__ */ Q("div", {
7255
7331
  className: "dc:border dc:rounded-lg",
@@ -7260,11 +7336,11 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7260
7336
  children: [/* @__PURE__ */ Q("div", {
7261
7337
  className: "dc:hidden dc:md:flex dc:items-center dc:gap-2 dc:px-3 dc:py-2",
7262
7338
  children: [
7263
- /* @__PURE__ */ Z(_i, {
7339
+ /* @__PURE__ */ Z(Si, {
7264
7340
  className: "dc:w-4 dc:h-4 dc:shrink-0",
7265
7341
  style: { color: "var(--dc-text-secondary)" }
7266
7342
  }),
7267
- /* @__PURE__ */ Z(ti, {
7343
+ /* @__PURE__ */ Z(oi, {
7268
7344
  activePreset: v !== "custom" && !y ? v : null,
7269
7345
  onPresetSelect: C
7270
7346
  }),
@@ -7284,11 +7360,11 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7284
7360
  borderColor: v === "custom" ? "transparent" : "var(--dc-border)"
7285
7361
  },
7286
7362
  children: [
7287
- /* @__PURE__ */ Z(hi, { className: "dc:w-3 dc:h-3" }),
7363
+ /* @__PURE__ */ Z(bi, { className: "dc:w-3 dc:h-3" }),
7288
7364
  /* @__PURE__ */ Z("span", { children: s("dateRange.custom") }),
7289
- /* @__PURE__ */ Z(gi, { className: "dc:w-3 dc:h-3" })
7365
+ /* @__PURE__ */ Z(xi, { className: "dc:w-3 dc:h-3" })
7290
7366
  ]
7291
- }), u && /* @__PURE__ */ Z(ri, {
7367
+ }), u && /* @__PURE__ */ Z(ci, {
7292
7368
  isOpen: u,
7293
7369
  onClose: () => d(!1),
7294
7370
  onDateRangeChange: T,
@@ -7311,8 +7387,8 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7311
7387
  color: y ? "white" : "var(--dc-text)",
7312
7388
  borderColor: y ? "transparent" : "var(--dc-border)"
7313
7389
  },
7314
- children: [/* @__PURE__ */ Z("span", { children: "XTD" }), /* @__PURE__ */ Z(gi, { className: "dc:w-3 dc:h-3" })]
7315
- }), f && /* @__PURE__ */ Z(ai, {
7390
+ children: [/* @__PURE__ */ Z("span", { children: "XTD" }), /* @__PURE__ */ Z(xi, { className: "dc:w-3 dc:h-3" })]
7391
+ }), f && /* @__PURE__ */ Z(ui, {
7316
7392
  isOpen: f,
7317
7393
  onClose: () => p(!1),
7318
7394
  onSelect: w,
@@ -7326,7 +7402,7 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7326
7402
  }),
7327
7403
  /* @__PURE__ */ Z("div", {
7328
7404
  className: "dc:flex dc:items-center dc:gap-1.5 dc:flex-wrap",
7329
- children: b.map((e) => /* @__PURE__ */ Z(pi, {
7405
+ children: b.map((e) => /* @__PURE__ */ Z(vi, {
7330
7406
  filter: e,
7331
7407
  schema: t,
7332
7408
  isEditMode: n,
@@ -7350,7 +7426,7 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7350
7426
  onMouseLeave: (e) => {
7351
7427
  e.currentTarget.style.backgroundColor = "transparent";
7352
7428
  },
7353
- children: /* @__PURE__ */ Z(mi, { className: "dc:w-3.5 dc:h-3.5" })
7429
+ children: /* @__PURE__ */ Z(yi, { className: "dc:w-3.5 dc:h-3.5" })
7354
7430
  })
7355
7431
  ]
7356
7432
  }), /* @__PURE__ */ Q("div", {
@@ -7358,10 +7434,10 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7358
7434
  children: [
7359
7435
  /* @__PURE__ */ Q("div", {
7360
7436
  className: "dc:flex dc:items-center dc:gap-2 dc:overflow-x-auto dc:px-3 dc:py-2 scrollbar-thin",
7361
- children: [/* @__PURE__ */ Z(_i, {
7437
+ children: [/* @__PURE__ */ Z(Si, {
7362
7438
  className: "dc:w-4 dc:h-4 dc:shrink-0",
7363
7439
  style: { color: "var(--dc-text-secondary)" }
7364
- }), /* @__PURE__ */ Z(ti, {
7440
+ }), /* @__PURE__ */ Z(oi, {
7365
7441
  activePreset: v !== "custom" && !y ? v : null,
7366
7442
  onPresetSelect: C
7367
7443
  })]
@@ -7385,8 +7461,8 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7385
7461
  color: v === "custom" ? "white" : "var(--dc-text)",
7386
7462
  borderColor: v === "custom" ? "transparent" : "var(--dc-border)"
7387
7463
  },
7388
- children: [/* @__PURE__ */ Z(hi, { className: "dc:w-3 dc:h-3" }), /* @__PURE__ */ Z("span", { children: s("dateRange.custom") })]
7389
- }), u && /* @__PURE__ */ Z(ri, {
7464
+ children: [/* @__PURE__ */ Z(bi, { className: "dc:w-3 dc:h-3" }), /* @__PURE__ */ Z("span", { children: s("dateRange.custom") })]
7465
+ }), u && /* @__PURE__ */ Z(ci, {
7390
7466
  isOpen: u,
7391
7467
  onClose: () => d(!1),
7392
7468
  onDateRangeChange: T,
@@ -7407,8 +7483,8 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7407
7483
  color: y ? "white" : "var(--dc-text)",
7408
7484
  borderColor: y ? "transparent" : "var(--dc-border)"
7409
7485
  },
7410
- children: [/* @__PURE__ */ Z("span", { children: "XTD" }), /* @__PURE__ */ Z(gi, { className: "dc:w-3 dc:h-3" })]
7411
- }), f && /* @__PURE__ */ Z(ai, {
7486
+ children: [/* @__PURE__ */ Z("span", { children: "XTD" }), /* @__PURE__ */ Z(xi, { className: "dc:w-3 dc:h-3" })]
7487
+ }), f && /* @__PURE__ */ Z(ui, {
7412
7488
  isOpen: f,
7413
7489
  onClose: () => p(!1),
7414
7490
  onSelect: w,
@@ -7425,7 +7501,7 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7425
7501
  color: "var(--dc-text-secondary)",
7426
7502
  backgroundColor: "transparent"
7427
7503
  },
7428
- children: /* @__PURE__ */ Z(mi, { className: "dc:w-3.5 dc:h-3.5" })
7504
+ children: /* @__PURE__ */ Z(yi, { className: "dc:w-3.5 dc:h-3.5" })
7429
7505
  })]
7430
7506
  }),
7431
7507
  b.length > 0 && /* @__PURE__ */ Z("div", {
@@ -7433,7 +7509,7 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7433
7509
  style: { borderColor: "var(--dc-border)" },
7434
7510
  children: /* @__PURE__ */ Z("div", {
7435
7511
  className: "dc:flex dc:items-center dc:gap-1.5 dc:flex-wrap",
7436
- children: b.map((e) => /* @__PURE__ */ Z(pi, {
7512
+ children: b.map((e) => /* @__PURE__ */ Z(vi, {
7437
7513
  filter: e,
7438
7514
  schema: t,
7439
7515
  isEditMode: n,
@@ -7446,7 +7522,7 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7446
7522
  ]
7447
7523
  })]
7448
7524
  });
7449
- }, yi = ({ dashboardFilters: e, editable: t, schema: n, dashboardConfig: r, onDashboardFiltersChange: i, onSaveFilters: a, selectedFilterId: o, onFilterSelect: s, isEditMode: c = !1 }) => {
7525
+ }, wi = ({ dashboardFilters: e, editable: t, schema: n, dashboardConfig: r, onDashboardFiltersChange: i, onSaveFilters: a, selectedFilterId: o, onFilterSelect: s, isEditMode: c = !1 }) => {
7450
7526
  let [l, u] = Y(null), [d, f] = Y(!1), p = G((e) => e ? { cubes: e.cubes.map((e) => ({
7451
7527
  name: e.name,
7452
7528
  title: e.title || e.name,
@@ -7472,7 +7548,9 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7472
7548
  description: "",
7473
7549
  shortTitle: e.shortTitle
7474
7550
  })) || []
7475
- })) } : null, []), m = G(() => `df_${Date.now()}_${Math.random().toString(36).substring(7)}`, []), h = G(() => {
7551
+ })) } : null, []), m = G(() => `df_${Date.now()}_${Math.random().toString(36).substring(7)}`, []), h = G(async (e) => {
7552
+ i(e), a && await a(e);
7553
+ }, [i, a]), g = G(() => {
7476
7554
  u({
7477
7555
  id: m(),
7478
7556
  label: `Filter ${e.length + 1}`,
@@ -7482,7 +7560,7 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7482
7560
  values: []
7483
7561
  }
7484
7562
  }), f(!0);
7485
- }, [e.length, m]), g = G(() => {
7563
+ }, [e.length, m]), _ = G(() => {
7486
7564
  let t = {
7487
7565
  id: m(),
7488
7566
  label: "Date Range Filter",
@@ -7493,32 +7571,33 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7493
7571
  values: ["last 30 days"]
7494
7572
  }
7495
7573
  };
7496
- i([...e, t]);
7574
+ h([...e, t]).catch((e) => {
7575
+ console.error("Failed to save filters:", e);
7576
+ });
7497
7577
  }, [
7498
7578
  m,
7499
7579
  e,
7500
- i
7501
- ]), _ = G((t) => {
7580
+ h
7581
+ ]), v = G((t) => {
7502
7582
  let n = e.find((e) => e.id === t);
7503
7583
  n && (u(n), f(!0));
7504
- }, [e]), v = G((t) => {
7505
- i(e.filter((e) => e.id !== t)), l?.id === t && (u(null), f(!1));
7584
+ }, [e]), y = G((t) => {
7585
+ h(e.filter((e) => e.id !== t)).catch((e) => {
7586
+ console.error("Failed to save filters:", e);
7587
+ }), l?.id === t && (u(null), f(!1));
7506
7588
  }, [
7507
7589
  e,
7508
7590
  l,
7509
- i
7510
- ]), y = G(async (t) => {
7591
+ h
7592
+ ]), b = G(async (t) => {
7511
7593
  let n = e.findIndex((e) => e.id === t.id), r;
7512
- if (r = n >= 0 ? e.map((e) => e.id === t.id ? t : e) : [...e, t], i(r), a) try {
7513
- await a(r);
7594
+ r = n >= 0 ? e.map((e) => e.id === t.id ? t : e) : [...e, t];
7595
+ try {
7596
+ await h(r);
7514
7597
  } catch (e) {
7515
7598
  throw console.error("Failed to save filters:", e), e;
7516
7599
  }
7517
- }, [
7518
- e,
7519
- i,
7520
- a
7521
- ]), b = G(() => {
7600
+ }, [e, h]), x = G(() => {
7522
7601
  u(null), f(!1);
7523
7602
  }, []);
7524
7603
  return !t || !c && e.length === 0 ? null : /* @__PURE__ */ Q("div", {
@@ -7530,38 +7609,38 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
7530
7609
  backgroundColor: "var(--dc-surface)",
7531
7610
  boxShadow: "var(--dc-shadow-sm)"
7532
7611
  },
7533
- children: /* @__PURE__ */ Z(Jr, {
7612
+ children: /* @__PURE__ */ Z($r, {
7534
7613
  dashboardFilters: e,
7535
- onAddFilter: h,
7536
- onAddTimeFilter: g,
7537
- onEditFilter: _,
7538
- onRemoveFilter: v,
7614
+ onAddFilter: g,
7615
+ onAddTimeFilter: _,
7616
+ onEditFilter: v,
7617
+ onRemoveFilter: y,
7539
7618
  selectedFilterId: o,
7540
7619
  onFilterSelect: s
7541
7620
  })
7542
- }) : /* @__PURE__ */ Z(vi, {
7621
+ }) : /* @__PURE__ */ Z(Ci, {
7543
7622
  dashboardFilters: e,
7544
7623
  schema: n,
7545
7624
  isEditMode: !1,
7546
7625
  onDashboardFiltersChange: i,
7547
- onAddFilter: h,
7548
- onEditFilter: _,
7549
- onRemoveFilter: v
7550
- }), d && l && /* @__PURE__ */ Z(Vr, {
7626
+ onAddFilter: g,
7627
+ onEditFilter: v,
7628
+ onRemoveFilter: y
7629
+ }), d && l && /* @__PURE__ */ Z(Kr, {
7551
7630
  filter: l,
7552
7631
  schema: n,
7553
7632
  dashboardConfig: r,
7554
7633
  isOpen: d,
7555
- onSave: y,
7556
- onClose: b,
7557
- onDelete: () => v(l.id),
7634
+ onSave: b,
7635
+ onClose: x,
7636
+ onDelete: () => y(l.id),
7558
7637
  convertToMetaResponse: p
7559
7638
  })]
7560
7639
  });
7561
- }, bi = s("filter");
7562
- function xi() {
7563
- let { t: e } = P(), { dashboardFilters: t, editable: n, schema: r, config: i, onDashboardFiltersChange: a, onSave: o, selectedFilterId: s, selectedFilter: c, isEditMode: l, handleFilterSelect: u, handleSelectAllForFilter: d, actions: f } = Nn();
7564
- return /* @__PURE__ */ Q(X, { children: [/* @__PURE__ */ Z(yi, {
7640
+ }, Ti = s("filter");
7641
+ function Ei() {
7642
+ let { t: e } = P(), { dashboardFilters: t, editable: n, schema: r, config: i, onDashboardFiltersChange: a, onSave: o, selectedFilterId: s, selectedFilter: c, isEditMode: l, handleFilterSelect: u, handleSelectAllForFilter: d, actions: f } = Rn();
7643
+ return /* @__PURE__ */ Q(X, { children: [/* @__PURE__ */ Z(wi, {
7565
7644
  dashboardFilters: t || [],
7566
7645
  editable: n,
7567
7646
  schema: r || null,
@@ -7588,7 +7667,7 @@ function xi() {
7588
7667
  children: [/* @__PURE__ */ Q("div", {
7589
7668
  className: "dc:flex dc:items-center dc:gap-2 dc:flex-wrap",
7590
7669
  children: [
7591
- /* @__PURE__ */ Z(bi, { className: "dc:w-5 dc:h-5 dc:shrink-0" }),
7670
+ /* @__PURE__ */ Z(Ti, { className: "dc:w-5 dc:h-5 dc:shrink-0" }),
7592
7671
  /* @__PURE__ */ Z("span", {
7593
7672
  className: "dc:font-medium",
7594
7673
  children: e("dashboard.filterSelectionMode", { filterLabel: c.label })
@@ -7627,8 +7706,8 @@ function xi() {
7627
7706
  }
7628
7707
  //#endregion
7629
7708
  //#region src/client/components/MobileStackedLayout.tsx
7630
- var Si = s("refresh");
7631
- function Ci(e) {
7709
+ var Di = s("refresh");
7710
+ function Oi(e) {
7632
7711
  if (!e) return null;
7633
7712
  let t = e.parentElement;
7634
7713
  for (; t;) {
@@ -7639,9 +7718,9 @@ function Ci(e) {
7639
7718
  }
7640
7719
  return null;
7641
7720
  }
7642
- function wi({ config: e, colorPalette: t, dashboardFilters: n, onPortletRefresh: r }) {
7721
+ function ki({ config: e, colorPalette: t, dashboardFilters: n, onPortletRefresh: r }) {
7643
7722
  let i = J({}), [a, o] = Y(null), s = J(null), c = G((e) => {
7644
- s.current = e, e && o(Ci(e));
7723
+ s.current = e, e && o(Oi(e));
7645
7724
  }, []), l = q(() => [...e.portlets].sort((e, t) => e.y === t.y ? e.x - t.x : e.y - t.y), [e.portlets]), u = (e) => {
7646
7725
  i.current[e]?.refresh(), r?.(e);
7647
7726
  };
@@ -7651,7 +7730,7 @@ function wi({ config: e, colorPalette: t, dashboardFilters: n, onPortletRefresh:
7651
7730
  ref: c,
7652
7731
  className: "mobile-stacked-layout dc:space-y-4 dc:px-2",
7653
7732
  children: l.map((r) => {
7654
- let { analysisConfig: a } = St(r), o = a.charts[a.analysisType], s = JSON.stringify(a.query), c = o?.chartType || "line", l = o?.chartConfig, d = o?.displayConfig, f = c === "markdown" && !!d?.transparentBackground, p = c === "markdown" && (d?.autoHeight ?? !0), m = c === "markdown" ? (d?.hideHeader ?? !0) || !r.title : d?.hideHeader ?? !1, h = Math.max(300, r.h * 80), g = h - (m ? 0 : 40) - 24;
7733
+ let { analysisConfig: a } = yt(r), o = a.charts[a.analysisType], s = JSON.stringify(a.query), c = o?.chartType || "line", l = o?.chartConfig, d = o?.displayConfig, f = c === "markdown" && !!d?.transparentBackground, p = c === "markdown" && (d?.autoHeight ?? !0), m = c === "markdown" ? (d?.hideHeader ?? !0) || !r.title : d?.hideHeader ?? !1, h = Math.max(300, r.h * 80), g = h - (m ? 0 : 40) - 24;
7655
7734
  return /* @__PURE__ */ Q("div", {
7656
7735
  "data-portlet-id": r.id,
7657
7736
  className: f ? "dc:flex dc:flex-col" : "bg-dc-surface dc:border border-dc-border dc:rounded-lg dc:flex dc:flex-col",
@@ -7673,7 +7752,7 @@ function wi({ config: e, colorPalette: t, dashboardFilters: n, onPortletRefresh:
7673
7752
  onClick: () => u(r.id),
7674
7753
  className: "dc:p-1 bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer hover:bg-dc-surface-hover dc:transition-colors",
7675
7754
  title: "Refresh portlet data",
7676
- children: /* @__PURE__ */ Z(Si, { style: {
7755
+ children: /* @__PURE__ */ Z(Di, { style: {
7677
7756
  width: "16px",
7678
7757
  height: "16px",
7679
7758
  color: "currentColor"
@@ -7683,7 +7762,7 @@ function wi({ config: e, colorPalette: t, dashboardFilters: n, onPortletRefresh:
7683
7762
  }), /* @__PURE__ */ Z("div", {
7684
7763
  className: `dc:overflow-visible dc:flex dc:flex-col${f ? "" : " dc:px-2 dc:py-3"}`,
7685
7764
  style: { height: p ? "auto" : g },
7686
- children: /* @__PURE__ */ Z(jt, {
7765
+ children: /* @__PURE__ */ Z(It, {
7687
7766
  ref: (e) => {
7688
7767
  i.current[r.id] = e;
7689
7768
  },
@@ -7706,7 +7785,7 @@ function wi({ config: e, colorPalette: t, dashboardFilters: n, onPortletRefresh:
7706
7785
  }
7707
7786
  //#endregion
7708
7787
  //#region src/client/components/ScaledGridWrapper.tsx
7709
- function Ti({ scaleFactor: e, designWidth: t, children: n }) {
7788
+ function Ai({ scaleFactor: e, designWidth: t, children: n }) {
7710
7789
  let [r, i] = Y(0), a = J(null);
7711
7790
  K(() => {
7712
7791
  if (!a.current) return;
@@ -7737,15 +7816,15 @@ function Ti({ scaleFactor: e, designWidth: t, children: n }) {
7737
7816
  }
7738
7817
  //#endregion
7739
7818
  //#region src/client/components/dashboard/DashboardGridSurface.tsx
7740
- var Ei = s("measure"), Di = s("add");
7741
- function Oi() {
7742
- let { t: e } = P(), { config: t, gridContentRef: n, displayMode: r, scaleFactor: i, designWidth: a, colorPalette: o, dashboardFilters: s, handlePortletRefresh: c, renderActiveLayout: l, editable: u, handleAddText: d, handleAddPortlet: f } = Nn();
7819
+ var ji = s("measure"), Mi = s("add");
7820
+ function Ni() {
7821
+ let { t: e } = P(), { config: t, gridContentRef: n, displayMode: r, scaleFactor: i, designWidth: a, colorPalette: o, dashboardFilters: s, handlePortletRefresh: c, renderActiveLayout: l, editable: u, handleAddText: d, handleAddPortlet: f } = Rn();
7743
7822
  return !t.portlets || t.portlets.length === 0 ? /* @__PURE__ */ Z("div", {
7744
7823
  className: "dc:flex dc:justify-center dc:items-center dc:min-h-[50vh]",
7745
7824
  children: /* @__PURE__ */ Q("div", {
7746
7825
  className: "dc:text-center",
7747
7826
  children: [
7748
- /* @__PURE__ */ Z(Ei, { style: {
7827
+ /* @__PURE__ */ Z(ji, { style: {
7749
7828
  width: "64px",
7750
7829
  height: "64px",
7751
7830
  color: "var(--dc-text-muted)",
@@ -7770,7 +7849,7 @@ function Oi() {
7770
7849
  },
7771
7850
  onMouseEnter: (e) => e.currentTarget.style.backgroundColor = "var(--dc-surface-hover)",
7772
7851
  onMouseLeave: (e) => e.currentTarget.style.backgroundColor = "var(--dc-surface)",
7773
- children: [/* @__PURE__ */ Z(jn, { className: "dc:w-5 dc:h-5 dc:mr-2" }), e("dashboard.addText")]
7852
+ children: [/* @__PURE__ */ Z(In, { className: "dc:w-5 dc:h-5 dc:mr-2" }), e("dashboard.addText")]
7774
7853
  }), /* @__PURE__ */ Q("button", {
7775
7854
  onClick: f,
7776
7855
  className: "dc:inline-flex dc:items-center dc:px-4 dc:py-2 dc:border border-dc-border bg-dc-surface dc:rounded-md focus:outline-hidden dc:focus:ring-2",
@@ -7780,19 +7859,19 @@ function Oi() {
7780
7859
  },
7781
7860
  onMouseEnter: (e) => e.currentTarget.style.backgroundColor = "var(--dc-surface-hover)",
7782
7861
  onMouseLeave: (e) => e.currentTarget.style.backgroundColor = "var(--dc-surface)",
7783
- children: [/* @__PURE__ */ Z(Di, { className: "dc:w-5 dc:h-5 dc:mr-2" }), e("dashboard.addPortlet")]
7862
+ children: [/* @__PURE__ */ Z(Mi, { className: "dc:w-5 dc:h-5 dc:mr-2" }), e("dashboard.addPortlet")]
7784
7863
  })]
7785
7864
  })
7786
7865
  ]
7787
7866
  })
7788
7867
  }) : /* @__PURE__ */ Z("div", {
7789
7868
  ref: n,
7790
- children: r === "mobile" ? /* @__PURE__ */ Z(wi, {
7869
+ children: r === "mobile" ? /* @__PURE__ */ Z(ki, {
7791
7870
  config: t,
7792
7871
  colorPalette: o,
7793
7872
  dashboardFilters: s,
7794
7873
  onPortletRefresh: c
7795
- }) : r === "scaled" ? /* @__PURE__ */ Z(Ti, {
7874
+ }) : r === "scaled" ? /* @__PURE__ */ Z(Ai, {
7796
7875
  scaleFactor: i,
7797
7876
  designWidth: a,
7798
7877
  children: l()
@@ -7801,7 +7880,7 @@ function Oi() {
7801
7880
  }
7802
7881
  //#endregion
7803
7882
  //#region src/client/components/Modal.tsx
7804
- var ki = ({ isOpen: e, onClose: t, title: n, size: r = "md", closeOnBackdropClick: i = !0, closeOnEscape: a = !0, showCloseButton: o = !0, children: s, footer: c, noPadding: l = !1 }) => {
7883
+ var Pi = ({ isOpen: e, onClose: t, title: n, size: r = "md", closeOnBackdropClick: i = !0, closeOnEscape: a = !0, showCloseButton: o = !0, children: s, footer: c, noPadding: l = !1 }) => {
7805
7884
  let u = G((e) => {
7806
7885
  e.key === "Escape" && a && t();
7807
7886
  }, [a, t]);
@@ -7872,20 +7951,20 @@ var ki = ({ isOpen: e, onClose: t, title: n, size: r = "md", closeOnBackdropClic
7872
7951
  ]
7873
7952
  })
7874
7953
  }) : null;
7875
- }, Ai = fe(() => import("./analysis-builder-zd48FVJO.js")), ji = W((e, t) => /* @__PURE__ */ Z(H, {
7954
+ }, Fi = W(() => import("./analysis-builder-MuMIzoRq.js")), Ii = U((e, t) => /* @__PURE__ */ Z(H, {
7876
7955
  fallback: /* @__PURE__ */ Z("div", {
7877
7956
  className: "dc:flex dc:items-center dc:justify-center dc:w-full dc:py-6",
7878
7957
  children: /* @__PURE__ */ Z(ce, {})
7879
7958
  }),
7880
- children: /* @__PURE__ */ Z(Ai, {
7959
+ children: /* @__PURE__ */ Z(Fi, {
7881
7960
  ...e,
7882
7961
  ref: t
7883
7962
  })
7884
7963
  }));
7885
- ji.displayName = "AnalysisBuilder";
7964
+ Ii.displayName = "AnalysisBuilder";
7886
7965
  //#endregion
7887
7966
  //#region src/client/adapters/funnelModeAdapter.ts
7888
- function Mi(e) {
7967
+ function Li(e) {
7889
7968
  let t = "";
7890
7969
  e.funnelBindingKey && (typeof e.funnelBindingKey.dimension == "string" ? t = e.funnelBindingKey.dimension : Array.isArray(e.funnelBindingKey.dimension) && (t = e.funnelBindingKey.dimension.map((e) => ({
7891
7970
  cube: e.cube,
@@ -7902,7 +7981,7 @@ function Mi(e) {
7902
7981
  includeTimeMetrics: !0
7903
7982
  } };
7904
7983
  }
7905
- function Ni(e) {
7984
+ function Ri(e) {
7906
7985
  let { funnel: t } = e, n = null;
7907
7986
  if (t.steps.length > 0 && t.steps[0].cube) n = t.steps[0].cube;
7908
7987
  else if (typeof t.bindingKey == "string") {
@@ -7919,7 +7998,7 @@ function Ni(e) {
7919
7998
  let a = t.steps.map((e) => {
7920
7999
  let t = [];
7921
8000
  return e.filter && (t = Array.isArray(e.filter) ? e.filter : typeof e.filter == "object" && "and" in e.filter ? e.filter.and : [e.filter]), {
7922
- id: cr(),
8001
+ id: pr(),
7923
8002
  name: e.name,
7924
8003
  cube: e.cube || n || "",
7925
8004
  filters: t,
@@ -7934,14 +8013,14 @@ function Ni(e) {
7934
8013
  funnelBindingKey: r
7935
8014
  };
7936
8015
  }
7937
- function Pi(e) {
8016
+ function zi(e) {
7938
8017
  if (!e || typeof e != "object") return !1;
7939
8018
  let t = e;
7940
8019
  if (t.version !== 1 || t.analysisType !== "funnel" || !t.query || typeof t.query != "object") return !1;
7941
8020
  let n = t.query;
7942
8021
  return !(!n.funnel || typeof n.funnel != "object");
7943
8022
  }
7944
- var Fi = {
8023
+ var Bi = {
7945
8024
  type: "funnel",
7946
8025
  createInitial() {
7947
8026
  return {
@@ -7962,11 +8041,11 @@ var Fi = {
7962
8041
  };
7963
8042
  },
7964
8043
  canLoad(e) {
7965
- return Pi(e);
8044
+ return zi(e);
7966
8045
  },
7967
8046
  load(e) {
7968
8047
  if (e.analysisType !== "funnel") throw Error(`Cannot load ${e.analysisType} config with funnel adapter`);
7969
- return Ni(e.query);
8048
+ return Ri(e.query);
7970
8049
  },
7971
8050
  save(e, t, n) {
7972
8051
  return {
@@ -7974,7 +8053,7 @@ var Fi = {
7974
8053
  analysisType: "funnel",
7975
8054
  activeView: n,
7976
8055
  charts: { funnel: t.funnel || this.getDefaultChartConfig() },
7977
- query: Mi(e)
8056
+ query: Li(e)
7978
8057
  };
7979
8058
  },
7980
8059
  validate(e) {
@@ -8009,7 +8088,7 @@ var Fi = {
8009
8088
  };
8010
8089
  //#endregion
8011
8090
  //#region src/client/adapters/flowModeAdapter.ts
8012
- function Ii(e) {
8091
+ function Vi(e) {
8013
8092
  let t = "";
8014
8093
  return e.flowBindingKey && (typeof e.flowBindingKey.dimension == "string" ? t = e.flowBindingKey.dimension : Array.isArray(e.flowBindingKey.dimension) && (t = e.flowBindingKey.dimension.map((e) => ({
8015
8094
  cube: e.cube,
@@ -8027,7 +8106,7 @@ function Ii(e) {
8027
8106
  joinStrategy: e.joinStrategy
8028
8107
  } };
8029
8108
  }
8030
- function Li(e) {
8109
+ function Hi(e) {
8031
8110
  let { flow: t } = e, n = null;
8032
8111
  if (typeof t.bindingKey == "string") {
8033
8112
  let e = t.bindingKey.split(".");
@@ -8055,14 +8134,14 @@ function Li(e) {
8055
8134
  joinStrategy: t.joinStrategy || "auto"
8056
8135
  };
8057
8136
  }
8058
- function Ri(e) {
8137
+ function Ui(e) {
8059
8138
  if (!e || typeof e != "object") return !1;
8060
8139
  let t = e;
8061
8140
  if (t.version !== 1 || t.analysisType !== "flow" || !t.query || typeof t.query != "object") return !1;
8062
8141
  let n = t.query;
8063
8142
  return !(!n.flow || typeof n.flow != "object");
8064
8143
  }
8065
- var zi = {
8144
+ var Wi = {
8066
8145
  type: "flow",
8067
8146
  createInitial() {
8068
8147
  return {
@@ -8092,11 +8171,11 @@ var zi = {
8092
8171
  };
8093
8172
  },
8094
8173
  canLoad(e) {
8095
- return Ri(e);
8174
+ return Ui(e);
8096
8175
  },
8097
8176
  load(e) {
8098
8177
  if (e.analysisType !== "flow") throw Error(`Cannot load ${e.analysisType} config with flow adapter`);
8099
- return Li(e.query);
8178
+ return Hi(e.query);
8100
8179
  },
8101
8180
  save(e, t, n) {
8102
8181
  return {
@@ -8104,7 +8183,7 @@ var zi = {
8104
8183
  analysisType: "flow",
8105
8184
  activeView: n,
8106
8185
  charts: { flow: t.flow || this.getDefaultChartConfig() },
8107
- query: Ii(e)
8186
+ query: Vi(e)
8108
8187
  };
8109
8188
  },
8110
8189
  validate(e) {
@@ -8139,7 +8218,7 @@ var zi = {
8139
8218
  };
8140
8219
  //#endregion
8141
8220
  //#region src/client/adapters/retentionModeAdapter.ts
8142
- function Bi(e) {
8221
+ function Gi(e) {
8143
8222
  let t = "";
8144
8223
  e.retentionBindingKey && (typeof e.retentionBindingKey.dimension == "string" ? t = e.retentionBindingKey.dimension : Array.isArray(e.retentionBindingKey.dimension) && (t = e.retentionBindingKey.dimension.map((e) => ({
8145
8224
  cube: e.cube,
@@ -8155,7 +8234,7 @@ function Bi(e) {
8155
8234
  } };
8156
8235
  return e.retentionCohortFilters.length > 0 && (n.retention.cohortFilters = e.retentionCohortFilters.length === 1 ? e.retentionCohortFilters[0] : e.retentionCohortFilters), e.retentionActivityFilters.length > 0 && (n.retention.activityFilters = e.retentionActivityFilters.length === 1 ? e.retentionActivityFilters[0] : e.retentionActivityFilters), e.retentionBreakdowns && e.retentionBreakdowns.length > 0 && (n.retention.breakdownDimensions = e.retentionBreakdowns.map((e) => e.field)), n;
8157
8236
  }
8158
- function Vi(e) {
8237
+ function Ki(e) {
8159
8238
  let { retention: t } = e, n = null;
8160
8239
  if (typeof t.timeDimension == "string") {
8161
8240
  let e = t.timeDimension.split(".");
@@ -8191,17 +8270,17 @@ function Vi(e) {
8191
8270
  retentionBreakdowns: s
8192
8271
  };
8193
8272
  }
8194
- function Hi(e) {
8273
+ function qi(e) {
8195
8274
  if (!e || typeof e != "object") return !1;
8196
8275
  let t = e;
8197
8276
  if (t.version !== 1 || t.analysisType !== "retention" || !t.query || typeof t.query != "object") return !1;
8198
8277
  let n = t.query;
8199
8278
  return !(!n.retention || typeof n.retention != "object");
8200
8279
  }
8201
- var Ui = {
8280
+ var Ji = {
8202
8281
  type: "retention",
8203
8282
  createInitial() {
8204
- return { ...le };
8283
+ return { ...F };
8205
8284
  },
8206
8285
  extractState(e) {
8207
8286
  return {
@@ -8218,11 +8297,11 @@ var Ui = {
8218
8297
  };
8219
8298
  },
8220
8299
  canLoad(e) {
8221
- return Hi(e);
8300
+ return qi(e);
8222
8301
  },
8223
8302
  load(e) {
8224
8303
  if (e.analysisType !== "retention") throw Error(`Cannot load ${e.analysisType} config with retention adapter`);
8225
- return Vi(e.query);
8304
+ return Ki(e.query);
8226
8305
  },
8227
8306
  save(e, t, n) {
8228
8307
  return {
@@ -8230,7 +8309,7 @@ var Ui = {
8230
8309
  analysisType: "retention",
8231
8310
  activeView: n,
8232
8311
  charts: { retention: t.retention || this.getDefaultChartConfig() },
8233
- query: Bi(e)
8312
+ query: Gi(e)
8234
8313
  };
8235
8314
  },
8236
8315
  validate(e) {
@@ -8268,8 +8347,8 @@ var Ui = {
8268
8347
  };
8269
8348
  //#endregion
8270
8349
  //#region src/client/components/PortletAnalysisModal.tsx
8271
- function Wi({ isOpen: e, onClose: t, onSave: n, portlet: r, initialData: i, title: a, submitText: o, colorPalette: s }) {
8272
- let { t: c } = P(), l = J(null), [u, d] = Y(""), f = q(() => r ? St(r).analysisConfig : null, [r]), p = q(() => {
8350
+ function Yi({ isOpen: e, onClose: t, onSave: n, portlet: r, initialData: i, title: a, submitText: o, colorPalette: s }) {
8351
+ let { t: c } = P(), l = J(null), [u, d] = Y(""), f = q(() => r ? yt(r).analysisConfig : null, [r]), p = q(() => {
8273
8352
  if (!f) return;
8274
8353
  let e = f.query;
8275
8354
  if (e) return e;
@@ -8293,7 +8372,7 @@ function Wi({ isOpen: e, onClose: t, onSave: n, portlet: r, initialData: i, titl
8293
8372
  funnelDisplayConfig: r.funnelDisplayConfig
8294
8373
  };
8295
8374
  if (f.query && "funnel" in f.query) {
8296
- let e = Fi.load(f), t = f.charts?.funnel;
8375
+ let e = Bi.load(f), t = f.charts?.funnel;
8297
8376
  return {
8298
8377
  ...e,
8299
8378
  funnelChartType: t?.chartType,
@@ -8304,7 +8383,7 @@ function Wi({ isOpen: e, onClose: t, onSave: n, portlet: r, initialData: i, titl
8304
8383
  }
8305
8384
  }, [f, r]), _ = q(() => {
8306
8385
  if (f?.analysisType === "flow" && f.query && "flow" in f.query) {
8307
- let e = zi.load(f), t = f.charts?.flow;
8386
+ let e = Wi.load(f), t = f.charts?.flow;
8308
8387
  return {
8309
8388
  ...e,
8310
8389
  flowChartType: t?.chartType,
@@ -8314,7 +8393,7 @@ function Wi({ isOpen: e, onClose: t, onSave: n, portlet: r, initialData: i, titl
8314
8393
  }
8315
8394
  }, [f]), v = q(() => {
8316
8395
  if (f?.analysisType === "retention" && f.query && "retention" in f.query) {
8317
- let e = Ui.load(f), t = f.charts?.retention;
8396
+ let e = Ji.load(f), t = f.charts?.retention;
8318
8397
  return {
8319
8398
  ...e,
8320
8399
  retentionChartType: t?.chartType,
@@ -8367,7 +8446,7 @@ function Wi({ isOpen: e, onClose: t, onSave: n, portlet: r, initialData: i, titl
8367
8446
  n,
8368
8447
  t
8369
8448
  ]);
8370
- return /* @__PURE__ */ Z(ki, {
8449
+ return /* @__PURE__ */ Z(Pi, {
8371
8450
  isOpen: e,
8372
8451
  onClose: t,
8373
8452
  title: a,
@@ -8412,7 +8491,7 @@ function Wi({ isOpen: e, onClose: t, onSave: n, portlet: r, initialData: i, titl
8412
8491
  })
8413
8492
  }), /* @__PURE__ */ Z("div", {
8414
8493
  className: "dc:flex-1 dc:min-h-0",
8415
- children: /* @__PURE__ */ Z(ji, {
8494
+ children: /* @__PURE__ */ Z(Ii, {
8416
8495
  ref: l,
8417
8496
  maxHeight: "100%",
8418
8497
  initialQuery: p,
@@ -8432,7 +8511,7 @@ function Wi({ isOpen: e, onClose: t, onSave: n, portlet: r, initialData: i, titl
8432
8511
  }
8433
8512
  //#endregion
8434
8513
  //#region src/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.tsx
8435
- function Gi({ label: e, value: t, onChange: n, placeholder: r, description: i }) {
8514
+ function Xi({ label: e, value: t, onChange: n, placeholder: r, description: i }) {
8436
8515
  let [a, o] = Y(() => t.join("\n"));
8437
8516
  K(() => {
8438
8517
  o(t.join("\n"));
@@ -8462,7 +8541,7 @@ function Gi({ label: e, value: t, onChange: n, placeholder: r, description: i })
8462
8541
  ]
8463
8542
  });
8464
8543
  }
8465
- function Ki({ chartType: e, displayConfig: t, colorPalette: n, onDisplayConfigChange: r, excludeKeys: i }) {
8544
+ function Zi({ chartType: e, displayConfig: t, colorPalette: n, onDisplayConfigChange: r, excludeKeys: i }) {
8466
8545
  let { t: a } = P(), { config: o, loaded: s } = m(e);
8467
8546
  return s ? o.displayOptions && o.displayOptions.length > 0 || o.displayOptionsConfig && o.displayOptionsConfig.length > 0 ? /* @__PURE__ */ Z("div", {
8468
8547
  className: "dc:space-y-6",
@@ -8760,7 +8839,7 @@ function Ki({ chartType: e, displayConfig: t, colorPalette: n, onDisplayConfigCh
8760
8839
  [e.key]: Object.keys(n).length > 0 ? n : void 0
8761
8840
  })
8762
8841
  }),
8763
- e.type === "stringArray" && /* @__PURE__ */ Z(Gi, {
8842
+ e.type === "stringArray" && /* @__PURE__ */ Z(Xi, {
8764
8843
  label: a(e.label),
8765
8844
  value: t[e.key] ?? [],
8766
8845
  onChange: (n) => r({
@@ -8809,9 +8888,9 @@ function Ki({ chartType: e, displayConfig: t, colorPalette: n, onDisplayConfigCh
8809
8888
  }
8810
8889
  //#endregion
8811
8890
  //#region src/client/components/TextPortletModal.tsx
8812
- var qi = s("close");
8813
- function Ji({ isOpen: e, onClose: t, onSave: n, portlet: r, colorPalette: i, existingTitles: a = [] }) {
8814
- let { t: o } = P(), [s, c] = Y(q(() => r ? St(r).analysisConfig.charts.query?.displayConfig ?? {} : {
8891
+ var Qi = s("close");
8892
+ function $i({ isOpen: e, onClose: t, onSave: n, portlet: r, colorPalette: i, existingTitles: a = [] }) {
8893
+ let { t: o } = P(), [s, c] = Y(q(() => r ? yt(r).analysisConfig.charts.query?.displayConfig ?? {} : {
8815
8894
  content: "",
8816
8895
  hideHeader: !0,
8817
8896
  autoHeight: !0,
@@ -8822,7 +8901,7 @@ function Ji({ isOpen: e, onClose: t, onSave: n, portlet: r, colorPalette: i, exi
8822
8901
  accentBorder: "none"
8823
8902
  }, [r])), [l, u] = Y(() => r?.title ?? ""), [d, f] = Y(!1), [p, m] = Y(r);
8824
8903
  if (r !== p) if (m(r), f(!1), r) {
8825
- let e = St(r).analysisConfig.charts.query;
8904
+ let e = yt(r).analysisConfig.charts.query;
8826
8905
  c(e?.displayConfig ?? {}), u(r.title ?? "");
8827
8906
  } else c({
8828
8907
  content: "",
@@ -8904,7 +8983,7 @@ function Ji({ isOpen: e, onClose: t, onSave: n, portlet: r, colorPalette: i, exi
8904
8983
  }), /* @__PURE__ */ Z("button", {
8905
8984
  onClick: t,
8906
8985
  className: "dc:p-1 dc:rounded-md text-dc-text-secondary dc:hover:bg-dc-surface-hover dc:transition-colors",
8907
- children: /* @__PURE__ */ Z(qi, { className: "dc:w-5 dc:h-5" })
8986
+ children: /* @__PURE__ */ Z(Qi, { className: "dc:w-5 dc:h-5" })
8908
8987
  })]
8909
8988
  }),
8910
8989
  /* @__PURE__ */ Z("div", {
@@ -8961,7 +9040,7 @@ function Ji({ isOpen: e, onClose: t, onSave: n, portlet: r, colorPalette: i, exi
8961
9040
  ]
8962
9041
  }), /* @__PURE__ */ Z("div", {
8963
9042
  className: "dc:w-72 dc:shrink-0",
8964
- children: /* @__PURE__ */ Z(Ki, {
9043
+ children: /* @__PURE__ */ Z(Zi, {
8965
9044
  chartType: "markdown",
8966
9045
  displayConfig: s,
8967
9046
  colorPalette: i,
@@ -8989,36 +9068,116 @@ function Ji({ isOpen: e, onClose: t, onSave: n, portlet: r, colorPalette: i, exi
8989
9068
  }) : null;
8990
9069
  }
8991
9070
  //#endregion
9071
+ //#region src/client/utils/joinReachability.ts
9072
+ function ea(e, t) {
9073
+ let n = new Set(t);
9074
+ if (!e?.cubes || t.length === 0) return n;
9075
+ let r = /* @__PURE__ */ new Map(), i = (e, t) => {
9076
+ r.has(e) || r.set(e, /* @__PURE__ */ new Set()), r.has(t) || r.set(t, /* @__PURE__ */ new Set()), r.get(e).add(t), r.get(t).add(e);
9077
+ };
9078
+ e.cubes.forEach((e) => {
9079
+ e.relationships?.forEach((t) => i(e.name, t.targetCube));
9080
+ });
9081
+ let a = [...t];
9082
+ for (; a.length > 0;) {
9083
+ let e = a.shift(), t = r.get(e);
9084
+ t && t.forEach((e) => {
9085
+ n.has(e) || (n.add(e), a.push(e));
9086
+ });
9087
+ }
9088
+ return n;
9089
+ }
9090
+ function ta(e) {
9091
+ let t = e.indexOf(".");
9092
+ return t > 0 ? e.substring(0, t) : null;
9093
+ }
9094
+ function na(e) {
9095
+ let t = /* @__PURE__ */ new Set(), n = (e) => {
9096
+ if (typeof e == "string") {
9097
+ let n = ta(e);
9098
+ n && t.add(n);
9099
+ }
9100
+ }, r = (e) => {
9101
+ Array.isArray(e?.measures) && e.measures.forEach(n), Array.isArray(e?.dimensions) && e.dimensions.forEach(n), Array.isArray(e?.timeDimensions) && e.timeDimensions.forEach((e) => n(e?.dimension));
9102
+ };
9103
+ try {
9104
+ let i = yt(e).analysisConfig.query;
9105
+ if (!i) return [];
9106
+ if ("funnel" in i) {
9107
+ let e = i.funnel;
9108
+ typeof e?.timeDimension == "string" ? n(e.timeDimension) : Array.isArray(e?.timeDimension) && e.timeDimension.forEach((e) => e?.cube && t.add(e.cube)), typeof e?.bindingKey == "string" ? n(e.bindingKey) : Array.isArray(e?.bindingKey) && e.bindingKey.forEach((e) => e?.cube && t.add(e.cube)), Array.isArray(e?.steps) && e.steps.forEach((e) => e?.cube && t.add(e.cube));
9109
+ } else "queries" in i && Array.isArray(i.queries) ? i.queries.forEach(r) : r(i);
9110
+ } catch (t) {
9111
+ console.warn("Failed to extract cubes from portlet:", e.id, t);
9112
+ }
9113
+ return [...t];
9114
+ }
9115
+ function ra(e, t, n) {
9116
+ if (!e?.cubes) return [];
9117
+ let r = na(t);
9118
+ if (r.length === 0) return [];
9119
+ let i = ea(e, r), a;
9120
+ if (n?.sameTypeAs) for (let t of e.cubes) {
9121
+ let e = t.dimensions?.find((e) => e.name === n.sameTypeAs);
9122
+ if (e) {
9123
+ a = e.type;
9124
+ break;
9125
+ }
9126
+ }
9127
+ return e.cubes.filter((e) => i.has(e.name)).map((e) => ({
9128
+ cubeName: e.name,
9129
+ cubeTitle: e.title || e.name,
9130
+ dimensions: (e.dimensions || []).filter((e) => !a || e.type === a)
9131
+ })).filter((e) => e.dimensions.length > 0);
9132
+ }
9133
+ //#endregion
8992
9134
  //#region src/client/components/PortletFilterConfigModal.tsx
8993
- function Yi({ isOpen: e, onClose: t, dashboardFilters: n = [], currentMapping: r = [], onSave: i, portletTitle: a }) {
8994
- let { t: o } = P(), [s, c] = Y(r);
9135
+ function ia({ isOpen: e, onClose: t, dashboardFilters: n = [], currentMapping: r = [], onSave: i, portletTitle: a, schema: o = null, portlet: s = null }) {
9136
+ let { t: c } = P(), [l, u] = Y(() => bt(r));
8995
9137
  K(() => {
8996
- c(r);
9138
+ u((e) => {
9139
+ let t = bt(r);
9140
+ return JSON.stringify(t) === JSON.stringify(e) ? e : t;
9141
+ });
8997
9142
  }, [r, e]);
8998
- let l = (e) => {
8999
- c((t) => t.includes(e) ? t.filter((t) => t !== e) : [...t, e]);
9000
- }, u = () => {
9001
- i(s), t();
9002
- }, d = () => {
9003
- c(r), t();
9004
- }, f = (e) => {
9143
+ let d = (e) => {
9144
+ u((t) => t.some((t) => t.filterId === e) ? t.filter((t) => t.filterId !== e) : [...t, { filterId: e }]);
9145
+ }, f = (e, t) => {
9146
+ u((n) => n.map((n) => n.filterId === e ? t ? {
9147
+ filterId: e,
9148
+ member: t
9149
+ } : { filterId: e } : n));
9150
+ }, p = () => {
9151
+ i(xt(l)), t();
9152
+ }, m = () => {
9153
+ u(bt(r)), t();
9154
+ }, h = q(() => {
9155
+ let e = /* @__PURE__ */ new Map();
9156
+ return !o || !s || n.forEach((t) => {
9157
+ t.isUniversalTime || !("member" in t.filter) || !t.filter.member || e.has(t.filter.member) || e.set(t.filter.member, ra(o, s, { sameTypeAs: t.filter.member }));
9158
+ }), e;
9159
+ }, [
9160
+ o,
9161
+ s,
9162
+ n
9163
+ ]), g = (e) => {
9005
9164
  if (!e.filter) return "";
9006
9165
  if ("member" in e.filter && e.filter.member) {
9007
- let t = e.filter.values || [], n = t.length > 0 ? t.join(", ") : o("portlet.filterConfig.noValue");
9166
+ let t = e.filter.values || [], n = t.length > 0 ? t.join(", ") : c("portlet.filterConfig.noValue");
9008
9167
  return `${e.filter.member} ${e.filter.operator} ${n}`;
9009
9168
  }
9010
9169
  if ("type" in e.filter && e.filter.type) {
9011
9170
  let t = e.filter.filters?.length || 0;
9012
- return o(t === 1 ? "portlet.filterConfig.groupFilter" : "portlet.filterConfig.groupFilterPlural", {
9171
+ return c(t === 1 ? "portlet.filterConfig.groupFilter" : "portlet.filterConfig.groupFilterPlural", {
9013
9172
  type: e.filter.type.toUpperCase(),
9014
9173
  count: t
9015
9174
  });
9016
9175
  }
9017
- return o("portlet.filterConfig.complexFilter");
9176
+ return c("portlet.filterConfig.complexFilter");
9018
9177
  };
9019
9178
  return e ? /* @__PURE__ */ Z("div", {
9020
9179
  className: "dc:fixed dc:inset-0 dc:z-50 dc:flex dc:items-center dc:justify-center bg-black bg-opacity-50",
9021
- onClick: d,
9180
+ onClick: m,
9022
9181
  children: /* @__PURE__ */ Q("div", {
9023
9182
  className: "bg-dc-surface dc:border border-dc-border dc:rounded-lg dc:max-w-2xl dc:w-full dc:mx-4 dc:max-h-[80vh] dc:flex dc:flex-col",
9024
9183
  style: { boxShadow: "var(--dc-shadow-lg)" },
@@ -9028,10 +9187,10 @@ function Yi({ isOpen: e, onClose: t, dashboardFilters: n = [], currentMapping: r
9028
9187
  className: "dc:px-6 dc:py-4 dc:border-b border-dc-border bg-dc-surface-secondary dc:rounded-t-lg",
9029
9188
  children: [/* @__PURE__ */ Z("h2", {
9030
9189
  className: "dc:text-lg dc:font-semibold text-dc-text",
9031
- children: o("portlet.filterConfig.title")
9190
+ children: c("portlet.filterConfig.title")
9032
9191
  }), /* @__PURE__ */ Z("p", {
9033
9192
  className: "dc:text-sm text-dc-text-secondary dc:mt-1",
9034
- children: o("portlet.filterConfig.subtitle", { portletTitle: a })
9193
+ children: c("portlet.filterConfig.subtitle", { portletTitle: a })
9035
9194
  })]
9036
9195
  }),
9037
9196
  /* @__PURE__ */ Z("div", {
@@ -9053,11 +9212,11 @@ function Yi({ isOpen: e, onClose: t, dashboardFilters: n = [], currentMapping: r
9053
9212
  }),
9054
9213
  /* @__PURE__ */ Z("p", {
9055
9214
  className: "dc:text-sm dc:font-medium",
9056
- children: o("portlet.filterConfig.noFilters")
9215
+ children: c("portlet.filterConfig.noFilters")
9057
9216
  }),
9058
9217
  /* @__PURE__ */ Z("p", {
9059
9218
  className: "dc:text-xs dc:mt-1",
9060
- children: o("portlet.filterConfig.noFiltersHint")
9219
+ children: c("portlet.filterConfig.noFiltersHint")
9061
9220
  })
9062
9221
  ]
9063
9222
  }) : /* @__PURE__ */ Q("div", {
@@ -9066,43 +9225,90 @@ function Yi({ isOpen: e, onClose: t, dashboardFilters: n = [], currentMapping: r
9066
9225
  className: "dc:flex dc:items-center dc:justify-between dc:mb-4 dc:pb-2 dc:border-b border-dc-border",
9067
9226
  children: [/* @__PURE__ */ Z("span", {
9068
9227
  className: "dc:text-sm dc:font-medium text-dc-text",
9069
- children: o("portlet.filterConfig.availableFilters")
9228
+ children: c("portlet.filterConfig.availableFilters")
9070
9229
  }), /* @__PURE__ */ Z("span", {
9071
9230
  className: "dc:text-xs text-dc-text-secondary",
9072
- children: o("portlet.filterConfig.selectedCount", {
9073
- selected: s.length,
9231
+ children: c("portlet.filterConfig.selectedCount", {
9232
+ selected: l.filter((e) => n.some((t) => t.id === e.filterId)).length,
9074
9233
  total: n.length
9075
9234
  })
9076
9235
  })]
9077
9236
  }), n.map((e) => {
9078
- let t = s.includes(e.id);
9237
+ let t = l.find((t) => t.filterId === e.id), n = !!t, r = !!e.filter && "member" in e.filter && !!e.filter.member, i = n && r && !e.isUniversalTime, a = i && h.get(e.filter.member) || [], o = !!t?.member && !a.some((e) => e.dimensions.some((e) => e.name === t.member));
9079
9238
  return /* @__PURE__ */ Q("label", {
9080
- className: `dc:flex dc:items-start dc:p-3 dc:rounded-md dc:border dc:cursor-pointer dc:transition-colors ${t ? "border-dc-primary bg-dc-surface-secondary" : "border-dc-border hover:bg-dc-surface-hover"}`,
9239
+ className: `dc:flex dc:items-start dc:p-3 dc:rounded-md dc:border dc:cursor-pointer dc:transition-colors ${n ? "border-dc-primary bg-dc-surface-secondary" : "border-dc-border hover:bg-dc-surface-hover"}`,
9081
9240
  children: [/* @__PURE__ */ Z("input", {
9082
9241
  type: "checkbox",
9083
- checked: t,
9084
- onChange: () => l(e.id),
9242
+ checked: n,
9243
+ onChange: () => d(e.id),
9085
9244
  className: "dc:mt-0.5 dc:mr-3 dc:h-4 dc:w-4 dc:rounded border-dc-border dc:focus:ring-2 focus:ring-dc-primary",
9086
9245
  style: { accentColor: "var(--dc-primary)" }
9087
9246
  }), /* @__PURE__ */ Q("div", {
9088
9247
  className: "dc:flex-1 dc:min-w-0",
9089
- children: [/* @__PURE__ */ Q("div", {
9090
- className: "dc:flex dc:items-center dc:gap-2",
9091
- children: [/* @__PURE__ */ Z("span", {
9092
- className: "dc:font-medium dc:text-sm text-dc-text dc:truncate",
9093
- children: e.label
9094
- }), t && /* @__PURE__ */ Z("span", {
9095
- className: "dc:px-2 dc:py-0.5 dc:text-xs dc:rounded-full",
9096
- style: {
9097
- backgroundColor: "var(--dc-primary)",
9098
- color: "white"
9099
- },
9100
- children: o("portlet.filterConfig.applied")
9101
- })]
9102
- }), /* @__PURE__ */ Z("div", {
9103
- className: "dc:mt-1 dc:text-xs text-dc-text-secondary dc:break-words",
9104
- children: f(e)
9105
- })]
9248
+ children: [
9249
+ /* @__PURE__ */ Q("div", {
9250
+ className: "dc:flex dc:items-center dc:gap-2",
9251
+ children: [
9252
+ /* @__PURE__ */ Z("span", {
9253
+ className: "dc:font-medium dc:text-sm text-dc-text dc:truncate",
9254
+ children: e.label
9255
+ }),
9256
+ n && /* @__PURE__ */ Z("span", {
9257
+ className: "dc:px-2 dc:py-0.5 dc:text-xs dc:rounded-full",
9258
+ style: {
9259
+ backgroundColor: "var(--dc-primary)",
9260
+ color: "white"
9261
+ },
9262
+ children: c("portlet.filterConfig.applied")
9263
+ }),
9264
+ t?.member && /* @__PURE__ */ Z("span", {
9265
+ className: "dc:px-2 dc:py-0.5 dc:text-xs dc:rounded-full bg-dc-accent-bg text-dc-accent dc:truncate",
9266
+ title: t.member,
9267
+ children: c("portlet.filterConfig.mappedTo", { field: t.member })
9268
+ })
9269
+ ]
9270
+ }),
9271
+ /* @__PURE__ */ Z("div", {
9272
+ className: "dc:mt-1 dc:text-xs text-dc-text-secondary dc:break-words",
9273
+ children: g(e)
9274
+ }),
9275
+ i && a.length > 0 && /* @__PURE__ */ Q("div", {
9276
+ className: "dc:mt-2",
9277
+ onClick: (e) => e.preventDefault(),
9278
+ children: [
9279
+ /* @__PURE__ */ Z("label", {
9280
+ className: "dc:block dc:text-xs dc:font-medium text-dc-text-secondary dc:mb-1",
9281
+ children: c("portlet.filterConfig.applyToField")
9282
+ }),
9283
+ /* @__PURE__ */ Q("select", {
9284
+ value: t?.member || "",
9285
+ onChange: (t) => f(e.id, t.target.value),
9286
+ className: "dc:w-full dc:text-sm dc:rounded-md dc:border border-dc-border bg-dc-surface text-dc-text dc:px-2 dc:py-1.5 dc:focus:ring-2 focus:ring-dc-primary",
9287
+ children: [
9288
+ /* @__PURE__ */ Z("option", {
9289
+ value: "",
9290
+ children: c("portlet.filterConfig.applyToFieldDefault", { field: e.filter.member })
9291
+ }),
9292
+ o && t?.member && /* @__PURE__ */ Z("option", {
9293
+ value: t.member,
9294
+ children: t.member
9295
+ }),
9296
+ a.map((e) => /* @__PURE__ */ Z("optgroup", {
9297
+ label: e.cubeTitle,
9298
+ children: e.dimensions.map((e) => /* @__PURE__ */ Z("option", {
9299
+ value: e.name,
9300
+ children: e.title || e.name
9301
+ }, e.name))
9302
+ }, e.cubeName))
9303
+ ]
9304
+ }),
9305
+ o && /* @__PURE__ */ Z("p", {
9306
+ className: "dc:mt-1 dc:text-xs text-dc-warning",
9307
+ children: c("portlet.filterConfig.mappedFieldMissing", { field: t?.member || "" })
9308
+ })
9309
+ ]
9310
+ })
9311
+ ]
9106
9312
  })]
9107
9313
  }, e.id);
9108
9314
  })]
@@ -9111,14 +9317,14 @@ function Yi({ isOpen: e, onClose: t, dashboardFilters: n = [], currentMapping: r
9111
9317
  /* @__PURE__ */ Q("div", {
9112
9318
  className: "dc:px-6 dc:py-4 dc:border-t border-dc-border bg-dc-surface-secondary dc:rounded-b-lg dc:flex dc:justify-end dc:gap-3",
9113
9319
  children: [/* @__PURE__ */ Z("button", {
9114
- onClick: d,
9320
+ onClick: m,
9115
9321
  className: "dc:px-4 dc:py-2 dc:text-sm dc:font-medium dc:rounded-md dc:border border-dc-border bg-dc-surface hover:bg-dc-surface-hover dc:transition-colors text-dc-text",
9116
- children: o("common.actions.cancel")
9322
+ children: c("common.actions.cancel")
9117
9323
  }), /* @__PURE__ */ Z("button", {
9118
- onClick: u,
9324
+ onClick: p,
9119
9325
  className: "dc:px-4 dc:py-2 dc:text-sm dc:font-medium dc:rounded-md text-white dc:transition-colors",
9120
9326
  style: { backgroundColor: "var(--dc-primary)" },
9121
- children: o("portlet.filterConfig.applyFilters")
9327
+ children: c("portlet.filterConfig.applyFilters")
9122
9328
  })]
9123
9329
  })
9124
9330
  ]
@@ -9127,9 +9333,9 @@ function Yi({ isOpen: e, onClose: t, dashboardFilters: n = [], currentMapping: r
9127
9333
  }
9128
9334
  //#endregion
9129
9335
  //#region src/client/components/ConfirmModal.tsx
9130
- var Xi = ({ isOpen: e, onClose: t, onConfirm: n, title: r, message: i, confirmText: a, cancelText: o, confirmVariant: s = "primary", isLoading: c = !1 }) => {
9336
+ var aa = ({ isOpen: e, onClose: t, onConfirm: n, title: r, message: i, confirmText: a, cancelText: o, confirmVariant: s = "primary", isLoading: c = !1 }) => {
9131
9337
  let { t: l } = P(), u = r ?? l("common.actions.confirm"), d = a ?? l("common.actions.confirm"), f = o ?? l("common.actions.cancel");
9132
- return /* @__PURE__ */ Z(ki, {
9338
+ return /* @__PURE__ */ Z(Pi, {
9133
9339
  isOpen: e,
9134
9340
  onClose: t,
9135
9341
  title: u,
@@ -9186,44 +9392,46 @@ var Xi = ({ isOpen: e, onClose: t, onConfirm: n, title: r, message: i, confirmTe
9186
9392
  };
9187
9393
  //#endregion
9188
9394
  //#region src/client/components/dashboard/DashboardModals.tsx
9189
- function Zi() {
9190
- let { t: e } = P(), { config: t, colorPalette: n, dashboardFilters: r, isPortletModalOpen: i, editingPortlet: a, isTextModalOpen: o, editingTextPortlet: s, isFilterConfigModalOpen: c, filterConfigPortlet: l, deleteConfirmPortletId: u, handlePortletSave: d, handleSaveFilterConfig: f, actions: p } = Nn(), m = t.portlets.find((e) => e.id === u)?.title || e("dashboard.thisPortlet");
9395
+ function oa() {
9396
+ let { t: e } = P(), { config: t, colorPalette: n, dashboardFilters: r, schema: i, isPortletModalOpen: a, editingPortlet: o, isTextModalOpen: s, editingTextPortlet: c, isFilterConfigModalOpen: l, filterConfigPortlet: u, deleteConfirmPortletId: d, handlePortletSave: f, handleSaveFilterConfig: p, actions: m } = Rn(), h = t.portlets.find((e) => e.id === d)?.title || e("dashboard.thisPortlet");
9191
9397
  return /* @__PURE__ */ Q(X, { children: [
9192
- /* @__PURE__ */ Z(Wi, {
9193
- isOpen: i,
9194
- onClose: p.closePortletModal,
9195
- onSave: d,
9196
- portlet: a,
9197
- title: e(a ? "dashboard.editPortlet" : "dashboard.addNewPortlet"),
9198
- submitText: e(a ? "dashboard.updatePortlet" : "dashboard.addPortlet"),
9398
+ /* @__PURE__ */ Z(Yi, {
9399
+ isOpen: a,
9400
+ onClose: m.closePortletModal,
9401
+ onSave: f,
9402
+ portlet: o,
9403
+ title: e(o ? "dashboard.editPortlet" : "dashboard.addNewPortlet"),
9404
+ submitText: e(o ? "dashboard.updatePortlet" : "dashboard.addPortlet"),
9199
9405
  colorPalette: n,
9200
9406
  dashboardFilters: r
9201
9407
  }),
9202
- /* @__PURE__ */ Z(Ji, {
9203
- isOpen: o,
9204
- onClose: p.closeTextModal,
9205
- onSave: d,
9206
- portlet: s,
9408
+ /* @__PURE__ */ Z($i, {
9409
+ isOpen: s,
9410
+ onClose: m.closeTextModal,
9411
+ onSave: f,
9412
+ portlet: c,
9207
9413
  colorPalette: n,
9208
9414
  existingTitles: t.portlets.map((e) => e.title)
9209
9415
  }),
9210
- /* @__PURE__ */ Z(Yi, {
9211
- isOpen: c,
9212
- onClose: p.closeFilterConfig,
9416
+ /* @__PURE__ */ Z(ia, {
9417
+ isOpen: l,
9418
+ onClose: m.closeFilterConfig,
9213
9419
  dashboardFilters: r || [],
9214
- currentMapping: l?.dashboardFilterMapping || [],
9215
- onSave: f,
9216
- portletTitle: l?.title || ""
9420
+ currentMapping: u?.dashboardFilterMapping || [],
9421
+ onSave: p,
9422
+ portletTitle: u?.title || "",
9423
+ schema: i || null,
9424
+ portlet: u
9217
9425
  }),
9218
- /* @__PURE__ */ Z(Xi, {
9219
- isOpen: !!u,
9220
- onClose: p.closeDeleteConfirm,
9221
- onConfirm: p.confirmDelete,
9426
+ /* @__PURE__ */ Z(aa, {
9427
+ isOpen: !!d,
9428
+ onClose: m.closeDeleteConfirm,
9429
+ onConfirm: m.confirmDelete,
9222
9430
  title: e("dashboard.deletePortlet"),
9223
9431
  message: /* @__PURE__ */ Q(X, { children: [
9224
9432
  e("dashboard.deletePortletConfirm"),
9225
9433
  " ",
9226
- /* @__PURE__ */ Z("strong", { children: m }),
9434
+ /* @__PURE__ */ Z("strong", { children: h }),
9227
9435
  e("dashboard.deletePortletSuffix")
9228
9436
  ] }),
9229
9437
  confirmText: e("common.actions.delete"),
@@ -9233,21 +9441,21 @@ function Zi() {
9233
9441
  }
9234
9442
  //#endregion
9235
9443
  //#region src/client/components/DashboardGrid.tsx
9236
- function Qi(e) {
9444
+ function sa(e) {
9237
9445
  let t = !e.config.portlets || e.config.portlets.length === 0;
9238
- return /* @__PURE__ */ Q(Bn, {
9446
+ return /* @__PURE__ */ Q(Gn, {
9239
9447
  ...e,
9240
9448
  children: [
9241
- !t && !e.hideToolbar && /* @__PURE__ */ Z(sr, {}),
9242
- !t && /* @__PURE__ */ Z(xi, {}),
9243
- /* @__PURE__ */ Z(Oi, {}),
9244
- /* @__PURE__ */ Z(Zi, {})
9449
+ !t && !e.hideToolbar && /* @__PURE__ */ Z(fr, {}),
9450
+ !t && /* @__PURE__ */ Z(Ei, {}),
9451
+ /* @__PURE__ */ Z(Ni, {}),
9452
+ /* @__PURE__ */ Z(oa, {})
9245
9453
  ]
9246
9454
  });
9247
9455
  }
9248
9456
  //#endregion
9249
9457
  //#region src/client/components/AnalyticsDashboard.tsx
9250
- function $i({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent: r, onConfigChange: i, onSave: a, onSaveThumbnail: o, onDirtyStateChange: s }) {
9458
+ function ca({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent: r, onConfigChange: i, onSave: a, onSaveThumbnail: o, onDirtyStateChange: s }) {
9251
9459
  let { meta: c } = se(), { dashboardModes: l } = u(), { handleConfigChange: d, handleSave: f } = j({
9252
9460
  initialConfig: e,
9253
9461
  onConfigChange: i,
@@ -9277,7 +9485,7 @@ function $i({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
9277
9485
  ]);
9278
9486
  return /* @__PURE__ */ Z("div", {
9279
9487
  className: "dc:w-full",
9280
- children: /* @__PURE__ */ Z(Qi, {
9488
+ children: /* @__PURE__ */ Z(sa, {
9281
9489
  config: e,
9282
9490
  editable: t,
9283
9491
  dashboardFilters: p,
@@ -9287,7 +9495,7 @@ function $i({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
9287
9495
  onSaveThumbnail: o,
9288
9496
  colorPalette: q(() => {
9289
9497
  let t = e.colorPalette;
9290
- return Hn(t);
9498
+ return qn(t);
9291
9499
  }, [e.colorPalette]),
9292
9500
  schema: c,
9293
9501
  dashboardModes: l,
@@ -9297,8 +9505,8 @@ function $i({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
9297
9505
  }
9298
9506
  //#endregion
9299
9507
  //#region src/client/components/PortletContainer.tsx
9300
- function ea({ portlet: e, editable: t = !1, onEdit: n, onDelete: r, onRefresh: i }) {
9301
- let { analysisConfig: a } = q(() => St(e), [e]), o = a.charts[a.analysisType], s = q(() => JSON.stringify(a.query), [a.query]), c = o?.chartType || "line", l = o?.chartConfig, u = o?.displayConfig, [d, f] = Y(null), p = G((e) => {
9508
+ function la({ portlet: e, editable: t = !1, onEdit: n, onDelete: r, onRefresh: i }) {
9509
+ let { analysisConfig: a } = q(() => yt(e), [e]), o = a.charts[a.analysisType], s = q(() => JSON.stringify(a.query), [a.query]), c = o?.chartType || "line", l = o?.chartConfig, u = o?.displayConfig, [d, f] = Y(null), p = G((e) => {
9302
9510
  f(e);
9303
9511
  }, []);
9304
9512
  return /* @__PURE__ */ Q("div", {
@@ -9311,7 +9519,7 @@ function ea({ portlet: e, editable: t = !1, onEdit: n, onDelete: r, onRefresh: i
9311
9519
  children: [/* @__PURE__ */ Z("h3", {
9312
9520
  className: "dc:font-semibold dc:text-sm dc:truncate text-dc-text",
9313
9521
  children: e.title
9314
- }), d && /* @__PURE__ */ Z(an, {
9522
+ }), d && /* @__PURE__ */ Z(un, {
9315
9523
  chartConfig: d.chartConfig,
9316
9524
  displayConfig: d.displayConfig,
9317
9525
  queryObject: d.queryObject,
@@ -9380,7 +9588,7 @@ function ea({ portlet: e, editable: t = !1, onEdit: n, onDelete: r, onRefresh: i
9380
9588
  })]
9381
9589
  }), /* @__PURE__ */ Z("div", {
9382
9590
  className: "dc:px-2 dc:py-3 dc:md:px-4 dc:md:pt-6 dc:md:pb-4 dc:flex-1 dc:min-h-0",
9383
- children: /* @__PURE__ */ Z(jt, {
9591
+ children: /* @__PURE__ */ Z(It, {
9384
9592
  query: s,
9385
9593
  chartType: c,
9386
9594
  chartConfig: l,
@@ -9394,7 +9602,7 @@ function ea({ portlet: e, editable: t = !1, onEdit: n, onDelete: r, onRefresh: i
9394
9602
  }
9395
9603
  //#endregion
9396
9604
  //#region src/client/components/DashboardEditModal.tsx
9397
- function ta({ isOpen: e, onClose: t, onSave: n, title: r, submitText: i, initialName: a = "", initialDescription: o = "" }) {
9605
+ function ua({ isOpen: e, onClose: t, onSave: n, title: r, submitText: i, initialName: a = "", initialDescription: o = "" }) {
9398
9606
  let { t: s } = P(), [c, l] = Y(""), [u, d] = Y(""), [f, p] = Y(!1);
9399
9607
  K(() => {
9400
9608
  e && (l(a), d(o));
@@ -9418,7 +9626,7 @@ function ta({ isOpen: e, onClose: t, onSave: n, title: r, submitText: i, initial
9418
9626
  }, h = () => {
9419
9627
  l(""), d(""), p(!1), t();
9420
9628
  };
9421
- return /* @__PURE__ */ Z(ki, {
9629
+ return /* @__PURE__ */ Z(Pi, {
9422
9630
  isOpen: e,
9423
9631
  onClose: h,
9424
9632
  title: r,
@@ -9469,6 +9677,6 @@ function ta({ isOpen: e, onClose: t, onSave: n, title: r, submitText: i, initial
9469
9677
  });
9470
9678
  }
9471
9679
  //#endregion
9472
- export { ut as $, tn as A, Gt as B, Wn as C, wn as D, Nn as E, Kt as F, Bt as G, Wt as H, Zt as I, jt as J, Vt as K, Jt as L, zt as M, Ft as N, an as O, $t as P, vt as Q, Ut as R, sr as S, Bn as T, qt as U, Yt as V, Qt as W, St as X, Ct as Y, bt as Z, ur as _, ke as _t, Zi as a, tt as at, cr as b, Wi as c, $e as ct, Fi as d, at as dt, ct as et, ji as f, dt as ft, jr as g, Pe as gt, xi as h, Xe as ht, Qi as i, ft as it, en as j, rn as k, Ui as l, nt as lt, Oi as m, Qe as mt, ea as n, ot as nt, Xi as o, et as ot, ki as p, Ze as pt, Ht as q, $i as r, lt as rt, Ki as s, rt as st, ta as t, st as tt, zi as u, it as ut, dr as v, xe as vt, Hn as w, lr as x, vr as y, Xt as z };
9680
+ export { yt as $, sn as A, Xt as B, Yn as C, kn as D, Rn as E, Zt as F, Gt as G, Yt as H, nn as I, It as J, Kt as K, $t as L, Wt as M, Bt as N, un as O, an as P, Tt as Q, Jt as R, fr as S, Gn as T, Qt as U, en as V, rn as W, Ft as X, Pt as Y, Nt as Z, hr as _, ke as _t, oa as a, rt as at, pr as b, Yi as c, Qe as ct, Bi as d, Xe as dt, _t as et, Ii as f, $e as ft, Ir as g, Pe as gt, Ei as h, ct as ht, sa as i, it, on as j, ln as k, Ji as l, Ze as lt, Ni as m, nt as mt, la as n, st as nt, aa as o, ot, Pi as p, tt as pt, qt as q, ca as r, at as rt, Zi as s, lt as st, ua as t, ht as tt, Wi as u, et as ut, gr as v, xe as vt, qn as w, mr as x, Cr as y, tn as z };
9473
9681
 
9474
- //# sourceMappingURL=DashboardEditModal-6KRE36mm.js.map
9682
+ //# sourceMappingURL=DashboardEditModal-CjCIAT-J.js.map