@memberjunction/ng-dashboards 2.120.0 → 2.122.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 (203) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts +23 -11
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +122 -95
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/agents/agent-editor.component.js +88 -90
  6. package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
  7. package/dist/AI/components/agents/agent-filter-panel.component.js +2 -2
  8. package/dist/AI/components/execution-monitoring.component.d.ts +23 -10
  9. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  10. package/dist/AI/components/execution-monitoring.component.js +143 -124
  11. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  12. package/dist/AI/components/models/model-management-v2.component.d.ts +17 -13
  13. package/dist/AI/components/models/model-management-v2.component.d.ts.map +1 -1
  14. package/dist/AI/components/models/model-management-v2.component.js +248 -266
  15. package/dist/AI/components/models/model-management-v2.component.js.map +1 -1
  16. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +76 -78
  17. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  18. package/dist/AI/components/prompts/prompt-filter-panel.component.js +2 -2
  19. package/dist/AI/components/prompts/prompt-management-v2.component.d.ts +17 -15
  20. package/dist/AI/components/prompts/prompt-management-v2.component.d.ts.map +1 -1
  21. package/dist/AI/components/prompts/prompt-management-v2.component.js +372 -397
  22. package/dist/AI/components/prompts/prompt-management-v2.component.js.map +1 -1
  23. package/dist/AI/components/prompts/prompt-version-control.component.js +100 -102
  24. package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
  25. package/dist/AI/components/system/system-config-filter-panel.component.js +2 -2
  26. package/dist/AI/components/system/system-configuration.component.d.ts +17 -10
  27. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  28. package/dist/AI/components/system/system-configuration.component.js +82 -61
  29. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  30. package/dist/AI/components/widgets/kpi-card.component.d.ts.map +1 -1
  31. package/dist/AI/components/widgets/kpi-card.component.js +11 -7
  32. package/dist/AI/components/widgets/kpi-card.component.js.map +1 -1
  33. package/dist/AI/index.d.ts +4 -0
  34. package/dist/AI/index.d.ts.map +1 -1
  35. package/dist/AI/index.js +6 -1
  36. package/dist/AI/index.js.map +1 -1
  37. package/dist/Actions/components/actions-list-view.component.js +9 -9
  38. package/dist/Actions/components/actions-list-view.component.js.map +1 -1
  39. package/dist/Actions/components/actions-overview.component.d.ts +16 -13
  40. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  41. package/dist/Actions/components/actions-overview.component.js +62 -48
  42. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  43. package/dist/Actions/components/categories-list-view.component.js +9 -9
  44. package/dist/Actions/components/categories-list-view.component.js.map +1 -1
  45. package/dist/Actions/components/code-management.component.d.ts +17 -7
  46. package/dist/Actions/components/code-management.component.d.ts.map +1 -1
  47. package/dist/Actions/components/code-management.component.js +45 -12
  48. package/dist/Actions/components/code-management.component.js.map +1 -1
  49. package/dist/Actions/components/entity-integration.component.d.ts +17 -7
  50. package/dist/Actions/components/entity-integration.component.d.ts.map +1 -1
  51. package/dist/Actions/components/entity-integration.component.js +45 -12
  52. package/dist/Actions/components/entity-integration.component.js.map +1 -1
  53. package/dist/Actions/components/execution-monitoring.component.d.ts +16 -10
  54. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  55. package/dist/Actions/components/execution-monitoring.component.js +56 -30
  56. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  57. package/dist/Actions/components/scheduled-actions.component.d.ts +17 -7
  58. package/dist/Actions/components/scheduled-actions.component.d.ts.map +1 -1
  59. package/dist/Actions/components/scheduled-actions.component.js +45 -12
  60. package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
  61. package/dist/Actions/components/security-permissions.component.d.ts +17 -7
  62. package/dist/Actions/components/security-permissions.component.d.ts.map +1 -1
  63. package/dist/Actions/components/security-permissions.component.js +45 -12
  64. package/dist/Actions/components/security-permissions.component.js.map +1 -1
  65. package/dist/Actions/index.d.ts +6 -1
  66. package/dist/Actions/index.d.ts.map +1 -1
  67. package/dist/Actions/index.js +9 -1
  68. package/dist/Actions/index.js.map +1 -1
  69. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +1 -1
  70. package/dist/ComponentStudio/component-studio-dashboard.component.js +8 -8
  71. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  72. package/dist/ComponentStudio/components/artifact-load-dialog.component.js +52 -57
  73. package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
  74. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +8 -9
  75. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  76. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +107 -0
  77. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -0
  78. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +553 -0
  79. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -0
  80. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.d.ts +179 -0
  81. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.d.ts.map +1 -0
  82. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.js +814 -0
  83. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.js.map +1 -0
  84. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +151 -0
  85. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +1 -0
  86. package/dist/DataExplorer/components/view-selector/view-selector.component.js +480 -0
  87. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -0
  88. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +439 -0
  89. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -0
  90. package/dist/DataExplorer/data-explorer-dashboard.component.js +2129 -0
  91. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -0
  92. package/dist/DataExplorer/index.d.ts +5 -0
  93. package/dist/DataExplorer/index.d.ts.map +1 -0
  94. package/dist/DataExplorer/index.js +10 -0
  95. package/dist/DataExplorer/index.js.map +1 -0
  96. package/dist/DataExplorer/models/explorer-state.interface.d.ts +183 -0
  97. package/dist/DataExplorer/models/explorer-state.interface.d.ts.map +1 -0
  98. package/dist/DataExplorer/models/explorer-state.interface.js +31 -0
  99. package/dist/DataExplorer/models/explorer-state.interface.js.map +1 -0
  100. package/dist/DataExplorer/services/explorer-state.service.d.ts +232 -0
  101. package/dist/DataExplorer/services/explorer-state.service.d.ts.map +1 -0
  102. package/dist/DataExplorer/services/explorer-state.service.js +912 -0
  103. package/dist/DataExplorer/services/explorer-state.service.js.map +1 -0
  104. package/dist/EntityAdmin/components/entity-details.component.d.ts.map +1 -1
  105. package/dist/EntityAdmin/components/entity-details.component.js +11 -13
  106. package/dist/EntityAdmin/components/entity-details.component.js.map +1 -1
  107. package/dist/EntityAdmin/components/entity-filter-panel.component.js +2 -2
  108. package/dist/EntityAdmin/components/erd-composite.component.js +2 -2
  109. package/dist/EntityAdmin/components/erd-diagram.component.js +2 -2
  110. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +1 -1
  111. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  112. package/dist/EntityAdmin/entity-admin-dashboard.component.js +14 -15
  113. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  114. package/dist/Home/home-dashboard.component.d.ts +122 -0
  115. package/dist/Home/home-dashboard.component.d.ts.map +1 -0
  116. package/dist/Home/home-dashboard.component.js +698 -0
  117. package/dist/Home/home-dashboard.component.js.map +1 -0
  118. package/dist/Scheduling/components/index.d.ts +11 -0
  119. package/dist/Scheduling/components/index.d.ts.map +1 -0
  120. package/dist/Scheduling/components/index.js +13 -0
  121. package/dist/Scheduling/components/index.js.map +1 -0
  122. package/dist/Scheduling/components/scheduling-health-resource.component.d.ts +20 -0
  123. package/dist/Scheduling/components/scheduling-health-resource.component.d.ts.map +1 -0
  124. package/dist/Scheduling/components/scheduling-health-resource.component.js +55 -0
  125. package/dist/Scheduling/components/scheduling-health-resource.component.js.map +1 -0
  126. package/dist/Scheduling/components/scheduling-health.component.js +7 -8
  127. package/dist/Scheduling/components/scheduling-health.component.js.map +1 -1
  128. package/dist/Scheduling/components/scheduling-history-resource.component.d.ts +20 -0
  129. package/dist/Scheduling/components/scheduling-history-resource.component.d.ts.map +1 -0
  130. package/dist/Scheduling/components/scheduling-history-resource.component.js +55 -0
  131. package/dist/Scheduling/components/scheduling-history-resource.component.js.map +1 -0
  132. package/dist/Scheduling/components/scheduling-history.component.js +7 -8
  133. package/dist/Scheduling/components/scheduling-history.component.js.map +1 -1
  134. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +20 -0
  135. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -0
  136. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +55 -0
  137. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -0
  138. package/dist/Scheduling/components/scheduling-jobs.component.js +7 -8
  139. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  140. package/dist/Scheduling/components/scheduling-monitor-resource.component.d.ts +20 -0
  141. package/dist/Scheduling/components/scheduling-monitor-resource.component.d.ts.map +1 -0
  142. package/dist/Scheduling/components/scheduling-monitor-resource.component.js +55 -0
  143. package/dist/Scheduling/components/scheduling-monitor-resource.component.js.map +1 -0
  144. package/dist/Scheduling/components/scheduling-monitoring.component.js +7 -8
  145. package/dist/Scheduling/components/scheduling-monitoring.component.js.map +1 -1
  146. package/dist/Scheduling/components/scheduling-types-resource.component.d.ts +20 -0
  147. package/dist/Scheduling/components/scheduling-types-resource.component.d.ts.map +1 -0
  148. package/dist/Scheduling/components/scheduling-types-resource.component.js +55 -0
  149. package/dist/Scheduling/components/scheduling-types-resource.component.js.map +1 -0
  150. package/dist/Scheduling/components/scheduling-types.component.js +7 -8
  151. package/dist/Scheduling/components/scheduling-types.component.js.map +1 -1
  152. package/dist/Scheduling/scheduling-dashboard.component.d.ts +1 -1
  153. package/dist/Scheduling/scheduling-dashboard.component.js +3 -3
  154. package/dist/Testing/components/index.d.ts +11 -0
  155. package/dist/Testing/components/index.d.ts.map +1 -0
  156. package/dist/Testing/components/index.js +13 -0
  157. package/dist/Testing/components/index.js.map +1 -0
  158. package/dist/Testing/components/testing-analytics-resource.component.d.ts +20 -0
  159. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -0
  160. package/dist/Testing/components/testing-analytics-resource.component.js +55 -0
  161. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -0
  162. package/dist/Testing/components/testing-execution-resource.component.d.ts +20 -0
  163. package/dist/Testing/components/testing-execution-resource.component.d.ts.map +1 -0
  164. package/dist/Testing/components/testing-execution-resource.component.js +55 -0
  165. package/dist/Testing/components/testing-execution-resource.component.js.map +1 -0
  166. package/dist/Testing/components/testing-execution.component.js +3 -3
  167. package/dist/Testing/components/testing-execution.component.js.map +1 -1
  168. package/dist/Testing/components/testing-feedback-resource.component.d.ts +20 -0
  169. package/dist/Testing/components/testing-feedback-resource.component.d.ts.map +1 -0
  170. package/dist/Testing/components/testing-feedback-resource.component.js +55 -0
  171. package/dist/Testing/components/testing-feedback-resource.component.js.map +1 -0
  172. package/dist/Testing/components/testing-overview-resource.component.d.ts +20 -0
  173. package/dist/Testing/components/testing-overview-resource.component.d.ts.map +1 -0
  174. package/dist/Testing/components/testing-overview-resource.component.js +55 -0
  175. package/dist/Testing/components/testing-overview-resource.component.js.map +1 -0
  176. package/dist/Testing/components/testing-version-resource.component.d.ts +20 -0
  177. package/dist/Testing/components/testing-version-resource.component.d.ts.map +1 -0
  178. package/dist/Testing/components/testing-version-resource.component.js +55 -0
  179. package/dist/Testing/components/testing-version-resource.component.js.map +1 -0
  180. package/dist/Testing/testing-dashboard.component.d.ts +1 -1
  181. package/dist/Testing/testing-dashboard.component.js +23 -25
  182. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  183. package/dist/module.d.ts +83 -66
  184. package/dist/module.d.ts.map +1 -1
  185. package/dist/module.js +137 -19
  186. package/dist/module.js.map +1 -1
  187. package/dist/public-api.d.ts +6 -4
  188. package/dist/public-api.d.ts.map +1 -1
  189. package/dist/public-api.js +41 -13
  190. package/dist/public-api.js.map +1 -1
  191. package/package.json +17 -14
  192. package/dist/AI/ai-dashboard.component.d.ts +0 -62
  193. package/dist/AI/ai-dashboard.component.d.ts.map +0 -1
  194. package/dist/AI/ai-dashboard.component.js +0 -338
  195. package/dist/AI/ai-dashboard.component.js.map +0 -1
  196. package/dist/Actions/actions-management-dashboard.component.d.ts +0 -52
  197. package/dist/Actions/actions-management-dashboard.component.d.ts.map +0 -1
  198. package/dist/Actions/actions-management-dashboard.component.js +0 -308
  199. package/dist/Actions/actions-management-dashboard.component.js.map +0 -1
  200. package/dist/generic/base-dashboard.d.ts +0 -65
  201. package/dist/generic/base-dashboard.d.ts.map +0 -1
  202. package/dist/generic/base-dashboard.js +0 -74
  203. package/dist/generic/base-dashboard.js.map +0 -1
@@ -0,0 +1,553 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import { Metadata, CompositeKey } from '@memberjunction/core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/forms";
5
+ const _forTrack0 = ($index, $item) => $item.displayName;
6
+ const _forTrack1 = ($index, $item) => $item.compositeKeyString;
7
+ const _forTrack2 = ($index, $item) => $item.ID;
8
+ function NavigationPanelComponent_Conditional_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
9
+ i0.ɵɵelementStart(0, "span", 9);
10
+ i0.ɵɵtext(1);
11
+ i0.ɵɵelementEnd();
12
+ } if (rf & 2) {
13
+ const ctx_r1 = i0.ɵɵnextContext(2);
14
+ i0.ɵɵadvance();
15
+ i0.ɵɵtextInterpolate1("(", ctx_r1.favoriteRecords.length + ctx_r1.favoriteEntities.length, ")");
16
+ } }
17
+ function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_1_Template(rf, ctx) { if (rf & 1) {
18
+ i0.ɵɵelementStart(0, "div", 17)(1, "span");
19
+ i0.ɵɵtext(2, "No favorites yet");
20
+ i0.ɵɵelementEnd()();
21
+ } }
22
+ function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_3_Template(rf, ctx) { if (rf & 1) {
23
+ const _r3 = i0.ɵɵgetCurrentView();
24
+ i0.ɵɵelementStart(0, "div", 21);
25
+ 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)); });
26
+ i0.ɵɵelement(1, "i");
27
+ i0.ɵɵelementStart(2, "span", 22);
28
+ i0.ɵɵtext(3);
29
+ i0.ɵɵelementEnd()();
30
+ } if (rf & 2) {
31
+ const favorite_r4 = ctx.$implicit;
32
+ const ctx_r1 = i0.ɵɵnextContext(4);
33
+ i0.ɵɵproperty("title", favorite_r4.entityName ? favorite_r4.entityName + " - " + favorite_r4.displayName : favorite_r4.displayName);
34
+ i0.ɵɵadvance();
35
+ i0.ɵɵclassMap(ctx_r1.getFavoriteIcon(favorite_r4));
36
+ i0.ɵɵadvance(2);
37
+ i0.ɵɵtextInterpolate(favorite_r4.displayName);
38
+ } }
39
+ function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_5_Template(rf, ctx) { if (rf & 1) {
40
+ const _r5 = i0.ɵɵgetCurrentView();
41
+ i0.ɵɵelementStart(0, "div", 21);
42
+ 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)); });
43
+ i0.ɵɵelement(1, "i");
44
+ i0.ɵɵelementStart(2, "span", 22);
45
+ i0.ɵɵtext(3);
46
+ i0.ɵɵelementEnd()();
47
+ } if (rf & 2) {
48
+ const favorite_r6 = ctx.$implicit;
49
+ const ctx_r1 = i0.ɵɵnextContext(4);
50
+ i0.ɵɵproperty("title", favorite_r6.entityName ? favorite_r6.entityName + " - " + favorite_r6.displayName : favorite_r6.displayName);
51
+ i0.ɵɵadvance();
52
+ i0.ɵɵclassMap(ctx_r1.getFavoriteIcon(favorite_r6));
53
+ i0.ɵɵadvance(2);
54
+ i0.ɵɵtextInterpolate(favorite_r6.displayName);
55
+ } }
56
+ function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_Template(rf, ctx) { if (rf & 1) {
57
+ i0.ɵɵelementStart(0, "div", 18)(1, "div", 19);
58
+ i0.ɵɵrepeaterCreate(2, NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_3_Template, 4, 4, "div", 20, _forTrack0);
59
+ i0.ɵɵrepeaterCreate(4, NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_5_Template, 4, 4, "div", 20, _forTrack0);
60
+ i0.ɵɵelementEnd()();
61
+ } if (rf & 2) {
62
+ const ctx_r1 = i0.ɵɵnextContext(3);
63
+ i0.ɵɵadvance(2);
64
+ i0.ɵɵrepeater(ctx_r1.favoriteEntities);
65
+ i0.ɵɵadvance(2);
66
+ i0.ɵɵrepeater(ctx_r1.favoriteRecords);
67
+ } }
68
+ function NavigationPanelComponent_Conditional_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
69
+ i0.ɵɵelementStart(0, "div", 11);
70
+ i0.ɵɵtemplate(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.ɵɵelementEnd();
72
+ } if (rf & 2) {
73
+ const ctx_r1 = i0.ɵɵnextContext(2);
74
+ i0.ɵɵadvance();
75
+ i0.ɵɵconditional(ctx_r1.favoriteRecords.length + ctx_r1.favoriteEntities.length === 0 ? 1 : 2);
76
+ } }
77
+ function NavigationPanelComponent_Conditional_3_Conditional_14_Template(rf, ctx) { if (rf & 1) {
78
+ i0.ɵɵelementStart(0, "span", 9);
79
+ i0.ɵɵtext(1);
80
+ i0.ɵɵelementEnd();
81
+ } if (rf & 2) {
82
+ const ctx_r1 = i0.ɵɵnextContext(2);
83
+ i0.ɵɵadvance();
84
+ i0.ɵɵtextInterpolate1("(", ctx_r1.filteredRecentItems.length, ")");
85
+ } }
86
+ function NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_1_Template(rf, ctx) { if (rf & 1) {
87
+ i0.ɵɵelementStart(0, "div", 17)(1, "span");
88
+ i0.ɵɵtext(2, "No recent items");
89
+ i0.ɵɵelementEnd()();
90
+ } }
91
+ function NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_For_3_Template(rf, ctx) { if (rf & 1) {
92
+ const _r7 = i0.ɵɵgetCurrentView();
93
+ i0.ɵɵelementStart(0, "div", 21);
94
+ 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)); });
95
+ i0.ɵɵelement(1, "i");
96
+ i0.ɵɵelementStart(2, "div", 23)(3, "span", 22);
97
+ i0.ɵɵtext(4);
98
+ i0.ɵɵelementEnd();
99
+ i0.ɵɵelementStart(5, "span", 24);
100
+ i0.ɵɵtext(6);
101
+ i0.ɵɵelementEnd()()();
102
+ } if (rf & 2) {
103
+ const item_r8 = ctx.$implicit;
104
+ const ctx_r1 = i0.ɵɵnextContext(4);
105
+ i0.ɵɵproperty("title", item_r8.entityName + " - " + item_r8.displayName);
106
+ i0.ɵɵadvance();
107
+ i0.ɵɵclassMap(ctx_r1.getRecentItemIcon(item_r8));
108
+ i0.ɵɵadvance(3);
109
+ i0.ɵɵtextInterpolate(item_r8.displayName);
110
+ i0.ɵɵadvance(2);
111
+ i0.ɵɵtextInterpolate(ctx_r1.formatTimestamp(item_r8.timestamp));
112
+ } }
113
+ function NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_Template(rf, ctx) { if (rf & 1) {
114
+ i0.ɵɵelementStart(0, "div", 18)(1, "div", 19);
115
+ i0.ɵɵrepeaterCreate(2, NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_For_3_Template, 7, 5, "div", 20, _forTrack1);
116
+ i0.ɵɵelementEnd()();
117
+ } if (rf & 2) {
118
+ const ctx_r1 = i0.ɵɵnextContext(3);
119
+ i0.ɵɵadvance(2);
120
+ i0.ɵɵrepeater(ctx_r1.filteredRecentItems);
121
+ } }
122
+ function NavigationPanelComponent_Conditional_3_Conditional_16_Template(rf, ctx) { if (rf & 1) {
123
+ i0.ɵɵelementStart(0, "div", 11);
124
+ i0.ɵɵtemplate(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.ɵɵelementEnd();
126
+ } if (rf & 2) {
127
+ const ctx_r1 = i0.ɵɵnextContext(2);
128
+ i0.ɵɵadvance();
129
+ i0.ɵɵconditional(ctx_r1.filteredRecentItems.length === 0 ? 1 : 2);
130
+ } }
131
+ function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_4_Template(rf, ctx) { if (rf & 1) {
132
+ const _r10 = i0.ɵɵgetCurrentView();
133
+ i0.ɵɵelementStart(0, "button", 32);
134
+ 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 = ""); });
135
+ i0.ɵɵelement(1, "i", 33);
136
+ i0.ɵɵelementEnd();
137
+ } }
138
+ function NavigationPanelComponent_Conditional_3_Conditional_25_For_8_Template(rf, ctx) { if (rf & 1) {
139
+ const _r11 = i0.ɵɵgetCurrentView();
140
+ i0.ɵɵelementStart(0, "div", 34);
141
+ i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Conditional_25_For_8_Template_div_click_0_listener() { const entity_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onEntityClick(entity_r12)); });
142
+ i0.ɵɵelement(1, "i");
143
+ i0.ɵɵelementStart(2, "span", 22);
144
+ i0.ɵɵtext(3);
145
+ i0.ɵɵelementEnd()();
146
+ } if (rf & 2) {
147
+ const entity_r12 = ctx.$implicit;
148
+ const ctx_r1 = i0.ɵɵnextContext(3);
149
+ i0.ɵɵclassProp("selected", ctx_r1.isEntitySelected(entity_r12));
150
+ i0.ɵɵproperty("title", entity_r12.Description || entity_r12.Name);
151
+ i0.ɵɵadvance();
152
+ i0.ɵɵclassMap(ctx_r1.getEntityIcon(entity_r12));
153
+ i0.ɵɵadvance(2);
154
+ i0.ɵɵtextInterpolate(entity_r12.Name);
155
+ } }
156
+ function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_9_Template(rf, ctx) { if (rf & 1) {
157
+ i0.ɵɵelementStart(0, "div", 17)(1, "span");
158
+ i0.ɵɵtext(2);
159
+ i0.ɵɵelementEnd()();
160
+ } if (rf & 2) {
161
+ const ctx_r1 = i0.ɵɵnextContext(3);
162
+ i0.ɵɵadvance(2);
163
+ i0.ɵɵtextInterpolate1("No entities match \"", ctx_r1.entitySearchTerm, "\"");
164
+ } }
165
+ function NavigationPanelComponent_Conditional_3_Conditional_25_Template(rf, ctx) { if (rf & 1) {
166
+ const _r9 = i0.ɵɵgetCurrentView();
167
+ i0.ɵɵelementStart(0, "div", 16)(1, "div", 25);
168
+ i0.ɵɵelement(2, "i", 26);
169
+ i0.ɵɵelementStart(3, "input", 27);
170
+ 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); });
171
+ i0.ɵɵelementEnd();
172
+ i0.ɵɵtemplate(4, NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_4_Template, 2, 0, "button", 28);
173
+ i0.ɵɵelementEnd();
174
+ i0.ɵɵelementStart(5, "div", 29)(6, "div", 30);
175
+ i0.ɵɵrepeaterCreate(7, NavigationPanelComponent_Conditional_3_Conditional_25_For_8_Template, 4, 6, "div", 31, _forTrack2);
176
+ i0.ɵɵtemplate(9, NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_9_Template, 3, 1, "div", 17);
177
+ i0.ɵɵelementEnd()()();
178
+ } if (rf & 2) {
179
+ const ctx_r1 = i0.ɵɵnextContext(2);
180
+ i0.ɵɵadvance(3);
181
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.entitySearchTerm);
182
+ i0.ɵɵadvance();
183
+ i0.ɵɵconditional(ctx_r1.entitySearchTerm ? 4 : -1);
184
+ i0.ɵɵadvance(3);
185
+ i0.ɵɵrepeater(ctx_r1.filteredEntities);
186
+ i0.ɵɵadvance(2);
187
+ i0.ɵɵconditional(ctx_r1.filteredEntities.length === 0 && ctx_r1.entitySearchTerm ? 9 : -1);
188
+ } }
189
+ function NavigationPanelComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
190
+ const _r1 = i0.ɵɵgetCurrentView();
191
+ i0.ɵɵelementStart(0, "div", 3)(1, "div", 5)(2, "div", 6);
192
+ 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")); });
193
+ i0.ɵɵelement(3, "i", 7);
194
+ i0.ɵɵelementStart(4, "span", 8);
195
+ i0.ɵɵtext(5, "Favorites");
196
+ i0.ɵɵelementEnd();
197
+ i0.ɵɵtemplate(6, NavigationPanelComponent_Conditional_3_Conditional_6_Template, 2, 1, "span", 9);
198
+ i0.ɵɵelement(7, "i", 10);
199
+ i0.ɵɵelementEnd();
200
+ i0.ɵɵtemplate(8, NavigationPanelComponent_Conditional_3_Conditional_8_Template, 3, 1, "div", 11);
201
+ i0.ɵɵelementEnd();
202
+ i0.ɵɵelementStart(9, "div", 12)(10, "div", 6);
203
+ 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")); });
204
+ i0.ɵɵelement(11, "i", 13);
205
+ i0.ɵɵelementStart(12, "span", 8);
206
+ i0.ɵɵtext(13, "Recent");
207
+ i0.ɵɵelementEnd();
208
+ i0.ɵɵtemplate(14, NavigationPanelComponent_Conditional_3_Conditional_14_Template, 2, 1, "span", 9);
209
+ i0.ɵɵelement(15, "i", 10);
210
+ i0.ɵɵelementEnd();
211
+ i0.ɵɵtemplate(16, NavigationPanelComponent_Conditional_3_Conditional_16_Template, 3, 1, "div", 11);
212
+ i0.ɵɵelementEnd();
213
+ i0.ɵɵelementStart(17, "div", 14)(18, "div", 6);
214
+ 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")); });
215
+ i0.ɵɵelement(19, "i", 15);
216
+ i0.ɵɵelementStart(20, "span", 8);
217
+ i0.ɵɵtext(21, "Entities");
218
+ i0.ɵɵelementEnd();
219
+ i0.ɵɵelementStart(22, "span", 9);
220
+ i0.ɵɵtext(23);
221
+ i0.ɵɵelementEnd();
222
+ i0.ɵɵelement(24, "i", 10);
223
+ i0.ɵɵelementEnd();
224
+ i0.ɵɵtemplate(25, NavigationPanelComponent_Conditional_3_Conditional_25_Template, 10, 3, "div", 16);
225
+ i0.ɵɵelementEnd()();
226
+ } if (rf & 2) {
227
+ const ctx_r1 = i0.ɵɵnextContext();
228
+ i0.ɵɵadvance(6);
229
+ i0.ɵɵconditional(ctx_r1.favoriteRecords.length + ctx_r1.favoriteEntities.length > 0 ? 6 : -1);
230
+ i0.ɵɵadvance();
231
+ i0.ɵɵclassProp("fa-chevron-down", ctx_r1.favoritesSectionExpanded)("fa-chevron-right", !ctx_r1.favoritesSectionExpanded);
232
+ i0.ɵɵadvance();
233
+ i0.ɵɵconditional(ctx_r1.favoritesSectionExpanded ? 8 : -1);
234
+ i0.ɵɵadvance(6);
235
+ i0.ɵɵconditional(ctx_r1.filteredRecentItems.length > 0 ? 14 : -1);
236
+ i0.ɵɵadvance();
237
+ i0.ɵɵclassProp("fa-chevron-down", ctx_r1.recentSectionExpanded)("fa-chevron-right", !ctx_r1.recentSectionExpanded);
238
+ i0.ɵɵadvance();
239
+ i0.ɵɵconditional(ctx_r1.recentSectionExpanded ? 16 : -1);
240
+ i0.ɵɵadvance(7);
241
+ i0.ɵɵtextInterpolate1("(", ctx_r1.entities.length, ")");
242
+ i0.ɵɵadvance();
243
+ i0.ɵɵclassProp("fa-chevron-down", ctx_r1.entitiesSectionExpanded)("fa-chevron-right", !ctx_r1.entitiesSectionExpanded);
244
+ i0.ɵɵadvance();
245
+ i0.ɵɵconditional(ctx_r1.entitiesSectionExpanded ? 25 : -1);
246
+ } }
247
+ function NavigationPanelComponent_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
248
+ i0.ɵɵelementStart(0, "span", 37);
249
+ i0.ɵɵtext(1);
250
+ i0.ɵɵelementEnd();
251
+ } if (rf & 2) {
252
+ const ctx_r1 = i0.ɵɵnextContext(2);
253
+ i0.ɵɵadvance();
254
+ i0.ɵɵtextInterpolate(ctx_r1.favoriteRecords.length + ctx_r1.favoriteEntities.length);
255
+ } }
256
+ function NavigationPanelComponent_Conditional_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
257
+ i0.ɵɵelementStart(0, "span", 37);
258
+ i0.ɵɵtext(1);
259
+ i0.ɵɵelementEnd();
260
+ } if (rf & 2) {
261
+ const ctx_r1 = i0.ɵɵnextContext(2);
262
+ i0.ɵɵadvance();
263
+ i0.ɵɵtextInterpolate(ctx_r1.filteredRecentItems.length);
264
+ } }
265
+ function NavigationPanelComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
266
+ const _r13 = i0.ɵɵgetCurrentView();
267
+ i0.ɵɵelementStart(0, "div", 4)(1, "button", 35);
268
+ i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_4_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCollapsedIconClick("favorites")); });
269
+ i0.ɵɵelement(2, "i", 36);
270
+ i0.ɵɵtemplate(3, NavigationPanelComponent_Conditional_4_Conditional_3_Template, 2, 1, "span", 37);
271
+ i0.ɵɵelementEnd();
272
+ i0.ɵɵelementStart(4, "button", 38);
273
+ i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_4_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCollapsedIconClick("recent")); });
274
+ i0.ɵɵelement(5, "i", 39);
275
+ i0.ɵɵtemplate(6, NavigationPanelComponent_Conditional_4_Conditional_6_Template, 2, 1, "span", 37);
276
+ i0.ɵɵelementEnd();
277
+ i0.ɵɵelementStart(7, "button", 40);
278
+ i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_4_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCollapsedIconClick("entities")); });
279
+ i0.ɵɵelement(8, "i", 41);
280
+ i0.ɵɵelementStart(9, "span", 37);
281
+ i0.ɵɵtext(10);
282
+ i0.ɵɵelementEnd()()();
283
+ } if (rf & 2) {
284
+ const ctx_r1 = i0.ɵɵnextContext();
285
+ i0.ɵɵadvance(3);
286
+ i0.ɵɵconditional(ctx_r1.favoriteRecords.length + ctx_r1.favoriteEntities.length > 0 ? 3 : -1);
287
+ i0.ɵɵadvance(3);
288
+ i0.ɵɵconditional(ctx_r1.filteredRecentItems.length > 0 ? 6 : -1);
289
+ i0.ɵɵadvance(4);
290
+ i0.ɵɵtextInterpolate(ctx_r1.entities.length);
291
+ } }
292
+ export class NavigationPanelComponent {
293
+ entities = [];
294
+ selectedEntityName = null;
295
+ favorites = [];
296
+ recentItems = [];
297
+ collapsed = false;
298
+ /**
299
+ * Optional set of allowed entity names for filtering favorites/recents.
300
+ * If provided, only items matching these entities will be shown.
301
+ */
302
+ allowedEntityNames = null;
303
+ // Section expansion states
304
+ favoritesSectionExpanded = true;
305
+ recentSectionExpanded = true;
306
+ entitiesSectionExpanded = true;
307
+ viewsSectionExpanded = true;
308
+ entitySelected = new EventEmitter();
309
+ toggleCollapse = new EventEmitter();
310
+ sectionToggled = new EventEmitter();
311
+ openRecord = new EventEmitter();
312
+ /** Emitted when a record should be selected within Data Explorer (navigate to entity + select record) */
313
+ selectRecord = new EventEmitter();
314
+ /** Emitted when a collapsed icon is clicked - expands panel and focuses section */
315
+ expandAndFocus = new EventEmitter();
316
+ metadata = new Metadata();
317
+ // Entity search/filter
318
+ entitySearchTerm = '';
319
+ /**
320
+ * Get filtered entities based on search term
321
+ */
322
+ get filteredEntities() {
323
+ if (!this.entitySearchTerm) {
324
+ return this.entities;
325
+ }
326
+ const term = this.entitySearchTerm.toLowerCase();
327
+ return this.entities.filter(e => e.Name.toLowerCase().includes(term) ||
328
+ (e.Description && e.Description.toLowerCase().includes(term)));
329
+ }
330
+ /**
331
+ * Get recent items filtered by allowed entities (if filter is active)
332
+ */
333
+ get filteredRecentItems() {
334
+ if (!this.allowedEntityNames) {
335
+ return this.recentItems;
336
+ }
337
+ return this.recentItems.filter(r => this.allowedEntityNames.has(r.entityName));
338
+ }
339
+ /**
340
+ * Get favorites filtered to records only (respecting entity filter)
341
+ */
342
+ get favoriteRecords() {
343
+ const records = this.favorites.filter(f => f.type === 'record');
344
+ if (!this.allowedEntityNames) {
345
+ return records;
346
+ }
347
+ return records.filter(f => f.entityName && this.allowedEntityNames.has(f.entityName));
348
+ }
349
+ /**
350
+ * Get favorites filtered to entities only (respecting entity filter)
351
+ */
352
+ get favoriteEntities() {
353
+ const entities = this.favorites.filter(f => f.type === 'entity');
354
+ if (!this.allowedEntityNames) {
355
+ return entities;
356
+ }
357
+ return entities.filter(f => f.entityName && this.allowedEntityNames.has(f.entityName));
358
+ }
359
+ /**
360
+ * Handle entity click
361
+ */
362
+ onEntityClick(entity) {
363
+ this.entitySelected.emit(entity);
364
+ }
365
+ /**
366
+ * Handle favorite click - navigates to entity and selects record within Data Explorer
367
+ */
368
+ onFavoriteClick(favorite) {
369
+ if (favorite.type === 'entity' && favorite.entityName) {
370
+ const entity = this.entities.find(e => e.Name === favorite.entityName);
371
+ if (entity) {
372
+ this.entitySelected.emit(entity);
373
+ }
374
+ }
375
+ else if (favorite.type === 'record' && favorite.entityName && favorite.compositeKeyString) {
376
+ // Extract record ID from the composite key string
377
+ // Format is "FieldName|Value" or "FieldName|Value||FieldName2|Value2"
378
+ const compositeKey = new CompositeKey();
379
+ compositeKey.LoadFromConcatenatedString(favorite.compositeKeyString);
380
+ const recordId = compositeKey.KeyValuePairs[0]?.Value?.toString() || '';
381
+ // Navigate to entity and select record within Data Explorer (not full tab)
382
+ this.selectRecord.emit({
383
+ entityName: favorite.entityName,
384
+ recordId
385
+ });
386
+ }
387
+ }
388
+ /**
389
+ * Handle recent item click - navigates to entity and selects record within Data Explorer
390
+ */
391
+ onRecentClick(item) {
392
+ // Extract record ID from the composite key string
393
+ const compositeKey = new CompositeKey();
394
+ compositeKey.LoadFromConcatenatedString(item.compositeKeyString);
395
+ const recordId = compositeKey.KeyValuePairs[0]?.Value?.toString() || '';
396
+ // Navigate to entity and select record within Data Explorer (not full tab)
397
+ this.selectRecord.emit({
398
+ entityName: item.entityName,
399
+ recordId
400
+ });
401
+ }
402
+ /**
403
+ * Handle section header click
404
+ */
405
+ onSectionToggle(section) {
406
+ this.sectionToggled.emit(section);
407
+ }
408
+ /**
409
+ * Handle collapse toggle
410
+ */
411
+ onToggleCollapse() {
412
+ this.toggleCollapse.emit();
413
+ }
414
+ /**
415
+ * Handle collapsed icon click - expands panel and focuses section
416
+ */
417
+ onCollapsedIconClick(section) {
418
+ this.expandAndFocus.emit(section);
419
+ }
420
+ /**
421
+ * Check if entity is selected
422
+ */
423
+ isEntitySelected(entity) {
424
+ return entity.Name === this.selectedEntityName;
425
+ }
426
+ /**
427
+ * Get icon for entity
428
+ */
429
+ getEntityIcon(entity) {
430
+ const icon = entity.Icon;
431
+ if (!icon) {
432
+ return 'fa-solid fa-table';
433
+ }
434
+ // If icon already has fa- prefix, use it as-is
435
+ if (icon.startsWith('fa-') || icon.startsWith('fa ')) {
436
+ // Ensure it has a style prefix (fa-solid, fa-regular, etc.)
437
+ if (icon.startsWith('fa-solid') || icon.startsWith('fa-regular') ||
438
+ icon.startsWith('fa-light') || icon.startsWith('fa-brands') ||
439
+ icon.startsWith('fa ')) {
440
+ return icon;
441
+ }
442
+ // It's just "fa-something", add fa-solid prefix
443
+ return `fa-solid ${icon}`;
444
+ }
445
+ // Check if it's just an icon name like "table" or "users"
446
+ return `fa-solid fa-${icon}`;
447
+ }
448
+ /**
449
+ * Format recent item timestamp
450
+ */
451
+ formatTimestamp(timestamp) {
452
+ const date = new Date(timestamp);
453
+ const now = new Date();
454
+ const diffMs = now.getTime() - date.getTime();
455
+ const diffMins = Math.floor(diffMs / 60000);
456
+ if (diffMins < 1)
457
+ return 'Just now';
458
+ if (diffMins < 60)
459
+ return `${diffMins}m ago`;
460
+ const diffHours = Math.floor(diffMins / 60);
461
+ if (diffHours < 24)
462
+ return `${diffHours}h ago`;
463
+ const diffDays = Math.floor(diffHours / 24);
464
+ if (diffDays < 7)
465
+ return `${diffDays}d ago`;
466
+ return date.toLocaleDateString();
467
+ }
468
+ /**
469
+ * Get icon for a recent item based on its entity
470
+ */
471
+ getRecentItemIcon(item) {
472
+ const entityInfo = this.metadata.Entities.find(e => e.Name === item.entityName);
473
+ if (entityInfo) {
474
+ return this.getEntityIcon(entityInfo);
475
+ }
476
+ return 'fa-solid fa-file-alt';
477
+ }
478
+ /**
479
+ * Get icon for a favorite item based on its type and entity
480
+ */
481
+ getFavoriteIcon(favorite) {
482
+ if (favorite.type === 'view') {
483
+ return 'fa-solid fa-filter';
484
+ }
485
+ // For entity and record types, look up the entity icon
486
+ if (favorite.entityName) {
487
+ const entityInfo = this.metadata.Entities.find(e => e.Name === favorite.entityName);
488
+ if (entityInfo) {
489
+ return this.getEntityIcon(entityInfo);
490
+ }
491
+ }
492
+ // Fallback icons
493
+ if (favorite.type === 'entity') {
494
+ return 'fa-solid fa-table';
495
+ }
496
+ return 'fa-solid fa-file-alt';
497
+ }
498
+ static ɵfac = function NavigationPanelComponent_Factory(t) { return new (t || NavigationPanelComponent)(); };
499
+ 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", favoritesSectionExpanded: "favoritesSectionExpanded", recentSectionExpanded: "recentSectionExpanded", entitiesSectionExpanded: "entitiesSectionExpanded", viewsSectionExpanded: "viewsSectionExpanded" }, outputs: { entitySelected: "entitySelected", toggleCollapse: "toggleCollapse", sectionToggled: "sectionToggled", openRecord: "openRecord", selectRecord: "selectRecord", expandAndFocus: "expandAndFocus" }, 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, "nav-item", "entity-item", 3, "selected", "title"], [1, "clear-search", 3, "click"], [1, "fa-solid", "fa-times"], [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) {
500
+ i0.ɵɵelementStart(0, "div", 0)(1, "button", 1);
501
+ i0.ɵɵlistener("click", function NavigationPanelComponent_Template_button_click_1_listener() { return ctx.onToggleCollapse(); });
502
+ i0.ɵɵelement(2, "i", 2);
503
+ i0.ɵɵelementEnd();
504
+ i0.ɵɵtemplate(3, NavigationPanelComponent_Conditional_3_Template, 26, 18, "div", 3)(4, NavigationPanelComponent_Conditional_4_Template, 11, 3, "div", 4);
505
+ i0.ɵɵelementEnd();
506
+ } if (rf & 2) {
507
+ i0.ɵɵclassProp("collapsed", ctx.collapsed);
508
+ i0.ɵɵadvance();
509
+ i0.ɵɵproperty("title", ctx.collapsed ? "Expand" : "Collapse");
510
+ i0.ɵɵadvance();
511
+ i0.ɵɵclassProp("fa-chevron-right", ctx.collapsed)("fa-chevron-left", !ctx.collapsed);
512
+ i0.ɵɵadvance();
513
+ i0.ɵɵconditional(!ctx.collapsed ? 3 : 4);
514
+ } }, 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: white;\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 #e8e8e8;\n flex-shrink: 0;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: #333;\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: #f5f5f5;\n border-radius: 6px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #666;\n transition: all 0.15s ease;\n z-index: 10;\n}\n.collapse-toggle[_ngcontent-%COMP%]:hover {\n background: #e8e8e8;\n color: #333;\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: #f5f5f5;\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 #f0f0f0;\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: #fafafa;\n}\n.section-header[_ngcontent-%COMP%]:hover {\n background: #f0f0f0;\n}\n\n.section-icon[_ngcontent-%COMP%] {\n width: 20px;\n font-size: 13px;\n color: #666;\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: #555;\n}\n\n.section-count[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #999;\n margin-right: 8px;\n font-weight: 500;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n color: #999;\n transition: transform 0.15s ease;\n}\n\n.section-content[_ngcontent-%COMP%] {\n padding: 8px 12px 12px 12px;\n background: white;\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: #ddd;\n border-radius: 3px;\n}\n.scrollable-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: #ccc;\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: #aaa;\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: #f5f5f5;\n}\n.nav-item.selected[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #e3f2fd 0%, #bbdefb 100%);\n color: #1565c0;\n box-shadow: 0 1px 3px rgba(21, 101, 192, 0.15);\n}\n.nav-item.selected[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #1565c0;\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: #666;\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: #333;\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: #999;\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: #999;\n}\n\n.search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 36px 10px 36px;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n font-size: 13px;\n background: #fafafa;\n transition: all 0.15s ease;\n}\n.search-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #1976d2;\n background: white;\n box-shadow: 0 0 0 3px rgba(25, 118, 210, 0.1);\n}\n.search-input[_ngcontent-%COMP%]::placeholder {\n color: #aaa;\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: #999;\n}\n.clear-search[_ngcontent-%COMP%]:hover {\n background: #e0e0e0;\n color: #555;\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: #ddd;\n border-radius: 3px;\n}\n.entity-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: #ccc;\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.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: #666;\n transition: all 0.15s ease;\n position: relative;\n}\n.icon-btn[_ngcontent-%COMP%]:hover {\n background: #f0f0f0;\n color: #1976d2;\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: white;\n background: #1976d2;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n}"] });
515
+ }
516
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NavigationPanelComponent, [{
517
+ type: Component,
518
+ args: [{ 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 <!-- Inner content that grows naturally -->\n <div class=\"entity-list-inner\">\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.Name\">\n <i [class]=\"getEntityIcon(entity)\"></i>\n <span class=\"nav-item-label\">{{ entity.Name }}</span>\n </div>\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: white;\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 #e8e8e8;\n flex-shrink: 0;\n}\n\n.panel-title {\n font-size: 14px;\n font-weight: 600;\n color: #333;\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: #f5f5f5;\n border-radius: 6px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #666;\n transition: all 0.15s ease;\n z-index: 10;\n}\n.collapse-toggle:hover {\n background: #e8e8e8;\n color: #333;\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: #f5f5f5;\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 #f0f0f0;\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: #fafafa;\n}\n.section-header:hover {\n background: #f0f0f0;\n}\n\n.section-icon {\n width: 20px;\n font-size: 13px;\n color: #666;\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: #555;\n}\n\n.section-count {\n font-size: 11px;\n color: #999;\n margin-right: 8px;\n font-weight: 500;\n}\n\n.expand-icon {\n font-size: 10px;\n color: #999;\n transition: transform 0.15s ease;\n}\n\n.section-content {\n padding: 8px 12px 12px 12px;\n background: white;\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: #ddd;\n border-radius: 3px;\n}\n.scrollable-list::-webkit-scrollbar-thumb:hover {\n background: #ccc;\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: #aaa;\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: #f5f5f5;\n}\n.nav-item.selected {\n background: linear-gradient(135deg, #e3f2fd 0%, #bbdefb 100%);\n color: #1565c0;\n box-shadow: 0 1px 3px rgba(21, 101, 192, 0.15);\n}\n.nav-item.selected i {\n color: #1565c0;\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: #666;\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: #333;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.nav-item-meta {\n font-size: 11px;\n color: #999;\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: #999;\n}\n\n.search-input {\n width: 100%;\n padding: 10px 36px 10px 36px;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n font-size: 13px;\n background: #fafafa;\n transition: all 0.15s ease;\n}\n.search-input:focus {\n outline: none;\n border-color: #1976d2;\n background: white;\n box-shadow: 0 0 0 3px rgba(25, 118, 210, 0.1);\n}\n.search-input::placeholder {\n color: #aaa;\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: #999;\n}\n.clear-search:hover {\n background: #e0e0e0;\n color: #555;\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: #ddd;\n border-radius: 3px;\n}\n.entity-list::-webkit-scrollbar-thumb:hover {\n background: #ccc;\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.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: #666;\n transition: all 0.15s ease;\n position: relative;\n}\n.icon-btn:hover {\n background: #f0f0f0;\n color: #1976d2;\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: white;\n background: #1976d2;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n}\n"] }]
519
+ }], null, { entities: [{
520
+ type: Input
521
+ }], selectedEntityName: [{
522
+ type: Input
523
+ }], favorites: [{
524
+ type: Input
525
+ }], recentItems: [{
526
+ type: Input
527
+ }], collapsed: [{
528
+ type: Input
529
+ }], allowedEntityNames: [{
530
+ type: Input
531
+ }], favoritesSectionExpanded: [{
532
+ type: Input
533
+ }], recentSectionExpanded: [{
534
+ type: Input
535
+ }], entitiesSectionExpanded: [{
536
+ type: Input
537
+ }], viewsSectionExpanded: [{
538
+ type: Input
539
+ }], entitySelected: [{
540
+ type: Output
541
+ }], toggleCollapse: [{
542
+ type: Output
543
+ }], sectionToggled: [{
544
+ type: Output
545
+ }], openRecord: [{
546
+ type: Output
547
+ }], selectRecord: [{
548
+ type: Output
549
+ }], expandAndFocus: [{
550
+ type: Output
551
+ }] }); })();
552
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NavigationPanelComponent, { className: "NavigationPanelComponent", filePath: "src/DataExplorer/components/navigation-panel/navigation-panel.component.ts", lineNumber: 26 }); })();
553
+ //# sourceMappingURL=navigation-panel.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-panel.component.js","sourceRoot":"","sources":["../../../../src/DataExplorer/components/navigation-panel/navigation-panel.component.ts","../../../../src/DataExplorer/components/navigation-panel/navigation-panel.component.html"],"names":[],"mappings":"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"}