@memberjunction/ng-dashboards 5.24.0 → 5.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts +15 -33
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +233 -493
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/agents/agent-editor.component.d.ts +2 -2
  6. package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
  7. package/dist/AI/components/agents/agent-editor.component.js +7 -7
  8. package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
  9. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +43 -6
  10. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  11. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +1135 -864
  12. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  13. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +4 -3
  14. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  15. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +1 -0
  16. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  17. package/dist/AI/components/execution-monitoring.component.d.ts +4 -5
  18. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  19. package/dist/AI/components/execution-monitoring.component.js +14 -15
  20. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  21. package/dist/AI/components/models/model-management.component.d.ts +4 -4
  22. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  23. package/dist/AI/components/models/model-management.component.js +5 -5
  24. package/dist/AI/components/models/model-management.component.js.map +1 -1
  25. package/dist/AI/components/prompts/prompt-management.component.d.ts +4 -4
  26. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  27. package/dist/AI/components/prompts/prompt-management.component.js +5 -5
  28. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  29. package/dist/AI/components/requests/agent-requests-resource.component.d.ts +2 -1
  30. package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
  31. package/dist/AI/components/requests/agent-requests-resource.component.js +1 -0
  32. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  33. package/dist/AI/components/system/system-configuration.component.d.ts +2 -3
  34. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  35. package/dist/AI/components/system/system-configuration.component.js +9 -11
  36. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  37. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +44 -8
  38. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  39. package/dist/AI/components/vectors/vector-management-resource.component.js +648 -384
  40. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  41. package/dist/APIKeys/api-keys-resource.component.d.ts +2 -1
  42. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  43. package/dist/APIKeys/api-keys-resource.component.js +2 -0
  44. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  45. package/dist/Actions/components/actions-overview.component.d.ts +4 -5
  46. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  47. package/dist/Actions/components/actions-overview.component.js +11 -12
  48. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  49. package/dist/Actions/components/code-management.component.d.ts +2 -3
  50. package/dist/Actions/components/code-management.component.d.ts.map +1 -1
  51. package/dist/Actions/components/code-management.component.js +4 -6
  52. package/dist/Actions/components/code-management.component.js.map +1 -1
  53. package/dist/Actions/components/entity-integration.component.d.ts +2 -3
  54. package/dist/Actions/components/entity-integration.component.d.ts.map +1 -1
  55. package/dist/Actions/components/entity-integration.component.js +4 -6
  56. package/dist/Actions/components/entity-integration.component.js.map +1 -1
  57. package/dist/Actions/components/execution-monitoring.component.d.ts +4 -5
  58. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  59. package/dist/Actions/components/execution-monitoring.component.js +10 -11
  60. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  61. package/dist/Actions/components/explorer/action-explorer.component.d.ts +13 -12
  62. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  63. package/dist/Actions/components/explorer/action-explorer.component.js +39 -66
  64. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  65. package/dist/Actions/components/scheduled-actions.component.d.ts +2 -3
  66. package/dist/Actions/components/scheduled-actions.component.d.ts.map +1 -1
  67. package/dist/Actions/components/scheduled-actions.component.js +4 -6
  68. package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
  69. package/dist/Actions/components/security-permissions.component.d.ts +2 -3
  70. package/dist/Actions/components/security-permissions.component.d.ts.map +1 -1
  71. package/dist/Actions/components/security-permissions.component.js +4 -6
  72. package/dist/Actions/components/security-permissions.component.js.map +1 -1
  73. package/dist/ApplicationRoles/application-roles-resource.component.d.ts +112 -0
  74. package/dist/ApplicationRoles/application-roles-resource.component.d.ts.map +1 -0
  75. package/dist/ApplicationRoles/application-roles-resource.component.js +532 -0
  76. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -0
  77. package/dist/Communication/communication-dashboard.component.d.ts.map +1 -1
  78. package/dist/Communication/communication-dashboard.component.js +1 -0
  79. package/dist/Communication/communication-dashboard.component.js.map +1 -1
  80. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  81. package/dist/Communication/communication-logs-resource.component.js +4 -1
  82. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  83. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  84. package/dist/Communication/communication-monitor-resource.component.js +4 -1
  85. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  86. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  87. package/dist/Communication/communication-providers-resource.component.js +4 -1
  88. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  89. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  90. package/dist/Communication/communication-runs-resource.component.js +4 -1
  91. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  92. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  93. package/dist/Communication/communication-templates-resource.component.js +4 -1
  94. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  95. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +2 -1
  96. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  97. package/dist/ComponentStudio/component-studio-dashboard.component.js +1 -0
  98. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  99. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  100. package/dist/Credentials/components/credentials-audit-resource.component.js +2 -0
  101. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  102. package/dist/Credentials/components/credentials-categories-resource.component.d.ts +2 -3
  103. package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
  104. package/dist/Credentials/components/credentials-categories-resource.component.js +10 -11
  105. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  106. package/dist/Credentials/components/credentials-list-resource.component.d.ts +2 -1
  107. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  108. package/dist/Credentials/components/credentials-list-resource.component.js +2 -0
  109. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  110. package/dist/Credentials/components/credentials-overview-resource.component.d.ts +4 -4
  111. package/dist/Credentials/components/credentials-overview-resource.component.d.ts.map +1 -1
  112. package/dist/Credentials/components/credentials-overview-resource.component.js +8 -9
  113. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  114. package/dist/Credentials/components/credentials-types-resource.component.d.ts +2 -3
  115. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  116. package/dist/Credentials/components/credentials-types-resource.component.js +11 -12
  117. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  118. package/dist/Credentials/credentials-dashboard.component.d.ts.map +1 -1
  119. package/dist/Credentials/credentials-dashboard.component.js +1 -0
  120. package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
  121. package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts +2 -3
  122. package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts.map +1 -1
  123. package/dist/DashboardBrowser/dashboard-browser-resource.component.js +9 -10
  124. package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
  125. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +2 -2
  126. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +23 -15
  127. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
  128. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +167 -213
  129. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
  130. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +68 -32
  131. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  132. package/dist/DataExplorer/data-explorer-dashboard.component.js +453 -420
  133. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  134. package/dist/DataExplorer/data-explorer-resource.component.d.ts +10 -3
  135. package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
  136. package/dist/DataExplorer/data-explorer-resource.component.js +35 -11
  137. package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
  138. package/dist/DataExplorer/models/explorer-state.interface.d.ts +12 -3
  139. package/dist/DataExplorer/models/explorer-state.interface.d.ts.map +1 -1
  140. package/dist/DataExplorer/models/explorer-state.interface.js +5 -1
  141. package/dist/DataExplorer/models/explorer-state.interface.js.map +1 -1
  142. package/dist/Home/home-dashboard.component.d.ts +4 -4
  143. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  144. package/dist/Home/home-dashboard.component.js +4 -5
  145. package/dist/Home/home-dashboard.component.js.map +1 -1
  146. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  147. package/dist/Integration/components/activity/activity.component.js +1 -0
  148. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  149. package/dist/Integration/components/connections/connections.component.d.ts.map +1 -1
  150. package/dist/Integration/components/connections/connections.component.js +2 -0
  151. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  152. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.d.ts.map +1 -1
  153. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +1 -0
  154. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  155. package/dist/Integration/components/overview/overview.component.d.ts.map +1 -1
  156. package/dist/Integration/components/overview/overview.component.js +2 -0
  157. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  158. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  159. package/dist/Integration/components/pipelines/pipelines.component.js +2 -0
  160. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  161. package/dist/Integration/components/schedules/schedules.component.d.ts.map +1 -1
  162. package/dist/Integration/components/schedules/schedules.component.js +2 -0
  163. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  164. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +4 -3
  165. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  166. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +1 -0
  167. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  168. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +4 -3
  169. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
  170. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +1 -0
  171. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  172. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +13 -3
  173. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
  174. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +220 -138
  175. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  176. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +4 -3
  177. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
  178. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +1 -0
  179. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  180. package/dist/KnowledgeHub/index.d.ts +0 -1
  181. package/dist/KnowledgeHub/index.d.ts.map +1 -1
  182. package/dist/KnowledgeHub/index.js +0 -1
  183. package/dist/KnowledgeHub/index.js.map +1 -1
  184. package/dist/Lists/components/lists-browse-resource.component.d.ts +2 -1
  185. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  186. package/dist/Lists/components/lists-browse-resource.component.js +2 -0
  187. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  188. package/dist/Lists/components/lists-categories-resource.component.d.ts +2 -1
  189. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  190. package/dist/Lists/components/lists-categories-resource.component.js +2 -0
  191. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  192. package/dist/Lists/components/lists-my-lists-resource.component.d.ts +2 -1
  193. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  194. package/dist/Lists/components/lists-my-lists-resource.component.js +2 -0
  195. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  196. package/dist/Lists/components/lists-operations-resource.component.d.ts +2 -1
  197. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  198. package/dist/Lists/components/lists-operations-resource.component.js +2 -0
  199. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  200. package/dist/MCP/mcp-dashboard.component.d.ts +7 -28
  201. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  202. package/dist/MCP/mcp-dashboard.component.js +25 -107
  203. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  204. package/dist/MCP/mcp-resource.component.d.ts.map +1 -1
  205. package/dist/MCP/mcp-resource.component.js +1 -0
  206. package/dist/MCP/mcp-resource.component.js.map +1 -1
  207. package/dist/QueryBrowser/query-browser-resource.component.d.ts +10 -23
  208. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  209. package/dist/QueryBrowser/query-browser-resource.component.js +41 -103
  210. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  211. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  212. package/dist/Scheduling/components/scheduling-activity-resource.component.js +1 -0
  213. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  214. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  215. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +1 -0
  216. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  217. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  218. package/dist/Scheduling/components/scheduling-overview-resource.component.js +1 -0
  219. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  220. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  221. package/dist/Scheduling/scheduling-dashboard.component.js +1 -0
  222. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  223. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +4 -4
  224. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  225. package/dist/SystemDiagnostics/system-diagnostics.component.js +9 -10
  226. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  227. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  228. package/dist/Testing/components/testing-analytics-resource.component.js +2 -0
  229. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  230. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
  231. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  232. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +2 -0
  233. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  234. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  235. package/dist/Testing/components/testing-explorer-resource.component.js +2 -0
  236. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  237. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  238. package/dist/Testing/components/testing-review-resource.component.js +2 -0
  239. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  240. package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
  241. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  242. package/dist/Testing/components/testing-runs-resource.component.js +2 -0
  243. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  244. package/dist/Testing/testing-dashboard.component.d.ts +2 -1
  245. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  246. package/dist/Testing/testing-dashboard.component.js +1 -0
  247. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  248. package/dist/VersionHistory/components/diff-resource.component.d.ts +4 -4
  249. package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -1
  250. package/dist/VersionHistory/components/diff-resource.component.js +9 -10
  251. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  252. package/dist/VersionHistory/components/graph-resource.component.d.ts +2 -1
  253. package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -1
  254. package/dist/VersionHistory/components/graph-resource.component.js +2 -0
  255. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  256. package/dist/VersionHistory/components/labels-resource.component.d.ts +4 -4
  257. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  258. package/dist/VersionHistory/components/labels-resource.component.js +10 -11
  259. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  260. package/dist/VersionHistory/components/restore-resource.component.d.ts +2 -1
  261. package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -1
  262. package/dist/VersionHistory/components/restore-resource.component.js +2 -0
  263. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  264. package/dist/ai-dashboards.module.d.ts +19 -19
  265. package/dist/ai-dashboards.module.d.ts.map +1 -1
  266. package/dist/ai-dashboards.module.js +4 -5
  267. package/dist/ai-dashboards.module.js.map +1 -1
  268. package/dist/core-dashboards.module.d.ts +19 -18
  269. package/dist/core-dashboards.module.d.ts.map +1 -1
  270. package/dist/core-dashboards.module.js +8 -0
  271. package/dist/core-dashboards.module.js.map +1 -1
  272. package/dist/data-explorer-dashboards.module.d.ts +2 -1
  273. package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
  274. package/dist/data-explorer-dashboards.module.js +7 -3
  275. package/dist/data-explorer-dashboards.module.js.map +1 -1
  276. package/dist/public-api.d.ts +1 -1
  277. package/dist/public-api.d.ts.map +1 -1
  278. package/dist/public-api.js +2 -1
  279. package/dist/public-api.js.map +1 -1
  280. package/package.json +47 -47
  281. package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.d.ts +0 -166
  282. package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.d.ts.map +0 -1
  283. package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.js +0 -991
  284. package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.js.map +0 -1
@@ -1,13 +1,14 @@
1
- import { Component, Input, Output, EventEmitter } from '@angular/core';
1
+ import { Component, Input, Output, EventEmitter, ViewChild } from '@angular/core';
2
2
  import { Metadata, CompositeKey } from '@memberjunction/core';
3
+ import { UUIDsEqual } from '@memberjunction/global';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "@angular/forms";
6
+ import * as i2 from "@memberjunction/ng-trees";
7
+ const _c0 = ["entityTree"];
5
8
  const _forTrack0 = ($index, $item) => $item.displayName;
6
9
  const _forTrack1 = ($index, $item) => $item.compositeKeyString;
7
- const _forTrack2 = ($index, $item) => $item.applicationId;
8
- const _forTrack3 = ($index, $item) => $item.ID;
9
10
  function NavigationPanelComponent_Conditional_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
10
- i0.ɵɵelementStart(0, "span", 9);
11
+ i0.ɵɵelementStart(0, "span", 10);
11
12
  i0.ɵɵtext(1);
12
13
  i0.ɵɵelementEnd();
13
14
  } if (rf & 2) {
@@ -16,16 +17,16 @@ function NavigationPanelComponent_Conditional_3_Conditional_6_Template(rf, ctx)
16
17
  i0.ɵɵtextInterpolate1("(", ctx_r1.favoriteRecords.length + ctx_r1.favoriteEntities.length, ")");
17
18
  } }
18
19
  function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_1_Template(rf, ctx) { if (rf & 1) {
19
- i0.ɵɵelementStart(0, "div", 17)(1, "span");
20
+ i0.ɵɵelementStart(0, "div", 18)(1, "span");
20
21
  i0.ɵɵtext(2, "No favorites yet");
21
22
  i0.ɵɵelementEnd()();
22
23
  } }
23
24
  function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_3_Template(rf, ctx) { if (rf & 1) {
24
25
  const _r3 = i0.ɵɵgetCurrentView();
25
- i0.ɵɵelementStart(0, "div", 21);
26
+ i0.ɵɵelementStart(0, "div", 22);
26
27
  i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_3_Template_div_click_0_listener() { const favorite_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onFavoriteClick(favorite_r4)); });
27
28
  i0.ɵɵelement(1, "i");
28
- i0.ɵɵelementStart(2, "span", 22);
29
+ i0.ɵɵelementStart(2, "span", 23);
29
30
  i0.ɵɵtext(3);
30
31
  i0.ɵɵelementEnd()();
31
32
  } if (rf & 2) {
@@ -39,10 +40,10 @@ function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_
39
40
  } }
40
41
  function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_5_Template(rf, ctx) { if (rf & 1) {
41
42
  const _r5 = i0.ɵɵgetCurrentView();
42
- i0.ɵɵelementStart(0, "div", 21);
43
+ i0.ɵɵelementStart(0, "div", 22);
43
44
  i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_5_Template_div_click_0_listener() { const favorite_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onFavoriteClick(favorite_r6)); });
44
45
  i0.ɵɵelement(1, "i");
45
- i0.ɵɵelementStart(2, "span", 22);
46
+ i0.ɵɵelementStart(2, "span", 23);
46
47
  i0.ɵɵtext(3);
47
48
  i0.ɵɵelementEnd()();
48
49
  } if (rf & 2) {
@@ -55,9 +56,9 @@ function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_
55
56
  i0.ɵɵtextInterpolate(favorite_r6.displayName);
56
57
  } }
57
58
  function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_Template(rf, ctx) { if (rf & 1) {
58
- i0.ɵɵelementStart(0, "div", 18)(1, "div", 19);
59
- i0.ɵɵrepeaterCreate(2, NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_3_Template, 4, 4, "div", 20, _forTrack0);
60
- i0.ɵɵrepeaterCreate(4, NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_5_Template, 4, 4, "div", 20, _forTrack0);
59
+ i0.ɵɵelementStart(0, "div", 19)(1, "div", 20);
60
+ i0.ɵɵrepeaterCreate(2, NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_3_Template, 4, 4, "div", 21, _forTrack0);
61
+ i0.ɵɵrepeaterCreate(4, NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_5_Template, 4, 4, "div", 21, _forTrack0);
61
62
  i0.ɵɵelementEnd()();
62
63
  } if (rf & 2) {
63
64
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -67,8 +68,8 @@ function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_Temp
67
68
  i0.ɵɵrepeater(ctx_r1.favoriteRecords);
68
69
  } }
69
70
  function NavigationPanelComponent_Conditional_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
70
- i0.ɵɵelementStart(0, "div", 11);
71
- i0.ɵɵconditionalCreate(1, NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_1_Template, 3, 0, "div", 17)(2, NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_Template, 6, 0, "div", 18);
71
+ i0.ɵɵelementStart(0, "div", 12);
72
+ i0.ɵɵconditionalCreate(1, NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_1_Template, 3, 0, "div", 18)(2, NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_Template, 6, 0, "div", 19);
72
73
  i0.ɵɵelementEnd();
73
74
  } if (rf & 2) {
74
75
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -76,7 +77,7 @@ function NavigationPanelComponent_Conditional_3_Conditional_8_Template(rf, ctx)
76
77
  i0.ɵɵconditional(ctx_r1.favoriteRecords.length + ctx_r1.favoriteEntities.length === 0 ? 1 : 2);
77
78
  } }
78
79
  function NavigationPanelComponent_Conditional_3_Conditional_14_Template(rf, ctx) { if (rf & 1) {
79
- i0.ɵɵelementStart(0, "span", 9);
80
+ i0.ɵɵelementStart(0, "span", 10);
80
81
  i0.ɵɵtext(1);
81
82
  i0.ɵɵelementEnd();
82
83
  } if (rf & 2) {
@@ -85,19 +86,19 @@ function NavigationPanelComponent_Conditional_3_Conditional_14_Template(rf, ctx)
85
86
  i0.ɵɵtextInterpolate1("(", ctx_r1.filteredRecentItems.length, ")");
86
87
  } }
87
88
  function NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_1_Template(rf, ctx) { if (rf & 1) {
88
- i0.ɵɵelementStart(0, "div", 17)(1, "span");
89
+ i0.ɵɵelementStart(0, "div", 18)(1, "span");
89
90
  i0.ɵɵtext(2, "No recent items");
90
91
  i0.ɵɵelementEnd()();
91
92
  } }
92
93
  function NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_For_3_Template(rf, ctx) { if (rf & 1) {
93
94
  const _r7 = i0.ɵɵgetCurrentView();
94
- i0.ɵɵelementStart(0, "div", 21);
95
+ i0.ɵɵelementStart(0, "div", 22);
95
96
  i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_For_3_Template_div_click_0_listener() { const item_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onRecentClick(item_r8)); });
96
97
  i0.ɵɵelement(1, "i");
97
- i0.ɵɵelementStart(2, "div", 23)(3, "span", 22);
98
+ i0.ɵɵelementStart(2, "div", 24)(3, "span", 23);
98
99
  i0.ɵɵtext(4);
99
100
  i0.ɵɵelementEnd();
100
- i0.ɵɵelementStart(5, "span", 24);
101
+ i0.ɵɵelementStart(5, "span", 25);
101
102
  i0.ɵɵtext(6);
102
103
  i0.ɵɵelementEnd()()();
103
104
  } if (rf & 2) {
@@ -112,8 +113,8 @@ function NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_For
112
113
  i0.ɵɵtextInterpolate(ctx_r1.formatTimestamp(item_r8.timestamp));
113
114
  } }
114
115
  function NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_Template(rf, ctx) { if (rf & 1) {
115
- i0.ɵɵelementStart(0, "div", 18)(1, "div", 19);
116
- i0.ɵɵrepeaterCreate(2, NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_For_3_Template, 7, 5, "div", 20, _forTrack1);
116
+ i0.ɵɵelementStart(0, "div", 19)(1, "div", 20);
117
+ i0.ɵɵrepeaterCreate(2, NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_For_3_Template, 7, 5, "div", 21, _forTrack1);
117
118
  i0.ɵɵelementEnd()();
118
119
  } if (rf & 2) {
119
120
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -121,8 +122,8 @@ function NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_Tem
121
122
  i0.ɵɵrepeater(ctx_r1.filteredRecentItems);
122
123
  } }
123
124
  function NavigationPanelComponent_Conditional_3_Conditional_16_Template(rf, ctx) { if (rf & 1) {
124
- i0.ɵɵelementStart(0, "div", 11);
125
- i0.ɵɵconditionalCreate(1, NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_1_Template, 3, 0, "div", 17)(2, NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_Template, 4, 0, "div", 18);
125
+ i0.ɵɵelementStart(0, "div", 12);
126
+ i0.ɵɵconditionalCreate(1, NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_1_Template, 3, 0, "div", 18)(2, NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_Template, 4, 0, "div", 19);
126
127
  i0.ɵɵelementEnd();
127
128
  } if (rf & 2) {
128
129
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -132,166 +133,68 @@ function NavigationPanelComponent_Conditional_3_Conditional_16_Template(rf, ctx)
132
133
  function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_4_Template(rf, ctx) { if (rf & 1) {
133
134
  const _r10 = i0.ɵɵgetCurrentView();
134
135
  i0.ɵɵelementStart(0, "button", 31);
135
- i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.entitySearchTerm = ""); });
136
+ i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.clearEntitySearch()); });
136
137
  i0.ɵɵelement(1, "i", 32);
137
138
  i0.ɵɵelementEnd();
138
139
  } }
139
- function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_7_For_1_Conditional_8_For_2_Template(rf, ctx) { if (rf & 1) {
140
- const _r13 = i0.ɵɵgetCurrentView();
141
- i0.ɵɵelementStart(0, "div", 41);
142
- i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_7_For_1_Conditional_8_For_2_Template_div_click_0_listener() { const entity_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.onEntityClick(entity_r14)); });
143
- i0.ɵɵelement(1, "i");
144
- i0.ɵɵelementStart(2, "span", 22);
145
- i0.ɵɵtext(3);
146
- i0.ɵɵelementEnd()();
147
- } if (rf & 2) {
148
- const entity_r14 = ctx.$implicit;
149
- const ctx_r1 = i0.ɵɵnextContext(6);
150
- i0.ɵɵclassProp("selected", ctx_r1.isEntitySelected(entity_r14));
151
- i0.ɵɵproperty("title", entity_r14.Description || entity_r14.DisplayNameOrName);
152
- i0.ɵɵadvance();
153
- i0.ɵɵclassMap(ctx_r1.getEntityIcon(entity_r14));
154
- i0.ɵɵadvance(2);
155
- i0.ɵɵtextInterpolate(entity_r14.DisplayNameOrName);
156
- } }
157
- function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_7_For_1_Conditional_8_Template(rf, ctx) { if (rf & 1) {
158
- i0.ɵɵelementStart(0, "div", 39);
159
- i0.ɵɵrepeaterCreate(1, NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_7_For_1_Conditional_8_For_2_Template, 4, 6, "div", 40, _forTrack3);
160
- i0.ɵɵelementEnd();
161
- } if (rf & 2) {
162
- const group_r12 = i0.ɵɵnextContext().$implicit;
163
- i0.ɵɵadvance();
164
- i0.ɵɵrepeater(group_r12.entities);
165
- } }
166
- function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_7_For_1_Template(rf, ctx) { if (rf & 1) {
167
- const _r11 = i0.ɵɵgetCurrentView();
168
- i0.ɵɵelementStart(0, "div", 33)(1, "div", 34);
169
- i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_7_For_1_Template_div_click_1_listener() { const group_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onNavGroupToggle(group_r12.applicationId)); });
170
- i0.ɵɵelement(2, "i", 35);
171
- i0.ɵɵelementStart(3, "span", 36);
172
- i0.ɵɵtext(4);
173
- i0.ɵɵelementEnd();
174
- i0.ɵɵelementStart(5, "span", 37);
175
- i0.ɵɵtext(6);
176
- i0.ɵɵelementEnd();
177
- i0.ɵɵelement(7, "i", 38);
178
- i0.ɵɵelementEnd();
179
- i0.ɵɵconditionalCreate(8, NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_7_For_1_Conditional_8_Template, 3, 0, "div", 39);
180
- i0.ɵɵelementEnd();
181
- } if (rf & 2) {
182
- const group_r12 = ctx.$implicit;
183
- const ctx_r1 = i0.ɵɵnextContext(4);
184
- i0.ɵɵadvance(2);
185
- i0.ɵɵclassMap(group_r12.applicationIcon || "fa-solid fa-folder");
186
- i0.ɵɵstyleProp("color", group_r12.applicationColor || null);
187
- i0.ɵɵadvance(2);
188
- i0.ɵɵtextInterpolate(group_r12.applicationName);
189
- i0.ɵɵadvance(2);
190
- i0.ɵɵtextInterpolate(group_r12.entities.length);
191
- i0.ɵɵadvance();
192
- i0.ɵɵclassProp("expanded", ctx_r1.isNavGroupExpanded(group_r12.applicationId));
193
- i0.ɵɵadvance();
194
- i0.ɵɵconditional(ctx_r1.isNavGroupExpanded(group_r12.applicationId) ? 8 : -1);
195
- } }
196
- function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_7_Template(rf, ctx) { if (rf & 1) {
197
- i0.ɵɵrepeaterCreate(0, NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_7_For_1_Template, 9, 9, "div", 33, _forTrack2);
198
- } if (rf & 2) {
199
- const ctx_r1 = i0.ɵɵnextContext(3);
200
- i0.ɵɵrepeater(ctx_r1.filteredNavGroups);
201
- } }
202
- function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_8_For_1_Template(rf, ctx) { if (rf & 1) {
203
- const _r15 = i0.ɵɵgetCurrentView();
204
- i0.ɵɵelementStart(0, "div", 41);
205
- i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_8_For_1_Template_div_click_0_listener() { const entity_r16 = i0.ɵɵrestoreView(_r15).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onEntityClick(entity_r16)); });
206
- i0.ɵɵelement(1, "i");
207
- i0.ɵɵelementStart(2, "span", 22);
208
- i0.ɵɵtext(3);
209
- i0.ɵɵelementEnd()();
210
- } if (rf & 2) {
211
- const entity_r16 = ctx.$implicit;
212
- const ctx_r1 = i0.ɵɵnextContext(4);
213
- i0.ɵɵclassProp("selected", ctx_r1.isEntitySelected(entity_r16));
214
- i0.ɵɵproperty("title", entity_r16.Description || entity_r16.DisplayNameOrName);
215
- i0.ɵɵadvance();
216
- i0.ɵɵclassMap(ctx_r1.getEntityIcon(entity_r16));
217
- i0.ɵɵadvance(2);
218
- i0.ɵɵtextInterpolate(entity_r16.DisplayNameOrName);
219
- } }
220
- function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_8_Template(rf, ctx) { if (rf & 1) {
221
- i0.ɵɵrepeaterCreate(0, NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_8_For_1_Template, 4, 6, "div", 40, _forTrack3);
222
- } if (rf & 2) {
223
- const ctx_r1 = i0.ɵɵnextContext(3);
224
- i0.ɵɵrepeater(ctx_r1.filteredEntities);
225
- } }
226
- function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_9_Template(rf, ctx) { if (rf & 1) {
227
- i0.ɵɵelementStart(0, "div", 17)(1, "span");
228
- i0.ɵɵtext(2);
229
- i0.ɵɵelementEnd()();
230
- } if (rf & 2) {
231
- const ctx_r1 = i0.ɵɵnextContext(3);
232
- i0.ɵɵadvance(2);
233
- i0.ɵɵtextInterpolate1("No entities match \"", ctx_r1.entitySearchTerm, "\"");
234
- } }
235
140
  function NavigationPanelComponent_Conditional_3_Conditional_25_Template(rf, ctx) { if (rf & 1) {
236
141
  const _r9 = i0.ɵɵgetCurrentView();
237
- i0.ɵɵelementStart(0, "div", 16)(1, "div", 25);
238
- i0.ɵɵelement(2, "i", 26);
239
- i0.ɵɵelementStart(3, "input", 27);
142
+ i0.ɵɵelementStart(0, "div", 17)(1, "div", 26);
143
+ i0.ɵɵelement(2, "i", 27);
144
+ i0.ɵɵelementStart(3, "input", 28);
240
145
  i0.ɵɵtwoWayListener("ngModelChange", function NavigationPanelComponent_Conditional_3_Conditional_25_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.entitySearchTerm, $event) || (ctx_r1.entitySearchTerm = $event); return i0.ɵɵresetView($event); });
146
+ i0.ɵɵlistener("ngModelChange", function NavigationPanelComponent_Conditional_3_Conditional_25_Template_input_ngModelChange_3_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onEntitySearchChanged()); });
241
147
  i0.ɵɵelementEnd();
242
- i0.ɵɵconditionalCreate(4, NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_4_Template, 2, 0, "button", 28);
148
+ i0.ɵɵconditionalCreate(4, NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_4_Template, 2, 0, "button", 29);
243
149
  i0.ɵɵelementEnd();
244
- i0.ɵɵelementStart(5, "div", 29)(6, "div", 30);
245
- i0.ɵɵconditionalCreate(7, NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_7_Template, 2, 0)(8, NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_8_Template, 2, 0);
246
- i0.ɵɵconditionalCreate(9, NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_9_Template, 3, 1, "div", 17);
247
- i0.ɵɵelementEnd()()();
150
+ i0.ɵɵelementStart(5, "mj-tree", 30, 0);
151
+ i0.ɵɵlistener("SelectionChange", function NavigationPanelComponent_Conditional_3_Conditional_25_Template_mj_tree_SelectionChange_5_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onTreeEntitySelected($event)); });
152
+ i0.ɵɵelementEnd()();
248
153
  } if (rf & 2) {
249
154
  const ctx_r1 = i0.ɵɵnextContext(2);
250
155
  i0.ɵɵadvance(3);
251
156
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.entitySearchTerm);
252
157
  i0.ɵɵadvance();
253
158
  i0.ɵɵconditional(ctx_r1.entitySearchTerm ? 4 : -1);
254
- i0.ɵɵadvance(3);
255
- i0.ɵɵconditional(ctx_r1.hasAppGroups ? 7 : 8);
256
- i0.ɵɵadvance(2);
257
- i0.ɵɵconditional(ctx_r1.filteredEntities.length === 0 && ctx_r1.entitySearchTerm ? 9 : -1);
159
+ i0.ɵɵadvance();
160
+ i0.ɵɵproperty("BranchConfig", ctx_r1.treeBranchConfig)("LeafConfig", ctx_r1.treeLeafConfig)("SelectionMode", "single")("SelectableTypes", "leaf")("SelectedIDs", ctx_r1.selectedEntityIds)("ShowIcons", true)("ShowExpandCollapseAll", false)("AnimateExpandCollapse", true)("EmptyMessage", ctx_r1.entitySearchTerm ? "No matches for: " + ctx_r1.entitySearchTerm : "No entities available")("EmptyIcon", "fa-solid fa-database");
258
161
  } }
259
162
  function NavigationPanelComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
260
163
  const _r1 = i0.ɵɵgetCurrentView();
261
- i0.ɵɵelementStart(0, "div", 3)(1, "div", 5)(2, "div", 6);
164
+ i0.ɵɵelementStart(0, "div", 4)(1, "div", 6)(2, "div", 7);
262
165
  i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Template_div_click_2_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSectionToggle("favorites")); });
263
- i0.ɵɵelement(3, "i", 7);
264
- i0.ɵɵelementStart(4, "span", 8);
166
+ i0.ɵɵelement(3, "i", 8);
167
+ i0.ɵɵelementStart(4, "span", 9);
265
168
  i0.ɵɵtext(5, "Favorites");
266
169
  i0.ɵɵelementEnd();
267
- i0.ɵɵconditionalCreate(6, NavigationPanelComponent_Conditional_3_Conditional_6_Template, 2, 1, "span", 9);
268
- i0.ɵɵelement(7, "i", 10);
170
+ i0.ɵɵconditionalCreate(6, NavigationPanelComponent_Conditional_3_Conditional_6_Template, 2, 1, "span", 10);
171
+ i0.ɵɵelement(7, "i", 11);
269
172
  i0.ɵɵelementEnd();
270
- i0.ɵɵconditionalCreate(8, NavigationPanelComponent_Conditional_3_Conditional_8_Template, 3, 1, "div", 11);
173
+ i0.ɵɵconditionalCreate(8, NavigationPanelComponent_Conditional_3_Conditional_8_Template, 3, 1, "div", 12);
271
174
  i0.ɵɵelementEnd();
272
- i0.ɵɵelementStart(9, "div", 12)(10, "div", 6);
175
+ i0.ɵɵelementStart(9, "div", 13)(10, "div", 7);
273
176
  i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Template_div_click_10_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSectionToggle("recent")); });
274
- i0.ɵɵelement(11, "i", 13);
275
- i0.ɵɵelementStart(12, "span", 8);
177
+ i0.ɵɵelement(11, "i", 14);
178
+ i0.ɵɵelementStart(12, "span", 9);
276
179
  i0.ɵɵtext(13, "Recent");
277
180
  i0.ɵɵelementEnd();
278
- i0.ɵɵconditionalCreate(14, NavigationPanelComponent_Conditional_3_Conditional_14_Template, 2, 1, "span", 9);
279
- i0.ɵɵelement(15, "i", 10);
181
+ i0.ɵɵconditionalCreate(14, NavigationPanelComponent_Conditional_3_Conditional_14_Template, 2, 1, "span", 10);
182
+ i0.ɵɵelement(15, "i", 11);
280
183
  i0.ɵɵelementEnd();
281
- i0.ɵɵconditionalCreate(16, NavigationPanelComponent_Conditional_3_Conditional_16_Template, 3, 1, "div", 11);
184
+ i0.ɵɵconditionalCreate(16, NavigationPanelComponent_Conditional_3_Conditional_16_Template, 3, 1, "div", 12);
282
185
  i0.ɵɵelementEnd();
283
- i0.ɵɵelementStart(17, "div", 14)(18, "div", 6);
186
+ i0.ɵɵelementStart(17, "div", 15)(18, "div", 7);
284
187
  i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Template_div_click_18_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSectionToggle("entities")); });
285
- i0.ɵɵelement(19, "i", 15);
286
- i0.ɵɵelementStart(20, "span", 8);
188
+ i0.ɵɵelement(19, "i", 16);
189
+ i0.ɵɵelementStart(20, "span", 9);
287
190
  i0.ɵɵtext(21, "Entities");
288
191
  i0.ɵɵelementEnd();
289
- i0.ɵɵelementStart(22, "span", 9);
192
+ i0.ɵɵelementStart(22, "span", 10);
290
193
  i0.ɵɵtext(23);
291
194
  i0.ɵɵelementEnd();
292
- i0.ɵɵelement(24, "i", 10);
195
+ i0.ɵɵelement(24, "i", 11);
293
196
  i0.ɵɵelementEnd();
294
- i0.ɵɵconditionalCreate(25, NavigationPanelComponent_Conditional_3_Conditional_25_Template, 10, 4, "div", 16);
197
+ i0.ɵɵconditionalCreate(25, NavigationPanelComponent_Conditional_3_Conditional_25_Template, 7, 12, "div", 17);
295
198
  i0.ɵɵelementEnd()();
296
199
  } if (rf & 2) {
297
200
  const ctx_r1 = i0.ɵɵnextContext();
@@ -315,7 +218,7 @@ function NavigationPanelComponent_Conditional_3_Template(rf, ctx) { if (rf & 1)
315
218
  i0.ɵɵconditional(ctx_r1.entitiesSectionExpanded ? 25 : -1);
316
219
  } }
317
220
  function NavigationPanelComponent_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
318
- i0.ɵɵelementStart(0, "span", 44);
221
+ i0.ɵɵelementStart(0, "span", 35);
319
222
  i0.ɵɵtext(1);
320
223
  i0.ɵɵelementEnd();
321
224
  } if (rf & 2) {
@@ -324,7 +227,7 @@ function NavigationPanelComponent_Conditional_4_Conditional_3_Template(rf, ctx)
324
227
  i0.ɵɵtextInterpolate(ctx_r1.favoriteRecords.length + ctx_r1.favoriteEntities.length);
325
228
  } }
326
229
  function NavigationPanelComponent_Conditional_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
327
- i0.ɵɵelementStart(0, "span", 44);
230
+ i0.ɵɵelementStart(0, "span", 35);
328
231
  i0.ɵɵtext(1);
329
232
  i0.ɵɵelementEnd();
330
233
  } if (rf & 2) {
@@ -333,21 +236,21 @@ function NavigationPanelComponent_Conditional_4_Conditional_6_Template(rf, ctx)
333
236
  i0.ɵɵtextInterpolate(ctx_r1.filteredRecentItems.length);
334
237
  } }
335
238
  function NavigationPanelComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
336
- const _r17 = i0.ɵɵgetCurrentView();
337
- i0.ɵɵelementStart(0, "div", 4)(1, "button", 42);
338
- i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_4_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCollapsedIconClick("favorites")); });
339
- i0.ɵɵelement(2, "i", 43);
340
- i0.ɵɵconditionalCreate(3, NavigationPanelComponent_Conditional_4_Conditional_3_Template, 2, 1, "span", 44);
239
+ const _r11 = i0.ɵɵgetCurrentView();
240
+ i0.ɵɵelementStart(0, "div", 5)(1, "button", 33);
241
+ i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_4_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCollapsedIconClick("favorites")); });
242
+ i0.ɵɵelement(2, "i", 34);
243
+ i0.ɵɵconditionalCreate(3, NavigationPanelComponent_Conditional_4_Conditional_3_Template, 2, 1, "span", 35);
341
244
  i0.ɵɵelementEnd();
342
- i0.ɵɵelementStart(4, "button", 45);
343
- i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_4_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCollapsedIconClick("recent")); });
344
- i0.ɵɵelement(5, "i", 46);
345
- i0.ɵɵconditionalCreate(6, NavigationPanelComponent_Conditional_4_Conditional_6_Template, 2, 1, "span", 44);
245
+ i0.ɵɵelementStart(4, "button", 36);
246
+ i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_4_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCollapsedIconClick("recent")); });
247
+ i0.ɵɵelement(5, "i", 37);
248
+ i0.ɵɵconditionalCreate(6, NavigationPanelComponent_Conditional_4_Conditional_6_Template, 2, 1, "span", 35);
346
249
  i0.ɵɵelementEnd();
347
- i0.ɵɵelementStart(7, "button", 47);
348
- i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_4_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCollapsedIconClick("entities")); });
349
- i0.ɵɵelement(8, "i", 48);
350
- i0.ɵɵelementStart(9, "span", 44);
250
+ i0.ɵɵelementStart(7, "button", 38);
251
+ i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_4_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCollapsedIconClick("entities")); });
252
+ i0.ɵɵelement(8, "i", 39);
253
+ i0.ɵɵelementStart(9, "span", 35);
351
254
  i0.ɵɵtext(10);
352
255
  i0.ɵɵelementEnd()()();
353
256
  } if (rf & 2) {
@@ -372,6 +275,8 @@ export class NavigationPanelComponent {
372
275
  allowedEntityNames = null;
373
276
  /** Application-based entity groups from the parent dashboard */
374
277
  appEntityGroups = [];
278
+ /** Optional application ID filter for the tree */
279
+ applicationIdFilter = null;
375
280
  // Section expansion states
376
281
  favoritesSectionExpanded = true;
377
282
  recentSectionExpanded = true;
@@ -388,64 +293,103 @@ export class NavigationPanelComponent {
388
293
  /** Emitted when a nav panel app group is toggled */
389
294
  appGroupToggled = new EventEmitter();
390
295
  metadata = new Metadata();
391
- // Entity search/filter
296
+ // Tree configuration for entity list
297
+ treeBranchConfig = {
298
+ EntityName: 'MJ: Applications',
299
+ DisplayField: 'Name',
300
+ IDField: 'ID',
301
+ IconField: 'Icon',
302
+ OrderBy: 'Name'
303
+ };
304
+ treeLeafConfig = {
305
+ EntityName: 'MJ: Entities',
306
+ ParentField: '', // Using JunctionConfig for M2M relationship
307
+ DisplayField: 'Name',
308
+ IDField: 'ID',
309
+ IconField: 'Icon',
310
+ JunctionConfig: {
311
+ EntityName: 'MJ: Application Entities',
312
+ BranchForeignKey: 'ApplicationID',
313
+ LeafForeignKey: 'EntityID'
314
+ },
315
+ OrderBy: 'Name'
316
+ };
317
+ entityTree;
318
+ /** Selected entity ID for tree highlighting */
319
+ selectedEntityIds = [];
320
+ /** Search term for filtering the entity tree */
392
321
  entitySearchTerm = '';
393
- // Local expand state for nav panel groups (independent of home view state)
394
- navGroupExpanded = new Map();
322
+ ngOnChanges(changes) {
323
+ if (changes['selectedEntityName']) {
324
+ this.updateSelectedEntityKey();
325
+ }
326
+ if (changes['applicationIdFilter']) {
327
+ this.updateTreeBranchFilter();
328
+ }
329
+ }
395
330
  /**
396
- * Whether to show grouped entity view (when groups are available)
331
+ * Update the selected entity IDs for tree highlighting when selected entity changes
397
332
  */
398
- get hasAppGroups() {
399
- return this.appEntityGroups.length > 0;
333
+ updateSelectedEntityKey() {
334
+ if (this.selectedEntityName) {
335
+ const entity = this.metadata.Entities.find(e => e.Name === this.selectedEntityName);
336
+ if (entity) {
337
+ this.selectedEntityIds = [entity.ID];
338
+ return;
339
+ }
340
+ }
341
+ this.selectedEntityIds = [];
400
342
  }
401
343
  /**
402
- * Get filtered entities based on search term (used in flat/ungrouped mode)
344
+ * Update the tree's branch filter when application filter changes
403
345
  */
404
- get filteredEntities() {
405
- if (!this.entitySearchTerm) {
406
- return this.entities;
346
+ updateTreeBranchFilter() {
347
+ if (this.applicationIdFilter) {
348
+ this.treeBranchConfig = {
349
+ ...this.treeBranchConfig,
350
+ ExtraFilter: `ID='${this.applicationIdFilter}'`
351
+ };
352
+ }
353
+ else {
354
+ this.treeBranchConfig = {
355
+ ...this.treeBranchConfig,
356
+ ExtraFilter: undefined
357
+ };
407
358
  }
408
- const term = this.entitySearchTerm.toLowerCase();
409
- return this.entities.filter(e => e.Name.toLowerCase().includes(term) ||
410
- (e.Description && e.Description.toLowerCase().includes(term)));
411
359
  }
412
360
  /**
413
- * Get app entity groups filtered by search term
414
- * Auto-expands groups when searching to show matches
361
+ * Filter the entity tree when search term changes
415
362
  */
416
- get filteredNavGroups() {
417
- if (!this.entitySearchTerm) {
418
- return this.appEntityGroups.filter(g => g.entities.length > 0);
363
+ onEntitySearchChanged() {
364
+ if (this.entityTree) {
365
+ this.entityTree.FilterNodes(this.entitySearchTerm, {
366
+ searchBranches: true,
367
+ searchLeaves: true,
368
+ caseSensitive: false
369
+ });
419
370
  }
420
- const term = this.entitySearchTerm.toLowerCase();
421
- return this.appEntityGroups
422
- .map(g => ({
423
- ...g,
424
- entities: g.entities.filter(e => e.Name.toLowerCase().includes(term) ||
425
- (e.Description && e.Description.toLowerCase().includes(term))),
426
- isExpanded: true // auto-expand when searching
427
- }))
428
- .filter(g => g.entities.length > 0);
429
371
  }
430
372
  /**
431
- * Check if a nav panel group is expanded
373
+ * Clear the entity search
432
374
  */
433
- isNavGroupExpanded(groupId) {
434
- if (this.entitySearchTerm)
435
- return true; // auto-expand during search
436
- const localState = this.navGroupExpanded.get(groupId);
437
- if (localState !== undefined)
438
- return localState;
439
- // Default: first group expanded, others collapsed
440
- const idx = this.appEntityGroups.findIndex(g => g.applicationId === groupId);
441
- return idx === 0;
375
+ clearEntitySearch() {
376
+ this.entitySearchTerm = '';
377
+ this.onEntitySearchChanged();
442
378
  }
443
379
  /**
444
- * Toggle a nav panel group expand/collapse
380
+ * Handle tree selection change - map TreeNode to EntityInfo and emit
445
381
  */
446
- onNavGroupToggle(groupId) {
447
- const current = this.isNavGroupExpanded(groupId);
448
- this.navGroupExpanded.set(groupId, !current);
382
+ onTreeEntitySelected(nodes) {
383
+ if (!nodes || nodes.length === 0)
384
+ return;
385
+ const node = nodes[0];
386
+ if (node.Type !== 'leaf')
387
+ return;
388
+ // Find the EntityInfo by ID from the node
389
+ const entity = this.metadata.Entities.find(e => UUIDsEqual(e.ID, node.ID));
390
+ if (entity) {
391
+ this.entitySelected.emit(entity);
392
+ }
449
393
  }
450
394
  /**
451
395
  * Get recent items filtered by allowed entities (if filter is active)
@@ -616,12 +560,17 @@ export class NavigationPanelComponent {
616
560
  return 'fa-solid fa-file-alt';
617
561
  }
618
562
  static ɵfac = function NavigationPanelComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NavigationPanelComponent)(); };
619
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NavigationPanelComponent, selectors: [["mj-explorer-navigation-panel"]], inputs: { entities: "entities", selectedEntityName: "selectedEntityName", favorites: "favorites", recentItems: "recentItems", collapsed: "collapsed", allowedEntityNames: "allowedEntityNames", appEntityGroups: "appEntityGroups", favoritesSectionExpanded: "favoritesSectionExpanded", recentSectionExpanded: "recentSectionExpanded", entitiesSectionExpanded: "entitiesSectionExpanded", viewsSectionExpanded: "viewsSectionExpanded" }, outputs: { entitySelected: "entitySelected", toggleCollapse: "toggleCollapse", sectionToggled: "sectionToggled", openRecord: "openRecord", selectRecord: "selectRecord", expandAndFocus: "expandAndFocus", appGroupToggled: "appGroupToggled" }, standalone: false, decls: 5, vars: 8, consts: [[1, "navigation-panel-container"], [1, "collapse-toggle", 3, "click", "title"], [1, "fa-solid"], [1, "panel-content"], [1, "collapsed-icons"], [1, "section", "favorites-section"], [1, "section-header", 3, "click"], [1, "fa-solid", "fa-star", "section-icon"], [1, "section-title"], [1, "section-count"], [1, "fa-solid", "expand-icon"], [1, "section-content", "scrollable-section"], [1, "section", "recent-section"], [1, "fa-solid", "fa-clock", "section-icon"], [1, "section", "entities-section"], [1, "fa-solid", "fa-database", "section-icon"], [1, "section-content"], [1, "empty-section"], [1, "scrollable-list"], [1, "scrollable-list-inner"], [1, "nav-item", 3, "title"], [1, "nav-item", 3, "click", "title"], [1, "nav-item-label"], [1, "nav-item-content"], [1, "nav-item-meta"], [1, "entity-search"], [1, "fa-solid", "fa-search", "search-icon"], ["type", "text", "placeholder", "Search entities...", 1, "search-input", 3, "ngModelChange", "ngModel"], [1, "clear-search"], [1, "entity-list"], [1, "entity-list-inner"], [1, "clear-search", 3, "click"], [1, "fa-solid", "fa-times"], [1, "nav-app-group"], [1, "nav-app-group-header", 3, "click"], [1, "nav-app-group-icon"], [1, "nav-app-group-name"], [1, "nav-app-group-count"], [1, "fa-solid", "fa-chevron-right", "nav-app-group-chevron"], [1, "nav-app-group-entities"], [1, "nav-item", "entity-item", 3, "selected", "title"], [1, "nav-item", "entity-item", 3, "click", "title"], ["title", "Favorites", 1, "icon-btn", 3, "click"], [1, "fa-solid", "fa-star"], [1, "collapsed-badge"], ["title", "Recent", 1, "icon-btn", 3, "click"], [1, "fa-solid", "fa-clock"], ["title", "Entities", 1, "icon-btn", 3, "click"], [1, "fa-solid", "fa-database"]], template: function NavigationPanelComponent_Template(rf, ctx) { if (rf & 1) {
620
- i0.ɵɵelementStart(0, "div", 0)(1, "button", 1);
563
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NavigationPanelComponent, selectors: [["mj-explorer-navigation-panel"]], viewQuery: function NavigationPanelComponent_Query(rf, ctx) { if (rf & 1) {
564
+ i0.ɵɵviewQuery(_c0, 5);
565
+ } if (rf & 2) {
566
+ let _t;
567
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.entityTree = _t.first);
568
+ } }, inputs: { entities: "entities", selectedEntityName: "selectedEntityName", favorites: "favorites", recentItems: "recentItems", collapsed: "collapsed", allowedEntityNames: "allowedEntityNames", appEntityGroups: "appEntityGroups", applicationIdFilter: "applicationIdFilter", favoritesSectionExpanded: "favoritesSectionExpanded", recentSectionExpanded: "recentSectionExpanded", entitiesSectionExpanded: "entitiesSectionExpanded", viewsSectionExpanded: "viewsSectionExpanded" }, outputs: { entitySelected: "entitySelected", toggleCollapse: "toggleCollapse", sectionToggled: "sectionToggled", openRecord: "openRecord", selectRecord: "selectRecord", expandAndFocus: "expandAndFocus", appGroupToggled: "appGroupToggled" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], decls: 5, vars: 8, consts: [["entityTree", ""], [1, "navigation-panel-container"], [1, "collapse-toggle", 3, "click", "title"], [1, "fa-solid"], [1, "panel-content"], [1, "collapsed-icons"], [1, "section", "favorites-section"], [1, "section-header", 3, "click"], [1, "fa-solid", "fa-star", "section-icon"], [1, "section-title"], [1, "section-count"], [1, "fa-solid", "expand-icon"], [1, "section-content", "scrollable-section"], [1, "section", "recent-section"], [1, "fa-solid", "fa-clock", "section-icon"], [1, "section", "entities-section"], [1, "fa-solid", "fa-database", "section-icon"], [1, "section-content", "entity-tree-container"], [1, "empty-section"], [1, "scrollable-list"], [1, "scrollable-list-inner"], [1, "nav-item", 3, "title"], [1, "nav-item", 3, "click", "title"], [1, "nav-item-label"], [1, "nav-item-content"], [1, "nav-item-meta"], [1, "entity-search"], [1, "fa-solid", "fa-search", "search-icon"], ["type", "text", "placeholder", "Search entities...", 1, "search-input", 3, "ngModelChange", "ngModel"], [1, "clear-search"], [3, "SelectionChange", "BranchConfig", "LeafConfig", "SelectionMode", "SelectableTypes", "SelectedIDs", "ShowIcons", "ShowExpandCollapseAll", "AnimateExpandCollapse", "EmptyMessage", "EmptyIcon"], [1, "clear-search", 3, "click"], [1, "fa-solid", "fa-times"], ["title", "Favorites", 1, "icon-btn", 3, "click"], [1, "fa-solid", "fa-star"], [1, "collapsed-badge"], ["title", "Recent", 1, "icon-btn", 3, "click"], [1, "fa-solid", "fa-clock"], ["title", "Entities", 1, "icon-btn", 3, "click"], [1, "fa-solid", "fa-database"]], template: function NavigationPanelComponent_Template(rf, ctx) { if (rf & 1) {
569
+ i0.ɵɵelementStart(0, "div", 1)(1, "button", 2);
621
570
  i0.ɵɵlistener("click", function NavigationPanelComponent_Template_button_click_1_listener() { return ctx.onToggleCollapse(); });
622
- i0.ɵɵelement(2, "i", 2);
571
+ i0.ɵɵelement(2, "i", 3);
623
572
  i0.ɵɵelementEnd();
624
- i0.ɵɵconditionalCreate(3, NavigationPanelComponent_Conditional_3_Template, 26, 18, "div", 3)(4, NavigationPanelComponent_Conditional_4_Template, 11, 3, "div", 4);
573
+ i0.ɵɵconditionalCreate(3, NavigationPanelComponent_Conditional_3_Template, 26, 18, "div", 4)(4, NavigationPanelComponent_Conditional_4_Template, 11, 3, "div", 5);
625
574
  i0.ɵɵelementEnd();
626
575
  } if (rf & 2) {
627
576
  i0.ɵɵclassProp("collapsed", ctx.collapsed);
@@ -631,11 +580,11 @@ export class NavigationPanelComponent {
631
580
  i0.ɵɵclassProp("fa-chevron-right", ctx.collapsed)("fa-chevron-left", !ctx.collapsed);
632
581
  i0.ɵɵadvance();
633
582
  i0.ɵɵconditional(!ctx.collapsed ? 3 : 4);
634
- } }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel], styles: [".navigation-panel-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0; \n\n position: relative;\n background: var(--mj-bg-surface);\n box-shadow: 1px 0 3px rgba(0, 0, 0, 0.05);\n}\n.navigation-panel-container.collapsed[_ngcontent-%COMP%] {\n align-items: center;\n padding-top: 48px;\n}\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.collapse-toggle[_ngcontent-%COMP%] {\n position: absolute;\n top: 12px;\n right: 12px;\n width: 28px;\n height: 28px;\n border: none;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-secondary);\n transition: all 0.15s ease;\n z-index: 10;\n}\n.collapse-toggle[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.collapsed[_ngcontent-%COMP%] .collapse-toggle[_ngcontent-%COMP%] {\n right: auto;\n left: 50%;\n transform: translateX(-50%);\n background: transparent;\n}\n.collapsed[_ngcontent-%COMP%] .collapse-toggle[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.panel-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n padding-top: 48px;\n min-height: 0; \n\n}\n\n.section[_ngcontent-%COMP%] {\n flex-shrink: 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n\n\n.section.favorites-section[_ngcontent-%COMP%], \n.section.recent-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n min-height: 0;\n max-height: 200px; \n\n}\n\n.section.entities-section[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n border-bottom: none;\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 14px 16px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n background: var(--mj-bg-surface-card);\n}\n.section-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.section-icon[_ngcontent-%COMP%] {\n width: 20px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-right: 10px;\n}\n\n.section-title[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.8px;\n color: var(--mj-text-muted);\n}\n\n.section-count[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-right: 8px;\n font-weight: 500;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n transition: transform 0.15s ease;\n}\n\n.section-content[_ngcontent-%COMP%] {\n padding: 8px 12px 12px 12px;\n background: var(--mj-bg-surface);\n}\n\n\n\n.section-content.scrollable-section[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n}\n\n.scrollable-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding-right: 4px;\n}\n.scrollable-list[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 6px;\n}\n.scrollable-list[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: transparent;\n}\n.scrollable-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n.scrollable-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: var(--mj-border-strong);\n}\n\n.scrollable-list-inner[_ngcontent-%COMP%] {\n \n\n}\n\n.entities-section[_ngcontent-%COMP%] .section-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0; \n\n overflow: hidden;\n}\n\n.empty-section[_ngcontent-%COMP%] {\n padding: 20px 16px;\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 12px;\n font-style: italic;\n}\n\n.nav-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n gap: 10px;\n margin-bottom: 2px;\n}\n.nav-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n.nav-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n box-shadow: 0 1px 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n.nav-item.selected[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n.nav-item.selected[_ngcontent-%COMP%] .nav-item-label[_ngcontent-%COMP%] {\n font-weight: 600;\n}\n.nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 18px;\n font-size: 14px;\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n text-align: center;\n}\n\n.nav-item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.nav-item-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.nav-item-meta[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.entity-search[_ngcontent-%COMP%] {\n position: relative;\n margin-bottom: 12px;\n flex-shrink: 0;\n}\n\n.search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 36px 10px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n background: var(--mj-bg-surface-card);\n transition: all 0.15s ease;\n}\n.search-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n.search-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n}\n\n.clear-search[_ngcontent-%COMP%] {\n position: absolute;\n right: 6px;\n top: 50%;\n transform: translateY(-50%);\n width: 24px;\n height: 24px;\n border: none;\n background: transparent;\n border-radius: 50%;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n}\n.clear-search[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-muted);\n}\n\n.entity-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding-right: 4px;\n}\n.entity-list[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 6px;\n}\n.entity-list[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: transparent;\n}\n.entity-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n.entity-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: var(--mj-border-strong);\n}\n\n.entity-list-inner[_ngcontent-%COMP%] {\n \n\n \n\n}\n\n.entity-item[_ngcontent-%COMP%] .nav-item-label[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n\n\n\n\n\n.nav-app-group[_ngcontent-%COMP%] {\n margin-bottom: 2px;\n}\n\n.nav-app-group-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 10px;\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.12s;\n user-select: none;\n}\n\n.nav-app-group-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.nav-app-group-icon[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n width: 16px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.nav-app-group-name[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--mj-text-secondary);\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.nav-app-group-count[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n padding: 1px 6px;\n border-radius: 8px;\n}\n\n.nav-app-group-chevron[_ngcontent-%COMP%] {\n font-size: 9px;\n color: var(--mj-text-muted);\n transition: transform 0.15s;\n}\n\n.nav-app-group-chevron.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n.nav-app-group-entities[_ngcontent-%COMP%] {\n padding-left: 8px;\n}\n\n.nav-app-group-entities[_ngcontent-%COMP%] .nav-item[_ngcontent-%COMP%] {\n padding: 8px 10px 8px 16px;\n}\n\n.collapsed-icons[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding-top: 16px;\n}\n\n.icon-btn[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border: none;\n background: transparent;\n border-radius: 8px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-secondary);\n transition: all 0.15s ease;\n position: relative;\n}\n.icon-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n.icon-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n.collapsed-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: 2px;\n right: 2px;\n min-width: 16px;\n height: 16px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n background: var(--mj-brand-primary);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n}"] });
583
+ } }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel, i2.TreeComponent], styles: [".navigation-panel-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0; \n\n position: relative;\n background: var(--mj-bg-surface);\n box-shadow: 1px 0 3px rgba(0, 0, 0, 0.05);\n}\n.navigation-panel-container.collapsed[_ngcontent-%COMP%] {\n align-items: center;\n padding-top: 48px;\n}\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.collapse-toggle[_ngcontent-%COMP%] {\n position: absolute;\n top: 12px;\n right: 12px;\n width: 28px;\n height: 28px;\n border: none;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-secondary);\n transition: all 0.15s ease;\n z-index: 10;\n}\n.collapse-toggle[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.collapsed[_ngcontent-%COMP%] .collapse-toggle[_ngcontent-%COMP%] {\n right: auto;\n left: 50%;\n transform: translateX(-50%);\n background: transparent;\n}\n.collapsed[_ngcontent-%COMP%] .collapse-toggle[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.panel-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n padding-top: 48px;\n min-height: 0; \n\n}\n\n.section[_ngcontent-%COMP%] {\n flex-shrink: 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n\n\n.section.favorites-section[_ngcontent-%COMP%], \n.section.recent-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n min-height: 0;\n max-height: 200px; \n\n}\n\n.section.entities-section[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n border-bottom: none;\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 14px 16px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n background: var(--mj-bg-surface-card);\n}\n.section-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.section-icon[_ngcontent-%COMP%] {\n width: 20px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-right: 10px;\n}\n\n.section-title[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.8px;\n color: var(--mj-text-muted);\n}\n\n.section-count[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-right: 8px;\n font-weight: 500;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n transition: transform 0.15s ease;\n}\n\n.section-content[_ngcontent-%COMP%] {\n padding: 8px 12px 12px 12px;\n background: var(--mj-bg-surface);\n}\n\n\n\n.section-content.scrollable-section[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n}\n\n.scrollable-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding-right: 4px;\n}\n.scrollable-list[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 6px;\n}\n.scrollable-list[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: transparent;\n}\n.scrollable-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n.scrollable-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: var(--mj-border-strong);\n}\n\n.scrollable-list-inner[_ngcontent-%COMP%] {\n \n\n}\n\n.entities-section[_ngcontent-%COMP%] .section-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0; \n\n overflow: hidden;\n}\n\n.entity-tree-container[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n}\n\n.entity-tree-container[_ngcontent-%COMP%] mj-tree[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n\n.empty-section[_ngcontent-%COMP%] {\n padding: 20px 16px;\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 12px;\n font-style: italic;\n}\n\n.nav-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n gap: 10px;\n margin-bottom: 2px;\n}\n.nav-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n.nav-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n box-shadow: 0 1px 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n.nav-item.selected[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n.nav-item.selected[_ngcontent-%COMP%] .nav-item-label[_ngcontent-%COMP%] {\n font-weight: 600;\n}\n.nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 18px;\n font-size: 14px;\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n text-align: center;\n}\n\n.nav-item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.nav-item-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.nav-item-meta[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.entity-search[_ngcontent-%COMP%] {\n position: relative;\n margin-bottom: 12px;\n flex-shrink: 0;\n}\n\n.search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 36px 10px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n background: var(--mj-bg-surface-card);\n transition: all 0.15s ease;\n}\n.search-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n.search-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n}\n\n.clear-search[_ngcontent-%COMP%] {\n position: absolute;\n right: 6px;\n top: 50%;\n transform: translateY(-50%);\n width: 24px;\n height: 24px;\n border: none;\n background: transparent;\n border-radius: 50%;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n}\n.clear-search[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-muted);\n}\n\n.entity-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding-right: 4px;\n}\n.entity-list[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 6px;\n}\n.entity-list[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: transparent;\n}\n.entity-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n.entity-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: var(--mj-border-strong);\n}\n\n.entity-list-inner[_ngcontent-%COMP%] {\n \n\n \n\n}\n\n.entity-item[_ngcontent-%COMP%] .nav-item-label[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n\n\n\n\n\n.nav-app-group[_ngcontent-%COMP%] {\n margin-bottom: 2px;\n}\n\n.nav-app-group-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 10px;\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.12s;\n user-select: none;\n}\n\n.nav-app-group-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.nav-app-group-icon[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n width: 16px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.nav-app-group-name[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--mj-text-secondary);\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.nav-app-group-count[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n padding: 1px 6px;\n border-radius: 8px;\n}\n\n.nav-app-group-chevron[_ngcontent-%COMP%] {\n font-size: 9px;\n color: var(--mj-text-muted);\n transition: transform 0.15s;\n}\n\n.nav-app-group-chevron.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n.nav-app-group-entities[_ngcontent-%COMP%] {\n padding-left: 8px;\n}\n\n.nav-app-group-entities[_ngcontent-%COMP%] .nav-item[_ngcontent-%COMP%] {\n padding: 8px 10px 8px 16px;\n}\n\n.collapsed-icons[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding-top: 16px;\n}\n\n.icon-btn[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border: none;\n background: transparent;\n border-radius: 8px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-secondary);\n transition: all 0.15s ease;\n position: relative;\n}\n.icon-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n.icon-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n.collapsed-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: 2px;\n right: 2px;\n min-width: 16px;\n height: 16px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n background: var(--mj-brand-primary);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n}"] });
635
584
  }
636
585
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NavigationPanelComponent, [{
637
586
  type: Component,
638
- args: [{ standalone: false, selector: 'mj-explorer-navigation-panel', template: "<div class=\"navigation-panel-container\" [class.collapsed]=\"collapsed\">\n <!-- Collapse Toggle -->\n <button class=\"collapse-toggle\" (click)=\"onToggleCollapse()\" [title]=\"collapsed ? 'Expand' : 'Collapse'\">\n <i class=\"fa-solid\" [class.fa-chevron-right]=\"collapsed\" [class.fa-chevron-left]=\"!collapsed\"></i>\n </button>\n\n @if (!collapsed) {\n <div class=\"panel-content\">\n <!-- Favorites Section -->\n <div class=\"section favorites-section\">\n <div class=\"section-header\" (click)=\"onSectionToggle('favorites')\">\n <i class=\"fa-solid fa-star section-icon\"></i>\n <span class=\"section-title\">Favorites</span>\n @if (favoriteRecords.length + favoriteEntities.length > 0) {\n <span class=\"section-count\">({{ favoriteRecords.length + favoriteEntities.length }})</span>\n }\n <i class=\"fa-solid expand-icon\" [class.fa-chevron-down]=\"favoritesSectionExpanded\" [class.fa-chevron-right]=\"!favoritesSectionExpanded\"></i>\n </div>\n\n @if (favoritesSectionExpanded) {\n <div class=\"section-content scrollable-section\">\n @if (favoriteRecords.length + favoriteEntities.length === 0) {\n <div class=\"empty-section\">\n <span>No favorites yet</span>\n </div>\n } @else {\n <div class=\"scrollable-list\">\n <div class=\"scrollable-list-inner\">\n @for (favorite of favoriteEntities; track favorite.displayName) {\n <div class=\"nav-item\" (click)=\"onFavoriteClick(favorite)\" [title]=\"favorite.entityName ? favorite.entityName + ' - ' + favorite.displayName : favorite.displayName\">\n <i [class]=\"getFavoriteIcon(favorite)\"></i>\n <span class=\"nav-item-label\">{{ favorite.displayName }}</span>\n </div>\n }\n @for (favorite of favoriteRecords; track favorite.displayName) {\n <div class=\"nav-item\" (click)=\"onFavoriteClick(favorite)\" [title]=\"favorite.entityName ? favorite.entityName + ' - ' + favorite.displayName : favorite.displayName\">\n <i [class]=\"getFavoriteIcon(favorite)\"></i>\n <span class=\"nav-item-label\">{{ favorite.displayName }}</span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Recent Items Section -->\n <div class=\"section recent-section\">\n <div class=\"section-header\" (click)=\"onSectionToggle('recent')\">\n <i class=\"fa-solid fa-clock section-icon\"></i>\n <span class=\"section-title\">Recent</span>\n @if (filteredRecentItems.length > 0) {\n <span class=\"section-count\">({{ filteredRecentItems.length }})</span>\n }\n <i class=\"fa-solid expand-icon\" [class.fa-chevron-down]=\"recentSectionExpanded\" [class.fa-chevron-right]=\"!recentSectionExpanded\"></i>\n </div>\n\n @if (recentSectionExpanded) {\n <div class=\"section-content scrollable-section\">\n @if (filteredRecentItems.length === 0) {\n <div class=\"empty-section\">\n <span>No recent items</span>\n </div>\n } @else {\n <div class=\"scrollable-list\">\n <div class=\"scrollable-list-inner\">\n @for (item of filteredRecentItems; track item.compositeKeyString) {\n <div class=\"nav-item\" (click)=\"onRecentClick(item)\" [title]=\"item.entityName + ' - ' + item.displayName\">\n <i [class]=\"getRecentItemIcon(item)\"></i>\n <div class=\"nav-item-content\">\n <span class=\"nav-item-label\">{{ item.displayName }}</span>\n <span class=\"nav-item-meta\">{{ formatTimestamp(item.timestamp) }}</span>\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Entities Section -->\n <div class=\"section entities-section\">\n <div class=\"section-header\" (click)=\"onSectionToggle('entities')\">\n <i class=\"fa-solid fa-database section-icon\"></i>\n <span class=\"section-title\">Entities</span>\n <span class=\"section-count\">({{ entities.length }})</span>\n <i class=\"fa-solid expand-icon\" [class.fa-chevron-down]=\"entitiesSectionExpanded\" [class.fa-chevron-right]=\"!entitiesSectionExpanded\"></i>\n </div>\n\n @if (entitiesSectionExpanded) {\n <div class=\"section-content\">\n <!-- Entity Search -->\n <div class=\"entity-search\">\n <i class=\"fa-solid fa-search search-icon\"></i>\n <input\n type=\"text\"\n class=\"search-input\"\n placeholder=\"Search entities...\"\n [(ngModel)]=\"entitySearchTerm\"\n />\n @if (entitySearchTerm) {\n <button class=\"clear-search\" (click)=\"entitySearchTerm = ''\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n\n <!-- Entity List (scrollable container) -->\n <div class=\"entity-list\">\n <div class=\"entity-list-inner\">\n @if (hasAppGroups) {\n <!-- Grouped by application -->\n @for (group of filteredNavGroups; track group.applicationId) {\n <div class=\"nav-app-group\">\n <div class=\"nav-app-group-header\" (click)=\"onNavGroupToggle(group.applicationId)\">\n <i [class]=\"group.applicationIcon || 'fa-solid fa-folder'\" class=\"nav-app-group-icon\"\n [style.color]=\"group.applicationColor || null\"></i>\n <span class=\"nav-app-group-name\">{{ group.applicationName }}</span>\n <span class=\"nav-app-group-count\">{{ group.entities.length }}</span>\n <i class=\"fa-solid fa-chevron-right nav-app-group-chevron\"\n [class.expanded]=\"isNavGroupExpanded(group.applicationId)\"></i>\n </div>\n @if (isNavGroupExpanded(group.applicationId)) {\n <div class=\"nav-app-group-entities\">\n @for (entity of group.entities; track entity.ID) {\n <div\n class=\"nav-item entity-item\"\n [class.selected]=\"isEntitySelected(entity)\"\n (click)=\"onEntityClick(entity)\"\n [title]=\"entity.Description || entity.DisplayNameOrName\">\n <i [class]=\"getEntityIcon(entity)\"></i>\n <span class=\"nav-item-label\">{{ entity.DisplayNameOrName }}</span>\n </div>\n }\n </div>\n }\n </div>\n }\n } @else {\n <!-- Flat list (no groups available) -->\n @for (entity of filteredEntities; track entity.ID) {\n <div\n class=\"nav-item entity-item\"\n [class.selected]=\"isEntitySelected(entity)\"\n (click)=\"onEntityClick(entity)\"\n [title]=\"entity.Description || entity.DisplayNameOrName\">\n <i [class]=\"getEntityIcon(entity)\"></i>\n <span class=\"nav-item-label\">{{ entity.DisplayNameOrName }}</span>\n </div>\n }\n }\n\n @if (filteredEntities.length === 0 && entitySearchTerm) {\n <div class=\"empty-section\">\n <span>No entities match \"{{ entitySearchTerm }}\"</span>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n } @else {\n <!-- Collapsed State - Show Icons Only -->\n <div class=\"collapsed-icons\">\n <button class=\"icon-btn\" title=\"Favorites\" (click)=\"onCollapsedIconClick('favorites')\">\n <i class=\"fa-solid fa-star\"></i>\n @if (favoriteRecords.length + favoriteEntities.length > 0) {\n <span class=\"collapsed-badge\">{{ favoriteRecords.length + favoriteEntities.length }}</span>\n }\n </button>\n <button class=\"icon-btn\" title=\"Recent\" (click)=\"onCollapsedIconClick('recent')\">\n <i class=\"fa-solid fa-clock\"></i>\n @if (filteredRecentItems.length > 0) {\n <span class=\"collapsed-badge\">{{ filteredRecentItems.length }}</span>\n }\n </button>\n <button class=\"icon-btn\" title=\"Entities\" (click)=\"onCollapsedIconClick('entities')\">\n <i class=\"fa-solid fa-database\"></i>\n <span class=\"collapsed-badge\">{{ entities.length }}</span>\n </button>\n </div>\n }\n</div>\n", styles: [".navigation-panel-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0; /* Critical for nested flex scrolling */\n position: relative;\n background: var(--mj-bg-surface);\n box-shadow: 1px 0 3px rgba(0, 0, 0, 0.05);\n}\n.navigation-panel-container.collapsed {\n align-items: center;\n padding-top: 48px;\n}\n\n.panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-title {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.collapse-toggle {\n position: absolute;\n top: 12px;\n right: 12px;\n width: 28px;\n height: 28px;\n border: none;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-secondary);\n transition: all 0.15s ease;\n z-index: 10;\n}\n.collapse-toggle:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.collapsed .collapse-toggle {\n right: auto;\n left: 50%;\n transform: translateX(-50%);\n background: transparent;\n}\n.collapsed .collapse-toggle:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.panel-content {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n padding-top: 48px;\n min-height: 0; /* Allow flex children to shrink below content size */\n}\n\n.section {\n flex-shrink: 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n/* Scrollable sections (Favorites, Recent) - allow them to shrink and scroll */\n.section.favorites-section,\n.section.recent-section {\n display: flex;\n flex-direction: column;\n min-height: 0;\n max-height: 200px; /* Limit height so entities section has room */\n}\n\n.section.entities-section {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n border-bottom: none;\n}\n\n.section-header {\n display: flex;\n align-items: center;\n padding: 14px 16px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n background: var(--mj-bg-surface-card);\n}\n.section-header:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.section-icon {\n width: 20px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-right: 10px;\n}\n\n.section-title {\n flex: 1;\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.8px;\n color: var(--mj-text-muted);\n}\n\n.section-count {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-right: 8px;\n font-weight: 500;\n}\n\n.expand-icon {\n font-size: 10px;\n color: var(--mj-text-muted);\n transition: transform 0.15s ease;\n}\n\n.section-content {\n padding: 8px 12px 12px 12px;\n background: var(--mj-bg-surface);\n}\n\n/* Scrollable section content for Favorites and Recent */\n.section-content.scrollable-section {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n}\n\n.scrollable-list {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding-right: 4px;\n}\n.scrollable-list::-webkit-scrollbar {\n width: 6px;\n}\n.scrollable-list::-webkit-scrollbar-track {\n background: transparent;\n}\n.scrollable-list::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n.scrollable-list::-webkit-scrollbar-thumb:hover {\n background: var(--mj-border-strong);\n}\n\n.scrollable-list-inner {\n /* Inner container grows naturally based on content */\n}\n\n.entities-section .section-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0; /* Allow content to shrink */\n overflow: hidden;\n}\n\n.empty-section {\n padding: 20px 16px;\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 12px;\n font-style: italic;\n}\n\n.nav-item {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n gap: 10px;\n margin-bottom: 2px;\n}\n.nav-item:hover {\n background: var(--mj-bg-surface-card);\n}\n.nav-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n box-shadow: 0 1px 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n.nav-item.selected i {\n color: var(--mj-brand-primary);\n}\n.nav-item.selected .nav-item-label {\n font-weight: 600;\n}\n.nav-item i {\n width: 18px;\n font-size: 14px;\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n text-align: center;\n}\n\n.nav-item-content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.nav-item-label {\n font-size: 13px;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.nav-item-meta {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.entity-search {\n position: relative;\n margin-bottom: 12px;\n flex-shrink: 0;\n}\n\n.search-icon {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.search-input {\n width: 100%;\n padding: 10px 36px 10px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n background: var(--mj-bg-surface-card);\n transition: all 0.15s ease;\n}\n.search-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n.search-input::placeholder {\n color: var(--mj-text-muted);\n}\n\n.clear-search {\n position: absolute;\n right: 6px;\n top: 50%;\n transform: translateY(-50%);\n width: 24px;\n height: 24px;\n border: none;\n background: transparent;\n border-radius: 50%;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n}\n.clear-search:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-muted);\n}\n\n.entity-list {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding-right: 4px;\n}\n.entity-list::-webkit-scrollbar {\n width: 6px;\n}\n.entity-list::-webkit-scrollbar-track {\n background: transparent;\n}\n.entity-list::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n.entity-list::-webkit-scrollbar-thumb:hover {\n background: var(--mj-border-strong);\n}\n\n.entity-list-inner {\n /* Inner container grows naturally based on content */\n /* Does not scroll - parent .entity-list handles scrolling */\n}\n\n.entity-item .nav-item-label {\n flex: 1;\n}\n\n/* ============================================\n NAV PANEL APPLICATION GROUPS\n ============================================ */\n\n.nav-app-group {\n margin-bottom: 2px;\n}\n\n.nav-app-group-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 10px;\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.12s;\n user-select: none;\n}\n\n.nav-app-group-header:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.nav-app-group-icon {\n font-size: 12px;\n color: var(--mj-text-secondary);\n width: 16px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.nav-app-group-name {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--mj-text-secondary);\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.nav-app-group-count {\n font-size: 10px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n padding: 1px 6px;\n border-radius: 8px;\n}\n\n.nav-app-group-chevron {\n font-size: 9px;\n color: var(--mj-text-muted);\n transition: transform 0.15s;\n}\n\n.nav-app-group-chevron.expanded {\n transform: rotate(90deg);\n}\n\n.nav-app-group-entities {\n padding-left: 8px;\n}\n\n.nav-app-group-entities .nav-item {\n padding: 8px 10px 8px 16px;\n}\n\n.collapsed-icons {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding-top: 16px;\n}\n\n.icon-btn {\n width: 36px;\n height: 36px;\n border: none;\n background: transparent;\n border-radius: 8px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-secondary);\n transition: all 0.15s ease;\n position: relative;\n}\n.icon-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n.icon-btn i {\n font-size: 16px;\n}\n\n.collapsed-badge {\n position: absolute;\n top: 2px;\n right: 2px;\n min-width: 16px;\n height: 16px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n background: var(--mj-brand-primary);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n}\n"] }]
587
+ args: [{ standalone: false, selector: 'mj-explorer-navigation-panel', template: "<div class=\"navigation-panel-container\" [class.collapsed]=\"collapsed\">\n <!-- Collapse Toggle -->\n <button class=\"collapse-toggle\" (click)=\"onToggleCollapse()\" [title]=\"collapsed ? 'Expand' : 'Collapse'\">\n <i class=\"fa-solid\" [class.fa-chevron-right]=\"collapsed\" [class.fa-chevron-left]=\"!collapsed\"></i>\n </button>\n\n @if (!collapsed) {\n <div class=\"panel-content\">\n <!-- Favorites Section -->\n <div class=\"section favorites-section\">\n <div class=\"section-header\" (click)=\"onSectionToggle('favorites')\">\n <i class=\"fa-solid fa-star section-icon\"></i>\n <span class=\"section-title\">Favorites</span>\n @if (favoriteRecords.length + favoriteEntities.length > 0) {\n <span class=\"section-count\">({{ favoriteRecords.length + favoriteEntities.length }})</span>\n }\n <i class=\"fa-solid expand-icon\" [class.fa-chevron-down]=\"favoritesSectionExpanded\" [class.fa-chevron-right]=\"!favoritesSectionExpanded\"></i>\n </div>\n\n @if (favoritesSectionExpanded) {\n <div class=\"section-content scrollable-section\">\n @if (favoriteRecords.length + favoriteEntities.length === 0) {\n <div class=\"empty-section\">\n <span>No favorites yet</span>\n </div>\n } @else {\n <div class=\"scrollable-list\">\n <div class=\"scrollable-list-inner\">\n @for (favorite of favoriteEntities; track favorite.displayName) {\n <div class=\"nav-item\" (click)=\"onFavoriteClick(favorite)\" [title]=\"favorite.entityName ? favorite.entityName + ' - ' + favorite.displayName : favorite.displayName\">\n <i [class]=\"getFavoriteIcon(favorite)\"></i>\n <span class=\"nav-item-label\">{{ favorite.displayName }}</span>\n </div>\n }\n @for (favorite of favoriteRecords; track favorite.displayName) {\n <div class=\"nav-item\" (click)=\"onFavoriteClick(favorite)\" [title]=\"favorite.entityName ? favorite.entityName + ' - ' + favorite.displayName : favorite.displayName\">\n <i [class]=\"getFavoriteIcon(favorite)\"></i>\n <span class=\"nav-item-label\">{{ favorite.displayName }}</span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Recent Items Section -->\n <div class=\"section recent-section\">\n <div class=\"section-header\" (click)=\"onSectionToggle('recent')\">\n <i class=\"fa-solid fa-clock section-icon\"></i>\n <span class=\"section-title\">Recent</span>\n @if (filteredRecentItems.length > 0) {\n <span class=\"section-count\">({{ filteredRecentItems.length }})</span>\n }\n <i class=\"fa-solid expand-icon\" [class.fa-chevron-down]=\"recentSectionExpanded\" [class.fa-chevron-right]=\"!recentSectionExpanded\"></i>\n </div>\n\n @if (recentSectionExpanded) {\n <div class=\"section-content scrollable-section\">\n @if (filteredRecentItems.length === 0) {\n <div class=\"empty-section\">\n <span>No recent items</span>\n </div>\n } @else {\n <div class=\"scrollable-list\">\n <div class=\"scrollable-list-inner\">\n @for (item of filteredRecentItems; track item.compositeKeyString) {\n <div class=\"nav-item\" (click)=\"onRecentClick(item)\" [title]=\"item.entityName + ' - ' + item.displayName\">\n <i [class]=\"getRecentItemIcon(item)\"></i>\n <div class=\"nav-item-content\">\n <span class=\"nav-item-label\">{{ item.displayName }}</span>\n <span class=\"nav-item-meta\">{{ formatTimestamp(item.timestamp) }}</span>\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Entities Section (ng-tree) -->\n <div class=\"section entities-section\">\n <div class=\"section-header\" (click)=\"onSectionToggle('entities')\">\n <i class=\"fa-solid fa-database section-icon\"></i>\n <span class=\"section-title\">Entities</span>\n <span class=\"section-count\">({{ entities.length }})</span>\n <i class=\"fa-solid expand-icon\" [class.fa-chevron-down]=\"entitiesSectionExpanded\" [class.fa-chevron-right]=\"!entitiesSectionExpanded\"></i>\n </div>\n\n @if (entitiesSectionExpanded) {\n <div class=\"section-content entity-tree-container\">\n <!-- Entity Search -->\n <div class=\"entity-search\">\n <i class=\"fa-solid fa-search search-icon\"></i>\n <input\n type=\"text\"\n class=\"search-input\"\n placeholder=\"Search entities...\"\n [(ngModel)]=\"entitySearchTerm\"\n (ngModelChange)=\"onEntitySearchChanged()\"\n />\n @if (entitySearchTerm) {\n <button class=\"clear-search\" (click)=\"clearEntitySearch()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n\n <!-- Entity Tree -->\n <mj-tree\n #entityTree\n [BranchConfig]=\"treeBranchConfig\"\n [LeafConfig]=\"treeLeafConfig\"\n [SelectionMode]=\"'single'\"\n [SelectableTypes]=\"'leaf'\"\n [SelectedIDs]=\"selectedEntityIds\"\n [ShowIcons]=\"true\"\n [ShowExpandCollapseAll]=\"false\"\n [AnimateExpandCollapse]=\"true\"\n [EmptyMessage]=\"entitySearchTerm ? 'No matches for: ' + entitySearchTerm : 'No entities available'\"\n [EmptyIcon]=\"'fa-solid fa-database'\"\n (SelectionChange)=\"onTreeEntitySelected($event)\">\n </mj-tree>\n </div>\n }\n </div>\n </div>\n } @else {\n <!-- Collapsed State - Show Icons Only -->\n <div class=\"collapsed-icons\">\n <button class=\"icon-btn\" title=\"Favorites\" (click)=\"onCollapsedIconClick('favorites')\">\n <i class=\"fa-solid fa-star\"></i>\n @if (favoriteRecords.length + favoriteEntities.length > 0) {\n <span class=\"collapsed-badge\">{{ favoriteRecords.length + favoriteEntities.length }}</span>\n }\n </button>\n <button class=\"icon-btn\" title=\"Recent\" (click)=\"onCollapsedIconClick('recent')\">\n <i class=\"fa-solid fa-clock\"></i>\n @if (filteredRecentItems.length > 0) {\n <span class=\"collapsed-badge\">{{ filteredRecentItems.length }}</span>\n }\n </button>\n <button class=\"icon-btn\" title=\"Entities\" (click)=\"onCollapsedIconClick('entities')\">\n <i class=\"fa-solid fa-database\"></i>\n <span class=\"collapsed-badge\">{{ entities.length }}</span>\n </button>\n </div>\n }\n</div>\n", styles: [".navigation-panel-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0; /* Critical for nested flex scrolling */\n position: relative;\n background: var(--mj-bg-surface);\n box-shadow: 1px 0 3px rgba(0, 0, 0, 0.05);\n}\n.navigation-panel-container.collapsed {\n align-items: center;\n padding-top: 48px;\n}\n\n.panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-title {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.collapse-toggle {\n position: absolute;\n top: 12px;\n right: 12px;\n width: 28px;\n height: 28px;\n border: none;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-secondary);\n transition: all 0.15s ease;\n z-index: 10;\n}\n.collapse-toggle:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.collapsed .collapse-toggle {\n right: auto;\n left: 50%;\n transform: translateX(-50%);\n background: transparent;\n}\n.collapsed .collapse-toggle:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.panel-content {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n padding-top: 48px;\n min-height: 0; /* Allow flex children to shrink below content size */\n}\n\n.section {\n flex-shrink: 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n/* Scrollable sections (Favorites, Recent) - allow them to shrink and scroll */\n.section.favorites-section,\n.section.recent-section {\n display: flex;\n flex-direction: column;\n min-height: 0;\n max-height: 200px; /* Limit height so entities section has room */\n}\n\n.section.entities-section {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n border-bottom: none;\n}\n\n.section-header {\n display: flex;\n align-items: center;\n padding: 14px 16px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n background: var(--mj-bg-surface-card);\n}\n.section-header:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.section-icon {\n width: 20px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-right: 10px;\n}\n\n.section-title {\n flex: 1;\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.8px;\n color: var(--mj-text-muted);\n}\n\n.section-count {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-right: 8px;\n font-weight: 500;\n}\n\n.expand-icon {\n font-size: 10px;\n color: var(--mj-text-muted);\n transition: transform 0.15s ease;\n}\n\n.section-content {\n padding: 8px 12px 12px 12px;\n background: var(--mj-bg-surface);\n}\n\n/* Scrollable section content for Favorites and Recent */\n.section-content.scrollable-section {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n}\n\n.scrollable-list {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding-right: 4px;\n}\n.scrollable-list::-webkit-scrollbar {\n width: 6px;\n}\n.scrollable-list::-webkit-scrollbar-track {\n background: transparent;\n}\n.scrollable-list::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n.scrollable-list::-webkit-scrollbar-thumb:hover {\n background: var(--mj-border-strong);\n}\n\n.scrollable-list-inner {\n /* Inner container grows naturally based on content */\n}\n\n.entities-section .section-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0; /* Allow content to shrink */\n overflow: hidden;\n}\n\n.entity-tree-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n}\n\n.entity-tree-container mj-tree {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n\n.empty-section {\n padding: 20px 16px;\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 12px;\n font-style: italic;\n}\n\n.nav-item {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n gap: 10px;\n margin-bottom: 2px;\n}\n.nav-item:hover {\n background: var(--mj-bg-surface-card);\n}\n.nav-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n box-shadow: 0 1px 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n.nav-item.selected i {\n color: var(--mj-brand-primary);\n}\n.nav-item.selected .nav-item-label {\n font-weight: 600;\n}\n.nav-item i {\n width: 18px;\n font-size: 14px;\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n text-align: center;\n}\n\n.nav-item-content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.nav-item-label {\n font-size: 13px;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.nav-item-meta {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.entity-search {\n position: relative;\n margin-bottom: 12px;\n flex-shrink: 0;\n}\n\n.search-icon {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.search-input {\n width: 100%;\n padding: 10px 36px 10px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n background: var(--mj-bg-surface-card);\n transition: all 0.15s ease;\n}\n.search-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n.search-input::placeholder {\n color: var(--mj-text-muted);\n}\n\n.clear-search {\n position: absolute;\n right: 6px;\n top: 50%;\n transform: translateY(-50%);\n width: 24px;\n height: 24px;\n border: none;\n background: transparent;\n border-radius: 50%;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n}\n.clear-search:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-muted);\n}\n\n.entity-list {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding-right: 4px;\n}\n.entity-list::-webkit-scrollbar {\n width: 6px;\n}\n.entity-list::-webkit-scrollbar-track {\n background: transparent;\n}\n.entity-list::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n.entity-list::-webkit-scrollbar-thumb:hover {\n background: var(--mj-border-strong);\n}\n\n.entity-list-inner {\n /* Inner container grows naturally based on content */\n /* Does not scroll - parent .entity-list handles scrolling */\n}\n\n.entity-item .nav-item-label {\n flex: 1;\n}\n\n/* ============================================\n NAV PANEL APPLICATION GROUPS\n ============================================ */\n\n.nav-app-group {\n margin-bottom: 2px;\n}\n\n.nav-app-group-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 10px;\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.12s;\n user-select: none;\n}\n\n.nav-app-group-header:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.nav-app-group-icon {\n font-size: 12px;\n color: var(--mj-text-secondary);\n width: 16px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.nav-app-group-name {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--mj-text-secondary);\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.nav-app-group-count {\n font-size: 10px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n padding: 1px 6px;\n border-radius: 8px;\n}\n\n.nav-app-group-chevron {\n font-size: 9px;\n color: var(--mj-text-muted);\n transition: transform 0.15s;\n}\n\n.nav-app-group-chevron.expanded {\n transform: rotate(90deg);\n}\n\n.nav-app-group-entities {\n padding-left: 8px;\n}\n\n.nav-app-group-entities .nav-item {\n padding: 8px 10px 8px 16px;\n}\n\n.collapsed-icons {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding-top: 16px;\n}\n\n.icon-btn {\n width: 36px;\n height: 36px;\n border: none;\n background: transparent;\n border-radius: 8px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-secondary);\n transition: all 0.15s ease;\n position: relative;\n}\n.icon-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n.icon-btn i {\n font-size: 16px;\n}\n\n.collapsed-badge {\n position: absolute;\n top: 2px;\n right: 2px;\n min-width: 16px;\n height: 16px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n background: var(--mj-brand-primary);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n}\n"] }]
639
588
  }], null, { entities: [{
640
589
  type: Input
641
590
  }], selectedEntityName: [{
@@ -650,6 +599,8 @@ export class NavigationPanelComponent {
650
599
  type: Input
651
600
  }], appEntityGroups: [{
652
601
  type: Input
602
+ }], applicationIdFilter: [{
603
+ type: Input
653
604
  }], favoritesSectionExpanded: [{
654
605
  type: Input
655
606
  }], recentSectionExpanded: [{
@@ -672,6 +623,9 @@ export class NavigationPanelComponent {
672
623
  type: Output
673
624
  }], appGroupToggled: [{
674
625
  type: Output
626
+ }], entityTree: [{
627
+ type: ViewChild,
628
+ args: ['entityTree']
675
629
  }] }); })();
676
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NavigationPanelComponent, { className: "NavigationPanelComponent", filePath: "src/DataExplorer/components/navigation-panel/navigation-panel.component.ts", lineNumber: 27 }); })();
630
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NavigationPanelComponent, { className: "NavigationPanelComponent", filePath: "src/DataExplorer/components/navigation-panel/navigation-panel.component.ts", lineNumber: 29 }); })();
677
631
  //# sourceMappingURL=navigation-panel.component.js.map