@memberjunction/ng-dashboards 5.35.0 → 5.36.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 (159) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.js +3 -3
  2. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  3. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +22 -1
  4. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  5. package/dist/AI/components/analytics/ai-analytics-resource.component.js +157 -137
  6. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  7. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +28 -0
  8. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  9. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +2075 -2068
  10. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  11. package/dist/AI/components/models/model-management.component.js +4 -4
  12. package/dist/AI/components/models/model-management.component.js.map +1 -1
  13. package/dist/AI/components/prompts/prompt-management.component.js +3 -3
  14. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  15. package/dist/AI/components/tags/tags-resource.component.d.ts +15 -0
  16. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  17. package/dist/AI/components/tags/tags-resource.component.js +1411 -1424
  18. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  19. package/dist/APIKeys/api-keys-resource.component.d.ts +12 -8
  20. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  21. package/dist/APIKeys/api-keys-resource.component.js +329 -371
  22. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  23. package/dist/Actions/components/actions-overview.component.js +137 -142
  24. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  25. package/dist/Actions/components/execution-monitoring.component.js +111 -116
  26. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  27. package/dist/Admin/admin-data-schema.component.js +13 -65
  28. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  29. package/dist/Admin/admin-dev-tools-resource.component.js +13 -65
  30. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  31. package/dist/Admin/admin-identity-access.component.js +13 -65
  32. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  33. package/dist/Admin/admin-monitoring.component.js +13 -65
  34. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  35. package/dist/Admin/base-admin-container.component.d.ts +9 -7
  36. package/dist/Admin/base-admin-container.component.d.ts.map +1 -1
  37. package/dist/Admin/base-admin-container.component.js +26 -17
  38. package/dist/Admin/base-admin-container.component.js.map +1 -1
  39. package/dist/ApplicationRoles/application-roles-resource.component.js +74 -67
  40. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  41. package/dist/Communication/communication-new-message-resource.component.d.ts +93 -0
  42. package/dist/Communication/communication-new-message-resource.component.d.ts.map +1 -0
  43. package/dist/Communication/communication-new-message-resource.component.js +661 -0
  44. package/dist/Communication/communication-new-message-resource.component.js.map +1 -0
  45. package/dist/Credentials/components/credentials-categories-resource.component.js +152 -159
  46. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  47. package/dist/Credentials/components/credentials-types-resource.component.js +151 -155
  48. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  49. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +20 -21
  50. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  51. package/dist/DatabaseDesigner/components/entity-list.component.d.ts +2 -0
  52. package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -1
  53. package/dist/DatabaseDesigner/components/entity-list.component.js +131 -125
  54. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  55. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  56. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  57. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +7 -1
  58. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  59. package/dist/DevTools/app-state-inspector.component.d.ts +5 -0
  60. package/dist/DevTools/app-state-inspector.component.d.ts.map +1 -1
  61. package/dist/DevTools/app-state-inspector.component.js +46 -72
  62. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  63. package/dist/DevTools/class-registry.component.js +88 -100
  64. package/dist/DevTools/class-registry.component.js.map +1 -1
  65. package/dist/DevTools/event-monitor.component.js +158 -168
  66. package/dist/DevTools/event-monitor.component.js.map +1 -1
  67. package/dist/DevTools/graphql-console.component.js +257 -264
  68. package/dist/DevTools/graphql-console.component.js.map +1 -1
  69. package/dist/DevTools/layout-inspector.component.d.ts +5 -0
  70. package/dist/DevTools/layout-inspector.component.d.ts.map +1 -1
  71. package/dist/DevTools/layout-inspector.component.js +46 -64
  72. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  73. package/dist/DevTools/lazy-module-status.component.js +75 -84
  74. package/dist/DevTools/lazy-module-status.component.js.map +1 -1
  75. package/dist/DevTools/settings-explorer.component.js +76 -85
  76. package/dist/DevTools/settings-explorer.component.js.map +1 -1
  77. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +2 -0
  78. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  79. package/dist/EntityAdmin/entity-admin-dashboard.component.js +7 -3
  80. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  81. package/dist/Integration/components/activity/activity.component.js +97 -99
  82. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  83. package/dist/Integration/components/connections/connections.component.js +842 -855
  84. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  85. package/dist/Integration/components/pipelines/pipelines.component.js +502 -517
  86. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  87. package/dist/Integration/components/schedules/schedules.component.js +78 -89
  88. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  89. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +5 -0
  90. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  91. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +1120 -1128
  92. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  93. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +11 -0
  94. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
  95. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +606 -661
  96. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  97. package/dist/Lists/components/lists-browse-resource.component.d.ts +102 -0
  98. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  99. package/dist/Lists/components/lists-browse-resource.component.js +1179 -504
  100. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  101. package/dist/Lists/components/lists-operations-resource.component.d.ts +133 -3
  102. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  103. package/dist/Lists/components/lists-operations-resource.component.js +1527 -327
  104. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  105. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts +29 -0
  106. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts.map +1 -0
  107. package/dist/Lists/components/lists-shared-with-me-resource.component.js +77 -0
  108. package/dist/Lists/components/lists-shared-with-me-resource.component.js.map +1 -0
  109. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts +6 -0
  110. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
  111. package/dist/Lists/components/venn-diagram/venn-diagram.component.js +35 -7
  112. package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
  113. package/dist/Lists/index.d.ts +1 -0
  114. package/dist/Lists/index.d.ts.map +1 -1
  115. package/dist/Lists/index.js +1 -0
  116. package/dist/Lists/index.js.map +1 -1
  117. package/dist/Lists/services/list-set-operations.service.d.ts +93 -2
  118. package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
  119. package/dist/Lists/services/list-set-operations.service.js +236 -10
  120. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  121. package/dist/MCP/mcp-dashboard.component.js +19 -19
  122. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  123. package/dist/Scheduling/scheduling-dashboard.component.js +58 -60
  124. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  125. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +13 -3
  126. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  127. package/dist/SystemDiagnostics/system-diagnostics.component.js +1007 -1252
  128. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  129. package/dist/Testing/components/testing-explorer.component.d.ts +31 -6
  130. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  131. package/dist/Testing/components/testing-explorer.component.js +543 -629
  132. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  133. package/dist/Testing/testing-dashboard.component.js +50 -49
  134. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  135. package/dist/ai-dashboards.module.d.ts +1 -1
  136. package/dist/ai-dashboards.module.d.ts.map +1 -1
  137. package/dist/ai-dashboards.module.js +16 -1
  138. package/dist/ai-dashboards.module.js.map +1 -1
  139. package/dist/communication-dashboards.module.d.ts +9 -7
  140. package/dist/communication-dashboards.module.d.ts.map +1 -1
  141. package/dist/communication-dashboards.module.js +13 -4
  142. package/dist/communication-dashboards.module.js.map +1 -1
  143. package/dist/core-dashboards.module.d.ts +1 -1
  144. package/dist/core-dashboards.module.d.ts.map +1 -1
  145. package/dist/core-dashboards.module.js +16 -1
  146. package/dist/core-dashboards.module.js.map +1 -1
  147. package/dist/lists-dashboards.module.d.ts +10 -9
  148. package/dist/lists-dashboards.module.d.ts.map +1 -1
  149. package/dist/lists-dashboards.module.js +13 -2
  150. package/dist/lists-dashboards.module.js.map +1 -1
  151. package/dist/public-api.d.ts +1 -0
  152. package/dist/public-api.d.ts.map +1 -1
  153. package/dist/public-api.js +1 -0
  154. package/dist/public-api.js.map +1 -1
  155. package/dist/testing-dashboards.module.d.ts +1 -1
  156. package/dist/testing-dashboards.module.d.ts.map +1 -1
  157. package/dist/testing-dashboards.module.js +13 -1
  158. package/dist/testing-dashboards.module.js.map +1 -1
  159. package/package.json +53 -52
@@ -10,24 +10,25 @@ import { RegisterClass, MJGlobal } from '@memberjunction/global';
10
10
  import { DevToolsPrefs } from './dev-tools-prefs';
11
11
  import * as i0 from "@angular/core";
12
12
  import * as i1 from "@angular/forms";
13
- import * as i2 from "@angular/common";
14
- function EventMonitorComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
15
- i0.ɵɵelement(0, "i", 39);
13
+ import * as i2 from "@memberjunction/ng-ui-components";
14
+ import * as i3 from "@angular/common";
15
+ function EventMonitorComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
16
+ i0.ɵɵelement(0, "i", 34);
16
17
  i0.ɵɵtext(1, " Resume ");
17
18
  } }
18
- function EventMonitorComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
19
- i0.ɵɵelement(0, "i", 40);
19
+ function EventMonitorComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
20
+ i0.ɵɵelement(0, "i", 35);
20
21
  i0.ɵɵtext(1, " Pause ");
21
22
  } }
22
- function EventMonitorComponent_Conditional_53_Template(rf, ctx) { if (rf & 1) {
23
+ function EventMonitorComponent_Conditional_45_Template(rf, ctx) { if (rf & 1) {
23
24
  const _r1 = i0.ɵɵgetCurrentView();
24
- i0.ɵɵelementStart(0, "button", 41);
25
- i0.ɵɵlistener("click", function EventMonitorComponent_Conditional_53_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.Filter = ""); });
26
- i0.ɵɵelement(1, "i", 42);
25
+ i0.ɵɵelementStart(0, "button", 36);
26
+ i0.ɵɵlistener("click", function EventMonitorComponent_Conditional_45_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.Filter = ""); });
27
+ i0.ɵɵelement(1, "i", 37);
27
28
  i0.ɵɵelementEnd();
28
29
  } }
29
- function EventMonitorComponent_For_61_Template(rf, ctx) { if (rf & 1) {
30
- i0.ɵɵelementStart(0, "option", 27);
30
+ function EventMonitorComponent_For_53_Template(rf, ctx) { if (rf & 1) {
31
+ i0.ɵɵelementStart(0, "option", 22);
31
32
  i0.ɵɵtext(1);
32
33
  i0.ɵɵelementEnd();
33
34
  } if (rf & 2) {
@@ -36,8 +37,8 @@ function EventMonitorComponent_For_61_Template(rf, ctx) { if (rf & 1) {
36
37
  i0.ɵɵadvance();
37
38
  i0.ɵɵtextInterpolate(t_r3);
38
39
  } }
39
- function EventMonitorComponent_For_69_Template(rf, ctx) { if (rf & 1) {
40
- i0.ɵɵelementStart(0, "option", 27);
40
+ function EventMonitorComponent_For_61_Template(rf, ctx) { if (rf & 1) {
41
+ i0.ɵɵelementStart(0, "option", 22);
41
42
  i0.ɵɵtext(1);
42
43
  i0.ɵɵelementEnd();
43
44
  } if (rf & 2) {
@@ -46,8 +47,8 @@ function EventMonitorComponent_For_69_Template(rf, ctx) { if (rf & 1) {
46
47
  i0.ɵɵadvance();
47
48
  i0.ɵɵtextInterpolate(c_r4);
48
49
  } }
49
- function EventMonitorComponent_Conditional_70_For_7_Template(rf, ctx) { if (rf & 1) {
50
- i0.ɵɵelementStart(0, "option", 27);
50
+ function EventMonitorComponent_Conditional_62_For_7_Template(rf, ctx) { if (rf & 1) {
51
+ i0.ɵɵelementStart(0, "option", 22);
51
52
  i0.ɵɵtext(1);
52
53
  i0.ɵɵelementEnd();
53
54
  } if (rf & 2) {
@@ -56,18 +57,18 @@ function EventMonitorComponent_Conditional_70_For_7_Template(rf, ctx) { if (rf &
56
57
  i0.ɵɵadvance();
57
58
  i0.ɵɵtextInterpolate(c_r6);
58
59
  } }
59
- function EventMonitorComponent_Conditional_70_Template(rf, ctx) { if (rf & 1) {
60
+ function EventMonitorComponent_Conditional_62_Template(rf, ctx) { if (rf & 1) {
60
61
  const _r5 = i0.ɵɵgetCurrentView();
61
- i0.ɵɵelementStart(0, "div", 23)(1, "label", 24);
62
+ i0.ɵɵelementStart(0, "div", 18)(1, "label", 19);
62
63
  i0.ɵɵtext(2, "Code");
63
64
  i0.ɵɵelementEnd();
64
- i0.ɵɵelementStart(3, "select", 25);
65
- i0.ɵɵtwoWayListener("ngModelChange", function EventMonitorComponent_Conditional_70_Template_select_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.CodeFilter, $event) || (ctx_r1.CodeFilter = $event); return i0.ɵɵresetView($event); });
66
- i0.ɵɵlistener("ngModelChange", function EventMonitorComponent_Conditional_70_Template_select_ngModelChange_3_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.PersistPrefs()); });
67
- i0.ɵɵelementStart(4, "option", 26);
65
+ i0.ɵɵelementStart(3, "select", 20);
66
+ i0.ɵɵtwoWayListener("ngModelChange", function EventMonitorComponent_Conditional_62_Template_select_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.CodeFilter, $event) || (ctx_r1.CodeFilter = $event); return i0.ɵɵresetView($event); });
67
+ i0.ɵɵlistener("ngModelChange", function EventMonitorComponent_Conditional_62_Template_select_ngModelChange_3_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.PersistPrefs()); });
68
+ i0.ɵɵelementStart(4, "option", 21);
68
69
  i0.ɵɵtext(5);
69
70
  i0.ɵɵelementEnd();
70
- i0.ɵɵrepeaterCreate(6, EventMonitorComponent_Conditional_70_For_7_Template, 2, 2, "option", 27, i0.ɵɵrepeaterTrackByIdentity);
71
+ i0.ɵɵrepeaterCreate(6, EventMonitorComponent_Conditional_62_For_7_Template, 2, 2, "option", 22, i0.ɵɵrepeaterTrackByIdentity);
71
72
  i0.ɵɵelementEnd()();
72
73
  } if (rf & 2) {
73
74
  const ctx_r1 = i0.ɵɵnextContext();
@@ -78,53 +79,53 @@ function EventMonitorComponent_Conditional_70_Template(rf, ctx) { if (rf & 1) {
78
79
  i0.ɵɵadvance();
79
80
  i0.ɵɵrepeater(ctx_r1.KnownCodes);
80
81
  } }
81
- function EventMonitorComponent_Conditional_71_Template(rf, ctx) { if (rf & 1) {
82
+ function EventMonitorComponent_Conditional_63_Template(rf, ctx) { if (rf & 1) {
82
83
  const _r7 = i0.ɵɵgetCurrentView();
83
- i0.ɵɵelementStart(0, "button", 43);
84
- i0.ɵɵlistener("click", function EventMonitorComponent_Conditional_71_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ClearFilters()); });
85
- i0.ɵɵelement(1, "i", 42);
84
+ i0.ɵɵelementStart(0, "button", 38);
85
+ i0.ɵɵlistener("click", function EventMonitorComponent_Conditional_63_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ClearFilters()); });
86
+ i0.ɵɵelement(1, "i", 37);
86
87
  i0.ɵɵtext(2, " Clear filters ");
87
88
  i0.ɵɵelementEnd();
88
89
  } }
89
- function EventMonitorComponent_Conditional_76_Template(rf, ctx) { if (rf & 1) {
90
- i0.ɵɵelement(0, "i", 44);
90
+ function EventMonitorComponent_Conditional_68_Template(rf, ctx) { if (rf & 1) {
91
+ i0.ɵɵelement(0, "i", 39);
91
92
  } if (rf & 2) {
92
93
  const ctx_r1 = i0.ɵɵnextContext();
93
94
  i0.ɵɵclassProp("fa-arrow-down", ctx_r1.SortDir === "desc")("fa-arrow-up", ctx_r1.SortDir === "asc");
94
95
  } }
95
- function EventMonitorComponent_Conditional_79_Template(rf, ctx) { if (rf & 1) {
96
- i0.ɵɵelement(0, "i", 44);
96
+ function EventMonitorComponent_Conditional_71_Template(rf, ctx) { if (rf & 1) {
97
+ i0.ɵɵelement(0, "i", 39);
97
98
  } if (rf & 2) {
98
99
  const ctx_r1 = i0.ɵɵnextContext();
99
100
  i0.ɵɵclassProp("fa-arrow-down", ctx_r1.SortDir === "desc")("fa-arrow-up", ctx_r1.SortDir === "asc");
100
101
  } }
101
- function EventMonitorComponent_Conditional_82_Template(rf, ctx) { if (rf & 1) {
102
- i0.ɵɵelement(0, "i", 44);
102
+ function EventMonitorComponent_Conditional_74_Template(rf, ctx) { if (rf & 1) {
103
+ i0.ɵɵelement(0, "i", 39);
103
104
  } if (rf & 2) {
104
105
  const ctx_r1 = i0.ɵɵnextContext();
105
106
  i0.ɵɵclassProp("fa-arrow-down", ctx_r1.SortDir === "desc")("fa-arrow-up", ctx_r1.SortDir === "asc");
106
107
  } }
107
- function EventMonitorComponent_Conditional_85_Template(rf, ctx) { if (rf & 1) {
108
- i0.ɵɵelement(0, "i", 44);
108
+ function EventMonitorComponent_Conditional_77_Template(rf, ctx) { if (rf & 1) {
109
+ i0.ɵɵelement(0, "i", 39);
109
110
  } if (rf & 2) {
110
111
  const ctx_r1 = i0.ɵɵnextContext();
111
112
  i0.ɵɵclassProp("fa-arrow-down", ctx_r1.SortDir === "desc")("fa-arrow-up", ctx_r1.SortDir === "asc");
112
113
  } }
113
- function EventMonitorComponent_Conditional_89_Conditional_1_Template(rf, ctx) { if (rf & 1) {
114
- i0.ɵɵelement(0, "i", 45);
115
- i0.ɵɵelementStart(1, "div", 46);
114
+ function EventMonitorComponent_Conditional_81_Conditional_1_Template(rf, ctx) { if (rf & 1) {
115
+ i0.ɵɵelement(0, "i", 40);
116
+ i0.ɵɵelementStart(1, "div", 41);
116
117
  i0.ɵɵtext(2, "Listening for events\u2026");
117
118
  i0.ɵɵelementEnd();
118
- i0.ɵɵelementStart(3, "div", 47);
119
+ i0.ɵɵelementStart(3, "div", 42);
119
120
  i0.ɵɵtext(4, "Trigger an action \u2014 saves, navigation, AI events all show up here.");
120
121
  i0.ɵɵelementEnd();
121
122
  } }
122
- function EventMonitorComponent_Conditional_89_Conditional_2_Template(rf, ctx) { if (rf & 1) {
123
- i0.ɵɵelement(0, "i", 48);
124
- i0.ɵɵelementStart(1, "div", 46);
123
+ function EventMonitorComponent_Conditional_81_Conditional_2_Template(rf, ctx) { if (rf & 1) {
124
+ i0.ɵɵelement(0, "i", 43);
125
+ i0.ɵɵelementStart(1, "div", 41);
125
126
  i0.ɵɵtext(2, "Capture is paused");
126
127
  i0.ɵɵelementEnd();
127
- i0.ɵɵelementStart(3, "div", 47);
128
+ i0.ɵɵelementStart(3, "div", 42);
128
129
  i0.ɵɵtext(4);
129
130
  i0.ɵɵelementEnd();
130
131
  } if (rf & 2) {
@@ -132,12 +133,12 @@ function EventMonitorComponent_Conditional_89_Conditional_2_Template(rf, ctx) {
132
133
  i0.ɵɵadvance(4);
133
134
  i0.ɵɵtextInterpolate1("", ctx_r1.Stats.captured, " events fired since you paused. Click Resume to start collecting again.");
134
135
  } }
135
- function EventMonitorComponent_Conditional_89_Conditional_3_Template(rf, ctx) { if (rf & 1) {
136
- i0.ɵɵelement(0, "i", 49);
137
- i0.ɵɵelementStart(1, "div", 46);
136
+ function EventMonitorComponent_Conditional_81_Conditional_3_Template(rf, ctx) { if (rf & 1) {
137
+ i0.ɵɵelement(0, "i", 44);
138
+ i0.ɵɵelementStart(1, "div", 41);
138
139
  i0.ɵɵtext(2, "No events match your filter");
139
140
  i0.ɵɵelementEnd();
140
- i0.ɵɵelementStart(3, "div", 47);
141
+ i0.ɵɵelementStart(3, "div", 42);
141
142
  i0.ɵɵtext(4);
142
143
  i0.ɵɵelementEnd();
143
144
  } if (rf & 2) {
@@ -145,17 +146,17 @@ function EventMonitorComponent_Conditional_89_Conditional_3_Template(rf, ctx) {
145
146
  i0.ɵɵadvance(4);
146
147
  i0.ɵɵtextInterpolate1("", ctx_r1.Stats.kept, " events in buffer \u00B7 clear filters to see them.");
147
148
  } }
148
- function EventMonitorComponent_Conditional_89_Template(rf, ctx) { if (rf & 1) {
149
- i0.ɵɵelementStart(0, "div", 38);
150
- i0.ɵɵconditionalCreate(1, EventMonitorComponent_Conditional_89_Conditional_1_Template, 5, 0)(2, EventMonitorComponent_Conditional_89_Conditional_2_Template, 5, 1)(3, EventMonitorComponent_Conditional_89_Conditional_3_Template, 5, 1);
149
+ function EventMonitorComponent_Conditional_81_Template(rf, ctx) { if (rf & 1) {
150
+ i0.ɵɵelementStart(0, "div", 33);
151
+ i0.ɵɵconditionalCreate(1, EventMonitorComponent_Conditional_81_Conditional_1_Template, 5, 0)(2, EventMonitorComponent_Conditional_81_Conditional_2_Template, 5, 1)(3, EventMonitorComponent_Conditional_81_Conditional_3_Template, 5, 1);
151
152
  i0.ɵɵelementEnd();
152
153
  } if (rf & 2) {
153
154
  const ctx_r1 = i0.ɵɵnextContext();
154
155
  i0.ɵɵadvance();
155
156
  i0.ɵɵconditional(ctx_r1.Stats.captured === 0 ? 1 : ctx_r1.Paused ? 2 : 3);
156
157
  } }
157
- function EventMonitorComponent_Conditional_90_For_1_Conditional_16_Conditional_0_Template(rf, ctx) { if (rf & 1) {
158
- i0.ɵɵelementStart(0, "pre", 61)(1, "code");
158
+ function EventMonitorComponent_Conditional_82_For_1_Conditional_16_Conditional_0_Template(rf, ctx) { if (rf & 1) {
159
+ i0.ɵɵelementStart(0, "pre", 56)(1, "code");
159
160
  i0.ɵɵtext(2);
160
161
  i0.ɵɵpipe(3, "json");
161
162
  i0.ɵɵelementEnd()();
@@ -164,45 +165,45 @@ function EventMonitorComponent_Conditional_90_For_1_Conditional_16_Conditional_0
164
165
  i0.ɵɵadvance(2);
165
166
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 1, evt_r9.args));
166
167
  } }
167
- function EventMonitorComponent_Conditional_90_For_1_Conditional_16_Conditional_1_Template(rf, ctx) { if (rf & 1) {
168
- i0.ɵɵelementStart(0, "div", 62);
169
- i0.ɵɵelement(1, "i", 63);
168
+ function EventMonitorComponent_Conditional_82_For_1_Conditional_16_Conditional_1_Template(rf, ctx) { if (rf & 1) {
169
+ i0.ɵɵelementStart(0, "div", 57);
170
+ i0.ɵɵelement(1, "i", 58);
170
171
  i0.ɵɵelementStart(2, "span");
171
172
  i0.ɵɵtext(3, "This event has no payload.");
172
173
  i0.ɵɵelementEnd()();
173
174
  } }
174
- function EventMonitorComponent_Conditional_90_For_1_Conditional_16_Template(rf, ctx) { if (rf & 1) {
175
- i0.ɵɵconditionalCreate(0, EventMonitorComponent_Conditional_90_For_1_Conditional_16_Conditional_0_Template, 4, 3, "pre", 61)(1, EventMonitorComponent_Conditional_90_For_1_Conditional_16_Conditional_1_Template, 4, 0, "div", 62);
175
+ function EventMonitorComponent_Conditional_82_For_1_Conditional_16_Template(rf, ctx) { if (rf & 1) {
176
+ i0.ɵɵconditionalCreate(0, EventMonitorComponent_Conditional_82_For_1_Conditional_16_Conditional_0_Template, 4, 3, "pre", 56)(1, EventMonitorComponent_Conditional_82_For_1_Conditional_16_Conditional_1_Template, 4, 0, "div", 57);
176
177
  } if (rf & 2) {
177
178
  const evt_r9 = i0.ɵɵnextContext().$implicit;
178
179
  i0.ɵɵconditional(evt_r9.hasPayload ? 0 : 1);
179
180
  } }
180
- function EventMonitorComponent_Conditional_90_For_1_Template(rf, ctx) { if (rf & 1) {
181
+ function EventMonitorComponent_Conditional_82_For_1_Template(rf, ctx) { if (rf & 1) {
181
182
  const _r8 = i0.ɵɵgetCurrentView();
182
- i0.ɵɵelementStart(0, "div", 51)(1, "div", 52);
183
- i0.ɵɵlistener("click", function EventMonitorComponent_Conditional_90_For_1_Template_div_click_1_listener() { const evt_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleRow(evt_r9)); });
184
- i0.ɵɵelement(2, "i", 53);
185
- i0.ɵɵelementStart(3, "span", 54);
183
+ i0.ɵɵelementStart(0, "div", 46)(1, "div", 47);
184
+ i0.ɵɵlistener("click", function EventMonitorComponent_Conditional_82_For_1_Template_div_click_1_listener() { const evt_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleRow(evt_r9)); });
185
+ i0.ɵɵelement(2, "i", 48);
186
+ i0.ɵɵelementStart(3, "span", 49);
186
187
  i0.ɵɵtext(4);
187
188
  i0.ɵɵpipe(5, "date");
188
189
  i0.ɵɵelementEnd();
189
- i0.ɵɵelementStart(6, "span", 55);
190
+ i0.ɵɵelementStart(6, "span", 50);
190
191
  i0.ɵɵtext(7);
191
192
  i0.ɵɵelementEnd();
192
- i0.ɵɵelementStart(8, "span", 56);
193
+ i0.ɵɵelementStart(8, "span", 51);
193
194
  i0.ɵɵtext(9);
194
195
  i0.ɵɵelementEnd();
195
- i0.ɵɵelementStart(10, "span", 57);
196
+ i0.ɵɵelementStart(10, "span", 52);
196
197
  i0.ɵɵtext(11);
197
198
  i0.ɵɵelementEnd();
198
- i0.ɵɵelementStart(12, "span", 58);
199
+ i0.ɵɵelementStart(12, "span", 53);
199
200
  i0.ɵɵtext(13);
200
201
  i0.ɵɵelementEnd();
201
- i0.ɵɵelementStart(14, "button", 59);
202
- i0.ɵɵlistener("click", function EventMonitorComponent_Conditional_90_For_1_Template_button_click_14_listener($event) { const evt_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); $event.stopPropagation(); return i0.ɵɵresetView(ctx_r1.OnCopyRow(evt_r9)); });
203
- i0.ɵɵelement(15, "i", 60);
202
+ i0.ɵɵelementStart(14, "button", 54);
203
+ i0.ɵɵlistener("click", function EventMonitorComponent_Conditional_82_For_1_Template_button_click_14_listener($event) { const evt_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); $event.stopPropagation(); return i0.ɵɵresetView(ctx_r1.OnCopyRow(evt_r9)); });
204
+ i0.ɵɵelement(15, "i", 55);
204
205
  i0.ɵɵelementEnd()();
205
- i0.ɵɵconditionalCreate(16, EventMonitorComponent_Conditional_90_For_1_Conditional_16_Template, 2, 1);
206
+ i0.ɵɵconditionalCreate(16, EventMonitorComponent_Conditional_82_For_1_Conditional_16_Template, 2, 1);
206
207
  i0.ɵɵelementEnd();
207
208
  } if (rf & 2) {
208
209
  const evt_r9 = ctx.$implicit;
@@ -228,8 +229,8 @@ function EventMonitorComponent_Conditional_90_For_1_Template(rf, ctx) { if (rf &
228
229
  i0.ɵɵadvance(3);
229
230
  i0.ɵɵconditional(evt_r9.expanded ? 16 : -1);
230
231
  } }
231
- function EventMonitorComponent_Conditional_90_Template(rf, ctx) { if (rf & 1) {
232
- i0.ɵɵrepeaterCreate(0, EventMonitorComponent_Conditional_90_For_1_Template, 17, 17, "div", 50, i0.ɵɵcomponentInstance().TrackBySeq, true);
232
+ function EventMonitorComponent_Conditional_82_Template(rf, ctx) { if (rf & 1) {
233
+ i0.ɵɵrepeaterCreate(0, EventMonitorComponent_Conditional_82_For_1_Template, 17, 17, "div", 45, i0.ɵɵcomponentInstance().TrackBySeq, true);
233
234
  } if (rf & 2) {
234
235
  const ctx_r1 = i0.ɵɵnextContext();
235
236
  i0.ɵɵrepeater(ctx_r1.FilteredEvents);
@@ -475,124 +476,113 @@ let EventMonitorComponent = class EventMonitorComponent extends BaseResourceComp
475
476
  return String(args);
476
477
  }
477
478
  static ɵfac = function EventMonitorComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || EventMonitorComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
478
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EventMonitorComponent, selectors: [["mj-event-monitor"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 91, vars: 36, consts: [[1, "mj-inspector", "mj-inspector--solo"], [1, "mj-inspector__header"], [1, "mj-inspector__header-icon"], [1, "fa-solid", "fa-bolt"], [1, "mj-inspector__header-title"], [1, "mj-inspector__header-sub"], [1, "mj-inspector__header-spacer"], [1, "mj-inspector__header-actions"], ["type", "button", 1, "mj-inspector__btn", 3, "click", "title"], ["type", "button", "title", "Clear all captured events", 1, "mj-inspector__btn", 3, "click"], [1, "fa-solid", "fa-broom"], [1, "em-stats"], [1, "em-stat"], [1, "em-pulse"], [1, "em-stat-value"], [1, "em-stat-label"], [1, "em-stat", "em-stat--right"], [1, "em-stat-value", "em-stat-value--small"], [1, "em-toolbar"], [1, "em-search-wrap"], [1, "fa-solid", "fa-search", "em-search-icon"], ["type", "search", "placeholder", "Filter by type, component, payload\u2026", 1, "em-search", 3, "ngModelChange", "ngModel"], ["title", "Clear", 1, "em-search-clear"], [1, "em-select-wrap"], [1, "em-select-label"], [1, "em-select", 3, "ngModelChange", "ngModel"], ["value", ""], [3, "value"], ["type", "button", "title", "Clear all filters", 1, "em-clear-filters"], [1, "em-list"], [1, "em-table-head"], ["type", "button", 1, "em-th", "em-th--time", 3, "click"], [1, "fa-solid", 3, "fa-arrow-down", "fa-arrow-up"], ["type", "button", 1, "em-th", "em-th--type", 3, "click"], ["type", "button", 1, "em-th", "em-th--code", 3, "click"], ["type", "button", 1, "em-th", "em-th--component", 3, "click"], [1, "em-th", "em-th--summary"], [1, "em-th", "em-th--actions"], [1, "em-empty"], [1, "fa-solid", "fa-play"], [1, "fa-solid", "fa-pause"], ["title", "Clear", 1, "em-search-clear", 3, "click"], [1, "fa-solid", "fa-xmark"], ["type", "button", "title", "Clear all filters", 1, "em-clear-filters", 3, "click"], [1, "fa-solid"], [1, "fa-solid", "fa-radio", "em-empty-icon"], [1, "em-empty-title"], [1, "em-empty-sub"], [1, "fa-solid", "fa-pause", "em-empty-icon"], [1, "fa-solid", "fa-filter", "em-empty-icon"], [1, "em-row", 3, "em-row--expanded"], [1, "em-row"], [1, "em-row-head", 3, "click"], [1, "em-row-chev", "fa-solid", "fa-chevron-right"], [1, "em-row-time"], [1, "em-row-type"], [1, "em-row-code"], [1, "em-row-component", 3, "title"], [1, "em-row-summary"], ["type", "button", "title", "Copy as JSON", 1, "em-row-copy", 3, "click"], [1, "fa-solid", "fa-clipboard"], [1, "em-row-payload"], [1, "em-row-no-payload"], [1, "fa-regular", "fa-circle"]], template: function EventMonitorComponent_Template(rf, ctx) { if (rf & 1) {
479
- i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2);
480
- i0.ɵɵelement(3, "i", 3);
481
- i0.ɵɵelementEnd();
482
- i0.ɵɵelementStart(4, "div")(5, "h3", 4);
483
- i0.ɵɵtext(6, "Event Monitor");
479
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EventMonitorComponent, selectors: [["mj-event-monitor"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 83, vars: 32, consts: [[1, "mj-inspector", "mj-inspector--solo"], ["Role", "region", "AriaLabel", "Event monitor", "Title", "Event Monitor", "Subtitle", "Live tail of MJGlobal events with filter and pause"], ["actions", ""], ["mjButton", "", "variant", "secondary", "size", "sm", 3, "click", "title"], ["mjButton", "", "variant", "secondary", "size", "sm", "title", "Clear all captured events", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-broom"], [1, "em-stats"], [1, "em-stat"], [1, "em-pulse"], [1, "em-stat-value"], [1, "em-stat-label"], [1, "em-stat", "em-stat--right"], [1, "em-stat-value", "em-stat-value--small"], [1, "em-toolbar"], [1, "em-search-wrap"], [1, "fa-solid", "fa-search", "em-search-icon"], ["type", "search", "placeholder", "Filter by type, component, payload\u2026", 1, "em-search", 3, "ngModelChange", "ngModel"], ["title", "Clear", 1, "em-search-clear"], [1, "em-select-wrap"], [1, "em-select-label"], [1, "em-select", 3, "ngModelChange", "ngModel"], ["value", ""], [3, "value"], ["type", "button", "title", "Clear all filters", 1, "em-clear-filters"], [1, "em-list"], [1, "em-table-head"], ["type", "button", 1, "em-th", "em-th--time", 3, "click"], [1, "fa-solid", 3, "fa-arrow-down", "fa-arrow-up"], ["type", "button", 1, "em-th", "em-th--type", 3, "click"], ["type", "button", 1, "em-th", "em-th--code", 3, "click"], ["type", "button", 1, "em-th", "em-th--component", 3, "click"], [1, "em-th", "em-th--summary"], [1, "em-th", "em-th--actions"], [1, "em-empty"], ["aria-hidden", "true", 1, "fa-solid", "fa-play"], ["aria-hidden", "true", 1, "fa-solid", "fa-pause"], ["title", "Clear", 1, "em-search-clear", 3, "click"], [1, "fa-solid", "fa-xmark"], ["type", "button", "title", "Clear all filters", 1, "em-clear-filters", 3, "click"], [1, "fa-solid"], [1, "fa-solid", "fa-radio", "em-empty-icon"], [1, "em-empty-title"], [1, "em-empty-sub"], [1, "fa-solid", "fa-pause", "em-empty-icon"], [1, "fa-solid", "fa-filter", "em-empty-icon"], [1, "em-row", 3, "em-row--expanded"], [1, "em-row"], [1, "em-row-head", 3, "click"], [1, "em-row-chev", "fa-solid", "fa-chevron-right"], [1, "em-row-time"], [1, "em-row-type"], [1, "em-row-code"], [1, "em-row-component", 3, "title"], [1, "em-row-summary"], ["type", "button", "title", "Copy as JSON", 1, "em-row-copy", 3, "click"], [1, "fa-solid", "fa-clipboard"], [1, "em-row-payload"], [1, "em-row-no-payload"], [1, "fa-regular", "fa-circle"]], template: function EventMonitorComponent_Template(rf, ctx) { if (rf & 1) {
480
+ i0.ɵɵelementStart(0, "div", 0)(1, "mj-page-header-interior", 1)(2, "div", 2)(3, "button", 3);
481
+ i0.ɵɵlistener("click", function EventMonitorComponent_Template_button_click_3_listener() { return ctx.TogglePause(); });
482
+ i0.ɵɵconditionalCreate(4, EventMonitorComponent_Conditional_4_Template, 2, 0)(5, EventMonitorComponent_Conditional_5_Template, 2, 0);
484
483
  i0.ɵɵelementEnd();
485
- i0.ɵɵelementStart(7, "div", 5);
486
- i0.ɵɵtext(8, "Live tail of MJGlobal events with filter and pause");
487
- i0.ɵɵelementEnd()();
488
- i0.ɵɵelement(9, "span", 6);
489
- i0.ɵɵelementStart(10, "div", 7)(11, "button", 8);
490
- i0.ɵɵlistener("click", function EventMonitorComponent_Template_button_click_11_listener() { return ctx.TogglePause(); });
491
- i0.ɵɵconditionalCreate(12, EventMonitorComponent_Conditional_12_Template, 2, 0)(13, EventMonitorComponent_Conditional_13_Template, 2, 0);
492
- i0.ɵɵelementEnd();
493
- i0.ɵɵelementStart(14, "button", 9);
494
- i0.ɵɵlistener("click", function EventMonitorComponent_Template_button_click_14_listener() { return ctx.Clear(); });
495
- i0.ɵɵelement(15, "i", 10);
496
- i0.ɵɵtext(16, " Clear ");
484
+ i0.ɵɵelementStart(6, "button", 4);
485
+ i0.ɵɵlistener("click", function EventMonitorComponent_Template_button_click_6_listener() { return ctx.Clear(); });
486
+ i0.ɵɵelement(7, "i", 5);
487
+ i0.ɵɵtext(8, " Clear ");
497
488
  i0.ɵɵelementEnd()()();
498
- i0.ɵɵelementStart(17, "div", 11)(18, "div", 12);
499
- i0.ɵɵelement(19, "i", 13);
500
- i0.ɵɵelementStart(20, "div")(21, "div", 14);
501
- i0.ɵɵtext(22);
489
+ i0.ɵɵelementStart(9, "div", 6)(10, "div", 7);
490
+ i0.ɵɵelement(11, "i", 8);
491
+ i0.ɵɵelementStart(12, "div")(13, "div", 9);
492
+ i0.ɵɵtext(14);
502
493
  i0.ɵɵelementEnd();
503
- i0.ɵɵelementStart(23, "div", 15);
504
- i0.ɵɵtext(24);
494
+ i0.ɵɵelementStart(15, "div", 10);
495
+ i0.ɵɵtext(16);
505
496
  i0.ɵɵelementEnd()()();
506
- i0.ɵɵelementStart(25, "div", 12)(26, "div")(27, "div", 14);
507
- i0.ɵɵtext(28);
497
+ i0.ɵɵelementStart(17, "div", 7)(18, "div")(19, "div", 9);
498
+ i0.ɵɵtext(20);
508
499
  i0.ɵɵelementEnd();
509
- i0.ɵɵelementStart(29, "div", 15);
510
- i0.ɵɵtext(30, "Total captured");
500
+ i0.ɵɵelementStart(21, "div", 10);
501
+ i0.ɵɵtext(22, "Total captured");
511
502
  i0.ɵɵelementEnd()()();
512
- i0.ɵɵelementStart(31, "div", 12)(32, "div")(33, "div", 14);
513
- i0.ɵɵtext(34);
503
+ i0.ɵɵelementStart(23, "div", 7)(24, "div")(25, "div", 9);
504
+ i0.ɵɵtext(26);
514
505
  i0.ɵɵelementEnd();
515
- i0.ɵɵelementStart(35, "div", 15);
516
- i0.ɵɵtext(36, "In buffer");
506
+ i0.ɵɵelementStart(27, "div", 10);
507
+ i0.ɵɵtext(28, "In buffer");
517
508
  i0.ɵɵelementEnd()()();
518
- i0.ɵɵelementStart(37, "div", 12)(38, "div")(39, "div", 14);
519
- i0.ɵɵtext(40);
509
+ i0.ɵɵelementStart(29, "div", 7)(30, "div")(31, "div", 9);
510
+ i0.ɵɵtext(32);
520
511
  i0.ɵɵelementEnd();
521
- i0.ɵɵelementStart(41, "div", 15);
522
- i0.ɵɵtext(42, "Last second");
512
+ i0.ɵɵelementStart(33, "div", 10);
513
+ i0.ɵɵtext(34, "Last second");
523
514
  i0.ɵɵelementEnd()()();
524
- i0.ɵɵelementStart(43, "div", 16)(44, "div")(45, "div", 17);
525
- i0.ɵɵtext(46);
515
+ i0.ɵɵelementStart(35, "div", 11)(36, "div")(37, "div", 12);
516
+ i0.ɵɵtext(38);
526
517
  i0.ɵɵelementEnd();
527
- i0.ɵɵelementStart(47, "div", 15);
528
- i0.ɵɵtext(48, "Watching for");
518
+ i0.ɵɵelementStart(39, "div", 10);
519
+ i0.ɵɵtext(40, "Watching for");
529
520
  i0.ɵɵelementEnd()()()();
530
- i0.ɵɵelementStart(49, "div", 18)(50, "div", 19);
531
- i0.ɵɵelement(51, "i", 20);
532
- i0.ɵɵelementStart(52, "input", 21);
533
- i0.ɵɵtwoWayListener("ngModelChange", function EventMonitorComponent_Template_input_ngModelChange_52_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.Filter, $event) || (ctx.Filter = $event); return $event; });
534
- i0.ɵɵlistener("ngModelChange", function EventMonitorComponent_Template_input_ngModelChange_52_listener() { return ctx.PersistPrefs(); });
521
+ i0.ɵɵelementStart(41, "div", 13)(42, "div", 14);
522
+ i0.ɵɵelement(43, "i", 15);
523
+ i0.ɵɵelementStart(44, "input", 16);
524
+ i0.ɵɵtwoWayListener("ngModelChange", function EventMonitorComponent_Template_input_ngModelChange_44_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.Filter, $event) || (ctx.Filter = $event); return $event; });
525
+ i0.ɵɵlistener("ngModelChange", function EventMonitorComponent_Template_input_ngModelChange_44_listener() { return ctx.PersistPrefs(); });
535
526
  i0.ɵɵelementEnd();
536
- i0.ɵɵconditionalCreate(53, EventMonitorComponent_Conditional_53_Template, 2, 0, "button", 22);
527
+ i0.ɵɵconditionalCreate(45, EventMonitorComponent_Conditional_45_Template, 2, 0, "button", 17);
537
528
  i0.ɵɵelementEnd();
538
- i0.ɵɵelementStart(54, "div", 23)(55, "label", 24);
539
- i0.ɵɵtext(56, "Type");
529
+ i0.ɵɵelementStart(46, "div", 18)(47, "label", 19);
530
+ i0.ɵɵtext(48, "Type");
540
531
  i0.ɵɵelementEnd();
541
- i0.ɵɵelementStart(57, "select", 25);
542
- i0.ɵɵtwoWayListener("ngModelChange", function EventMonitorComponent_Template_select_ngModelChange_57_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.TypeFilter, $event) || (ctx.TypeFilter = $event); return $event; });
543
- i0.ɵɵlistener("ngModelChange", function EventMonitorComponent_Template_select_ngModelChange_57_listener() { return ctx.PersistPrefs(); });
544
- i0.ɵɵelementStart(58, "option", 26);
545
- i0.ɵɵtext(59);
532
+ i0.ɵɵelementStart(49, "select", 20);
533
+ i0.ɵɵtwoWayListener("ngModelChange", function EventMonitorComponent_Template_select_ngModelChange_49_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.TypeFilter, $event) || (ctx.TypeFilter = $event); return $event; });
534
+ i0.ɵɵlistener("ngModelChange", function EventMonitorComponent_Template_select_ngModelChange_49_listener() { return ctx.PersistPrefs(); });
535
+ i0.ɵɵelementStart(50, "option", 21);
536
+ i0.ɵɵtext(51);
546
537
  i0.ɵɵelementEnd();
547
- i0.ɵɵrepeaterCreate(60, EventMonitorComponent_For_61_Template, 2, 2, "option", 27, i0.ɵɵrepeaterTrackByIdentity);
538
+ i0.ɵɵrepeaterCreate(52, EventMonitorComponent_For_53_Template, 2, 2, "option", 22, i0.ɵɵrepeaterTrackByIdentity);
548
539
  i0.ɵɵelementEnd()();
549
- i0.ɵɵelementStart(62, "div", 23)(63, "label", 24);
550
- i0.ɵɵtext(64, "Component");
540
+ i0.ɵɵelementStart(54, "div", 18)(55, "label", 19);
541
+ i0.ɵɵtext(56, "Component");
551
542
  i0.ɵɵelementEnd();
552
- i0.ɵɵelementStart(65, "select", 25);
553
- i0.ɵɵtwoWayListener("ngModelChange", function EventMonitorComponent_Template_select_ngModelChange_65_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.ComponentFilter, $event) || (ctx.ComponentFilter = $event); return $event; });
554
- i0.ɵɵlistener("ngModelChange", function EventMonitorComponent_Template_select_ngModelChange_65_listener() { return ctx.PersistPrefs(); });
555
- i0.ɵɵelementStart(66, "option", 26);
556
- i0.ɵɵtext(67);
543
+ i0.ɵɵelementStart(57, "select", 20);
544
+ i0.ɵɵtwoWayListener("ngModelChange", function EventMonitorComponent_Template_select_ngModelChange_57_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.ComponentFilter, $event) || (ctx.ComponentFilter = $event); return $event; });
545
+ i0.ɵɵlistener("ngModelChange", function EventMonitorComponent_Template_select_ngModelChange_57_listener() { return ctx.PersistPrefs(); });
546
+ i0.ɵɵelementStart(58, "option", 21);
547
+ i0.ɵɵtext(59);
557
548
  i0.ɵɵelementEnd();
558
- i0.ɵɵrepeaterCreate(68, EventMonitorComponent_For_69_Template, 2, 2, "option", 27, i0.ɵɵrepeaterTrackByIdentity);
549
+ i0.ɵɵrepeaterCreate(60, EventMonitorComponent_For_61_Template, 2, 2, "option", 22, i0.ɵɵrepeaterTrackByIdentity);
559
550
  i0.ɵɵelementEnd()();
560
- i0.ɵɵconditionalCreate(70, EventMonitorComponent_Conditional_70_Template, 8, 2, "div", 23);
561
- i0.ɵɵconditionalCreate(71, EventMonitorComponent_Conditional_71_Template, 3, 0, "button", 28);
551
+ i0.ɵɵconditionalCreate(62, EventMonitorComponent_Conditional_62_Template, 8, 2, "div", 18);
552
+ i0.ɵɵconditionalCreate(63, EventMonitorComponent_Conditional_63_Template, 3, 0, "button", 23);
562
553
  i0.ɵɵelementEnd();
563
- i0.ɵɵelementStart(72, "div", 29)(73, "div", 30)(74, "button", 31);
564
- i0.ɵɵlistener("click", function EventMonitorComponent_Template_button_click_74_listener() { return ctx.OnSortClick("time"); });
565
- i0.ɵɵtext(75, " Time ");
566
- i0.ɵɵconditionalCreate(76, EventMonitorComponent_Conditional_76_Template, 1, 4, "i", 32);
554
+ i0.ɵɵelementStart(64, "div", 24)(65, "div", 25)(66, "button", 26);
555
+ i0.ɵɵlistener("click", function EventMonitorComponent_Template_button_click_66_listener() { return ctx.OnSortClick("time"); });
556
+ i0.ɵɵtext(67, " Time ");
557
+ i0.ɵɵconditionalCreate(68, EventMonitorComponent_Conditional_68_Template, 1, 4, "i", 27);
567
558
  i0.ɵɵelementEnd();
568
- i0.ɵɵelementStart(77, "button", 33);
569
- i0.ɵɵlistener("click", function EventMonitorComponent_Template_button_click_77_listener() { return ctx.OnSortClick("type"); });
570
- i0.ɵɵtext(78, " Type ");
571
- i0.ɵɵconditionalCreate(79, EventMonitorComponent_Conditional_79_Template, 1, 4, "i", 32);
559
+ i0.ɵɵelementStart(69, "button", 28);
560
+ i0.ɵɵlistener("click", function EventMonitorComponent_Template_button_click_69_listener() { return ctx.OnSortClick("type"); });
561
+ i0.ɵɵtext(70, " Type ");
562
+ i0.ɵɵconditionalCreate(71, EventMonitorComponent_Conditional_71_Template, 1, 4, "i", 27);
572
563
  i0.ɵɵelementEnd();
573
- i0.ɵɵelementStart(80, "button", 34);
574
- i0.ɵɵlistener("click", function EventMonitorComponent_Template_button_click_80_listener() { return ctx.OnSortClick("eventCode"); });
575
- i0.ɵɵtext(81, " Code ");
576
- i0.ɵɵconditionalCreate(82, EventMonitorComponent_Conditional_82_Template, 1, 4, "i", 32);
564
+ i0.ɵɵelementStart(72, "button", 29);
565
+ i0.ɵɵlistener("click", function EventMonitorComponent_Template_button_click_72_listener() { return ctx.OnSortClick("eventCode"); });
566
+ i0.ɵɵtext(73, " Code ");
567
+ i0.ɵɵconditionalCreate(74, EventMonitorComponent_Conditional_74_Template, 1, 4, "i", 27);
577
568
  i0.ɵɵelementEnd();
578
- i0.ɵɵelementStart(83, "button", 35);
579
- i0.ɵɵlistener("click", function EventMonitorComponent_Template_button_click_83_listener() { return ctx.OnSortClick("component"); });
580
- i0.ɵɵtext(84, " Component ");
581
- i0.ɵɵconditionalCreate(85, EventMonitorComponent_Conditional_85_Template, 1, 4, "i", 32);
569
+ i0.ɵɵelementStart(75, "button", 30);
570
+ i0.ɵɵlistener("click", function EventMonitorComponent_Template_button_click_75_listener() { return ctx.OnSortClick("component"); });
571
+ i0.ɵɵtext(76, " Component ");
572
+ i0.ɵɵconditionalCreate(77, EventMonitorComponent_Conditional_77_Template, 1, 4, "i", 27);
582
573
  i0.ɵɵelementEnd();
583
- i0.ɵɵelementStart(86, "span", 36);
584
- i0.ɵɵtext(87, "Summary");
574
+ i0.ɵɵelementStart(78, "span", 31);
575
+ i0.ɵɵtext(79, "Summary");
585
576
  i0.ɵɵelementEnd();
586
- i0.ɵɵelement(88, "span", 37);
577
+ i0.ɵɵelement(80, "span", 32);
587
578
  i0.ɵɵelementEnd();
588
- i0.ɵɵconditionalCreate(89, EventMonitorComponent_Conditional_89_Template, 4, 1, "div", 38)(90, EventMonitorComponent_Conditional_90_Template, 2, 0);
579
+ i0.ɵɵconditionalCreate(81, EventMonitorComponent_Conditional_81_Template, 4, 1, "div", 33)(82, EventMonitorComponent_Conditional_82_Template, 2, 0);
589
580
  i0.ɵɵelementEnd()();
590
581
  } if (rf & 2) {
591
- i0.ɵɵadvance(11);
592
- i0.ɵɵclassProp("mj-inspector__btn--success", !ctx.Paused)("em-paused", ctx.Paused);
582
+ i0.ɵɵadvance(3);
593
583
  i0.ɵɵproperty("title", ctx.Paused ? "Resume capture" : "Pause capture");
594
584
  i0.ɵɵadvance();
595
- i0.ɵɵconditional(ctx.Paused ? 12 : 13);
585
+ i0.ɵɵconditional(ctx.Paused ? 4 : 5);
596
586
  i0.ɵɵadvance(7);
597
587
  i0.ɵɵclassProp("em-pulse--paused", ctx.Paused);
598
588
  i0.ɵɵadvance(3);
@@ -610,7 +600,7 @@ let EventMonitorComponent = class EventMonitorComponent extends BaseResourceComp
610
600
  i0.ɵɵadvance(6);
611
601
  i0.ɵɵtwoWayProperty("ngModel", ctx.Filter);
612
602
  i0.ɵɵadvance();
613
- i0.ɵɵconditional(ctx.Filter ? 53 : -1);
603
+ i0.ɵɵconditional(ctx.Filter ? 45 : -1);
614
604
  i0.ɵɵadvance(4);
615
605
  i0.ɵɵtwoWayProperty("ngModel", ctx.TypeFilter);
616
606
  i0.ɵɵadvance(2);
@@ -624,28 +614,28 @@ let EventMonitorComponent = class EventMonitorComponent extends BaseResourceComp
624
614
  i0.ɵɵadvance();
625
615
  i0.ɵɵrepeater(ctx.KnownComponents);
626
616
  i0.ɵɵadvance(2);
627
- i0.ɵɵconditional(ctx.KnownCodes.length > 0 ? 70 : -1);
617
+ i0.ɵɵconditional(ctx.KnownCodes.length > 0 ? 62 : -1);
628
618
  i0.ɵɵadvance();
629
- i0.ɵɵconditional(ctx.HasActiveFilters ? 71 : -1);
619
+ i0.ɵɵconditional(ctx.HasActiveFilters ? 63 : -1);
630
620
  i0.ɵɵadvance(3);
631
621
  i0.ɵɵclassProp("em-th--sorted", ctx.SortField === "time");
632
622
  i0.ɵɵadvance(2);
633
- i0.ɵɵconditional(ctx.SortField === "time" ? 76 : -1);
623
+ i0.ɵɵconditional(ctx.SortField === "time" ? 68 : -1);
634
624
  i0.ɵɵadvance();
635
625
  i0.ɵɵclassProp("em-th--sorted", ctx.SortField === "type");
636
626
  i0.ɵɵadvance(2);
637
- i0.ɵɵconditional(ctx.SortField === "type" ? 79 : -1);
627
+ i0.ɵɵconditional(ctx.SortField === "type" ? 71 : -1);
638
628
  i0.ɵɵadvance();
639
629
  i0.ɵɵclassProp("em-th--sorted", ctx.SortField === "eventCode");
640
630
  i0.ɵɵadvance(2);
641
- i0.ɵɵconditional(ctx.SortField === "eventCode" ? 82 : -1);
631
+ i0.ɵɵconditional(ctx.SortField === "eventCode" ? 74 : -1);
642
632
  i0.ɵɵadvance();
643
633
  i0.ɵɵclassProp("em-th--sorted", ctx.SortField === "component");
644
634
  i0.ɵɵadvance(2);
645
- i0.ɵɵconditional(ctx.SortField === "component" ? 85 : -1);
635
+ i0.ɵɵconditional(ctx.SortField === "component" ? 77 : -1);
646
636
  i0.ɵɵadvance(4);
647
- i0.ɵɵconditional(ctx.FilteredEvents.length === 0 ? 89 : 90);
648
- } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.JsonPipe, i2.DatePipe], styles: ["[_nghost-%COMP%] { display: block; height: 100%; }\n\n.mj-inspector[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n background: var(--mj-bg-page);\n color: var(--mj-text-primary);\n font-family: inherit;\n}\n\n\n\n.mj-inspector__header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 14px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n flex-shrink: 0;\n}\n.mj-inspector__header-icon[_ngcontent-%COMP%] {\n width: 36px; height: 36px;\n border-radius: 9px;\n background: linear-gradient(135deg, #264FAF 0%, #0076b6 100%);\n color: white;\n display: flex; align-items: center; justify-content: center;\n font-size: 15px;\n flex-shrink: 0;\n}\n.mj-inspector__header-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n letter-spacing: -0.2px;\n}\n.mj-inspector__header-sub[_ngcontent-%COMP%] {\n font-size: 11.5px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n}\n.mj-inspector__header-spacer[_ngcontent-%COMP%] { flex: 1; }\n.mj-inspector__header-actions[_ngcontent-%COMP%] {\n display: flex; gap: 6px;\n}\n.mj-inspector__btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 12px;\n border-radius: 7px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n font-family: inherit;\n transition: all 0.15s;\n}\n.mj-inspector__btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n.mj-inspector__btn--success[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n border-color: color-mix(in srgb, var(--mj-status-success) 30%, var(--mj-border-default));\n}\n\n\n\n.mj-inspector__body[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n min-height: 0;\n}\n.mj-inspector__sidebar[_ngcontent-%COMP%] {\n width: 220px;\n border-right: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n overflow-y: auto;\n flex-shrink: 0;\n padding: 8px;\n}\n.mj-inspector__nav-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n padding: 10px 12px;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.12s;\n margin-bottom: 2px;\n font-family: inherit;\n border: none;\n background: transparent;\n color: var(--mj-text-secondary);\n text-align: left;\n width: 100%;\n}\n.mj-inspector__nav-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.mj-inspector__nav-item--active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n.mj-inspector__nav-item--active[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 14%, transparent);\n}\n.mj-inspector__nav-icon[_ngcontent-%COMP%] {\n width: 18px;\n text-align: center;\n font-size: 13px;\n margin-top: 1px;\n flex-shrink: 0;\n color: inherit;\n}\n.mj-inspector__nav-text[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n.mj-inspector__nav-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n line-height: 1.2;\n}\n.mj-inspector__nav-desc[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 3px;\n line-height: 1.3;\n}\n.mj-inspector__nav-item--active[_ngcontent-%COMP%] .mj-inspector__nav-desc[_ngcontent-%COMP%] {\n color: color-mix(in srgb, var(--mj-brand-primary) 70%, var(--mj-text-muted));\n}\n\n\n\n.mj-inspector__content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-page);\n}\n.mj-inspector__content-head[_ngcontent-%COMP%] {\n padding: 12px 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n display: flex;\n align-items: center;\n justify-content: space-between;\n background: var(--mj-bg-surface-card);\n}\n.mj-inspector__content-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n.mj-inspector__content-meta[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n.mj-inspector__editor[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n.mj-inspector__editor[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n display: block;\n}\n\n\n\n.mj-inspector__empty[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n\n@media (max-width: 700px) {\n .mj-inspector__body[_ngcontent-%COMP%] { flex-direction: column; }\n .mj-inspector__sidebar[_ngcontent-%COMP%] {\n width: 100%;\n height: auto;\n max-height: 200px;\n border-right: none;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n }\n .mj-inspector__nav-item[_ngcontent-%COMP%] { flex: 1 1 calc(50% - 8px); margin-bottom: 0; }\n .mj-inspector__nav-desc[_ngcontent-%COMP%] { display: none; }\n .mj-inspector__header[_ngcontent-%COMP%] { padding: 12px 14px; gap: 10px; }\n}", ".mj-inspector--solo[_ngcontent-%COMP%] { background: var(--mj-bg-page); }\n.em-paused[_ngcontent-%COMP%] {\n color: var(--mj-status-warning) !important;\n border-color: color-mix(in srgb, var(--mj-status-warning) 30%, var(--mj-border-default)) !important;\n}\n\n\n\n.em-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n padding: 14px 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n align-items: center;\n}\n.em-stat[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 10px;\n min-width: 130px;\n}\n.em-stat--right[_ngcontent-%COMP%] { margin-left: auto; }\n.em-stat-value[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 700;\n color: var(--mj-text-primary);\n letter-spacing: -0.3px;\n line-height: 1;\n}\n.em-stat-value--small[_ngcontent-%COMP%] { font-size: 13px; }\n.em-stat-label[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n font-weight: 600;\n letter-spacing: 0.5px;\n margin-top: 4px;\n}\n\n\n\n.em-pulse[_ngcontent-%COMP%] {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background: var(--mj-status-success);\n box-shadow: 0 0 0 0 var(--mj-status-success);\n animation: _ngcontent-%COMP%_em-pulse-anim 1.6s ease-out infinite;\n}\n.em-pulse--paused[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n box-shadow: none;\n animation: none;\n}\n@keyframes _ngcontent-%COMP%_em-pulse-anim {\n 0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--mj-status-success) 70%, transparent); }\n 70% { box-shadow: 0 0 0 8px color-mix(in srgb, var(--mj-status-success) 0%, transparent); }\n 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--mj-status-success) 0%, transparent); }\n}\n@media (prefers-reduced-motion: reduce) { .em-pulse[_ngcontent-%COMP%] { animation: none; } }\n\n\n\n.em-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 10px;\n padding: 10px 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n flex-wrap: wrap;\n}\n.em-search-wrap[_ngcontent-%COMP%] {\n position: relative;\n width: 280px;\n flex-shrink: 0;\n}\n.em-select-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 3px;\n min-width: 0;\n}\n.em-select-label[_ngcontent-%COMP%] {\n font-size: 9.5px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n.em-select[_ngcontent-%COMP%] {\n padding: 6px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 7px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 12px;\n font-family: inherit;\n cursor: pointer;\n min-width: 160px;\n max-width: 240px;\n}\n.em-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n.em-clear-filters[_ngcontent-%COMP%] {\n align-self: flex-end;\n padding: 6px 12px;\n background: transparent;\n border: 1px solid color-mix(in srgb, var(--mj-status-warning) 30%, var(--mj-border-default));\n color: color-mix(in srgb, var(--mj-status-warning) 70%, var(--mj-text-primary));\n border-radius: 7px;\n font-size: 11.5px;\n font-weight: 500;\n cursor: pointer;\n font-family: inherit;\n margin-left: auto;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n}\n.em-clear-filters[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-warning) 8%, transparent);\n}\n.em-search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-muted);\n font-size: 12px;\n pointer-events: none;\n}\n.em-search[_ngcontent-%COMP%] {\n width: 100%;\n padding: 7px 32px 7px 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 12.5px;\n font-family: inherit;\n}\n.em-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n.em-search-clear[_ngcontent-%COMP%] {\n position: absolute;\n right: 8px; top: 50%;\n transform: translateY(-50%);\n background: transparent;\n border: none;\n color: var(--mj-text-muted);\n cursor: pointer;\n width: 22px; height: 22px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 11px;\n}\n.em-search-clear[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); }\n\n\n\n.em-table-head[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 110px 160px 140px 200px 1fr 32px;\n gap: 12px;\n padding: 8px 20px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-subtle);\n position: sticky;\n top: 0;\n z-index: 1;\n align-items: center;\n}\n.em-th[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: transparent;\n border: none;\n cursor: pointer;\n font-family: inherit;\n text-align: left;\n padding: 4px 0;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n transition: color 0.12s;\n}\n.em-th[_ngcontent-%COMP%]:hover { color: var(--mj-text-primary); }\n.em-th--sorted[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n.em-th--sorted[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 9px; }\n.em-th--summary[_ngcontent-%COMP%], \n.em-th--actions[_ngcontent-%COMP%] {\n cursor: default;\n}\n.em-th--summary[_ngcontent-%COMP%]:hover, \n.em-th--actions[_ngcontent-%COMP%]:hover { color: var(--mj-text-muted); }\n\n\n\n.em-list[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n background: var(--mj-bg-page);\n}\n.em-row[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n transition: background 0.1s;\n animation: _ngcontent-%COMP%_em-row-in 0.25s ease-out;\n}\n@keyframes _ngcontent-%COMP%_em-row-in {\n from { opacity: 0; transform: translateY(-3px); }\n to { opacity: 1; transform: translateY(0); }\n}\n@media (prefers-reduced-motion: reduce) { .em-row[_ngcontent-%COMP%] { animation: none; } }\n.em-row[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); }\n.em-row--expanded[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-brand-primary) 4%, var(--mj-bg-surface)); }\n.em-row--expanded[_ngcontent-%COMP%]:hover { background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface)); }\n\n.em-row-head[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 12px 96px 160px 140px 200px 1fr 32px;\n gap: 12px;\n padding: 8px 20px;\n cursor: pointer;\n font-size: 12.5px;\n align-items: center;\n}\n.em-row-chev[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 10px;\n width: 12px;\n flex-shrink: 0;\n transition: transform 0.15s;\n justify-self: start;\n}\n.em-row-chev--down[_ngcontent-%COMP%] { transform: rotate(90deg); }\n.em-row-time[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-size: 11px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.em-row-type[_ngcontent-%COMP%] {\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-weight: 700;\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 4px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n color: var(--mj-brand-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n justify-self: start;\n}\n.em-row-type[data-type=\"LoggedIn\"][_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-success) 14%, transparent); color: color-mix(in srgb, var(--mj-status-success) 70%, var(--mj-text-primary)); }\n.em-row-type[data-type=\"LoggedOut\"][_ngcontent-%COMP%], \n.em-row-type[data-type=\"LoginFailed\"][_ngcontent-%COMP%], \n.em-row-type[data-type=\"LogoutFailed\"][_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-error) 14%, transparent); color: color-mix(in srgb, var(--mj-status-error) 70%, var(--mj-text-primary)); }\n.em-row-type[data-type=\"DisplaySimpleNotificationRequest\"][_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-warning) 14%, transparent); color: color-mix(in srgb, var(--mj-status-warning) 70%, var(--mj-text-primary)); }\n.em-row-type[data-type=\"ManualResizeRequest\"][_ngcontent-%COMP%] { background: color-mix(in srgb, #7c3aed 12%, transparent); color: #5b21b6; }\n\n.em-row-code[_ngcontent-%COMP%] {\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-size: 11px;\n color: var(--mj-text-secondary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.em-row-component[_ngcontent-%COMP%] {\n font-size: 11.5px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.em-row-summary[_ngcontent-%COMP%] {\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-size: 11.5px;\n color: var(--mj-text-muted);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n}\n.em-row-summary--empty[_ngcontent-%COMP%] { font-style: italic; opacity: 0.6; }\n\n.em-row-no-payload[_ngcontent-%COMP%] {\n margin: 0 20px 12px 50px;\n background: var(--mj-bg-surface-sunken);\n border: 1px dashed var(--mj-border-default);\n border-radius: 8px;\n padding: 14px 18px;\n color: var(--mj-text-muted);\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 10px;\n}\n.em-row-no-payload[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 14px; }\n.em-row-copy[_ngcontent-%COMP%] {\n background: transparent;\n border: 1px solid transparent;\n color: var(--mj-text-muted);\n cursor: pointer;\n padding: 4px 8px;\n border-radius: 5px;\n font-size: 11px;\n opacity: 0;\n transition: all 0.12s;\n}\n.em-row[_ngcontent-%COMP%]:hover .em-row-copy[_ngcontent-%COMP%] { opacity: 1; }\n.em-row-copy[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.em-row-payload[_ngcontent-%COMP%] {\n margin: 0 20px 12px 50px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 8px;\n padding: 12px 14px;\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-size: 11.5px;\n color: var(--mj-text-primary);\n overflow: auto;\n max-height: 280px;\n}\n.em-row-payload[_ngcontent-%COMP%] code[_ngcontent-%COMP%] { white-space: pre-wrap; word-break: break-word; }\n\n\n\n.em-empty[_ngcontent-%COMP%] {\n padding: 80px 40px;\n text-align: center;\n color: var(--mj-text-muted);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n}\n.em-empty-icon[_ngcontent-%COMP%] {\n font-size: 36px;\n opacity: 0.4;\n color: var(--mj-brand-primary);\n}\n.em-empty-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n.em-empty-sub[_ngcontent-%COMP%] {\n font-size: 12.5px;\n max-width: 380px;\n line-height: 1.5;\n}\n\n@media (max-width: 800px) {\n .em-stats[_ngcontent-%COMP%] { flex-wrap: wrap; }\n .em-stat--right[_ngcontent-%COMP%] { margin-left: 0; }\n .em-row-component[_ngcontent-%COMP%] { display: none; }\n .em-row-time[_ngcontent-%COMP%] { min-width: 70px; }\n .em-row-payload[_ngcontent-%COMP%] { margin-left: 20px; }\n}"] });
637
+ i0.ɵɵconditional(ctx.FilteredEvents.length === 0 ? 81 : 82);
638
+ } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.MJButtonDirective, i2.MJPageHeaderInteriorComponent, i3.JsonPipe, i3.DatePipe], styles: ["[_nghost-%COMP%] { display: block; height: 100%; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.mj-inspector[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n background: var(--mj-bg-page);\n color: var(--mj-text-primary);\n font-family: inherit;\n}\n\n\n\n.mj-inspector__content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-page);\n}\n.mj-inspector__content-head[_ngcontent-%COMP%] {\n padding: 12px 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n display: flex;\n align-items: center;\n justify-content: space-between;\n background: var(--mj-bg-surface-card);\n}\n.mj-inspector__content-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n.mj-inspector__content-meta[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n.mj-inspector__editor[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n.mj-inspector__editor[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n display: block;\n}\n\n\n\n.mj-inspector__empty[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n font-size: 13px;\n}", ".mj-inspector--solo[_ngcontent-%COMP%] { background: var(--mj-bg-page); }\n\n\n\n.em-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n padding: 14px 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n align-items: center;\n}\n.em-stat[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 10px;\n min-width: 130px;\n}\n.em-stat--right[_ngcontent-%COMP%] { margin-left: auto; }\n.em-stat-value[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 700;\n color: var(--mj-text-primary);\n letter-spacing: -0.3px;\n line-height: 1;\n}\n.em-stat-value--small[_ngcontent-%COMP%] { font-size: 13px; }\n.em-stat-label[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n font-weight: 600;\n letter-spacing: 0.5px;\n margin-top: 4px;\n}\n\n\n\n.em-pulse[_ngcontent-%COMP%] {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background: var(--mj-status-success);\n box-shadow: 0 0 0 0 var(--mj-status-success);\n animation: _ngcontent-%COMP%_em-pulse-anim 1.6s ease-out infinite;\n}\n.em-pulse--paused[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n box-shadow: none;\n animation: none;\n}\n@keyframes _ngcontent-%COMP%_em-pulse-anim {\n 0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--mj-status-success) 70%, transparent); }\n 70% { box-shadow: 0 0 0 8px color-mix(in srgb, var(--mj-status-success) 0%, transparent); }\n 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--mj-status-success) 0%, transparent); }\n}\n@media (prefers-reduced-motion: reduce) { .em-pulse[_ngcontent-%COMP%] { animation: none; } }\n\n\n\n.em-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 10px;\n padding: 10px 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n flex-wrap: wrap;\n}\n.em-search-wrap[_ngcontent-%COMP%] {\n position: relative;\n width: 280px;\n flex-shrink: 0;\n}\n.em-select-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 3px;\n min-width: 0;\n}\n.em-select-label[_ngcontent-%COMP%] {\n font-size: 9.5px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n.em-select[_ngcontent-%COMP%] {\n padding: 6px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 7px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 12px;\n font-family: inherit;\n cursor: pointer;\n min-width: 160px;\n max-width: 240px;\n}\n.em-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n.em-clear-filters[_ngcontent-%COMP%] {\n align-self: flex-end;\n padding: 6px 12px;\n background: transparent;\n border: 1px solid color-mix(in srgb, var(--mj-status-warning) 30%, var(--mj-border-default));\n color: color-mix(in srgb, var(--mj-status-warning) 70%, var(--mj-text-primary));\n border-radius: 7px;\n font-size: 11.5px;\n font-weight: 500;\n cursor: pointer;\n font-family: inherit;\n margin-left: auto;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n}\n.em-clear-filters[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-warning) 8%, transparent);\n}\n.em-search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-muted);\n font-size: 12px;\n pointer-events: none;\n}\n.em-search[_ngcontent-%COMP%] {\n width: 100%;\n padding: 7px 32px 7px 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 12.5px;\n font-family: inherit;\n}\n.em-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n.em-search-clear[_ngcontent-%COMP%] {\n position: absolute;\n right: 8px; top: 50%;\n transform: translateY(-50%);\n background: transparent;\n border: none;\n color: var(--mj-text-muted);\n cursor: pointer;\n width: 22px; height: 22px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 11px;\n}\n.em-search-clear[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); }\n\n\n\n.em-table-head[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 110px 160px 140px 200px 1fr 32px;\n gap: 12px;\n padding: 8px 20px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-subtle);\n position: sticky;\n top: 0;\n z-index: 1;\n align-items: center;\n}\n.em-th[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: transparent;\n border: none;\n cursor: pointer;\n font-family: inherit;\n text-align: left;\n padding: 4px 0;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n transition: color 0.12s;\n}\n.em-th[_ngcontent-%COMP%]:hover { color: var(--mj-text-primary); }\n.em-th--sorted[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n.em-th--sorted[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 9px; }\n.em-th--summary[_ngcontent-%COMP%], \n.em-th--actions[_ngcontent-%COMP%] {\n cursor: default;\n}\n.em-th--summary[_ngcontent-%COMP%]:hover, \n.em-th--actions[_ngcontent-%COMP%]:hover { color: var(--mj-text-muted); }\n\n\n\n.em-list[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n background: var(--mj-bg-page);\n}\n.em-row[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n transition: background 0.1s;\n animation: _ngcontent-%COMP%_em-row-in 0.25s ease-out;\n}\n@keyframes _ngcontent-%COMP%_em-row-in {\n from { opacity: 0; transform: translateY(-3px); }\n to { opacity: 1; transform: translateY(0); }\n}\n@media (prefers-reduced-motion: reduce) { .em-row[_ngcontent-%COMP%] { animation: none; } }\n.em-row[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); }\n.em-row--expanded[_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-brand-primary) 4%, var(--mj-bg-surface)); }\n.em-row--expanded[_ngcontent-%COMP%]:hover { background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface)); }\n\n.em-row-head[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 12px 96px 160px 140px 200px 1fr 32px;\n gap: 12px;\n padding: 8px 20px;\n cursor: pointer;\n font-size: 12.5px;\n align-items: center;\n}\n.em-row-chev[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 10px;\n width: 12px;\n flex-shrink: 0;\n transition: transform 0.15s;\n justify-self: start;\n}\n.em-row-chev--down[_ngcontent-%COMP%] { transform: rotate(90deg); }\n.em-row-time[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-size: 11px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.em-row-type[_ngcontent-%COMP%] {\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-weight: 700;\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 4px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n color: var(--mj-brand-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n justify-self: start;\n}\n.em-row-type[data-type=\"LoggedIn\"][_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-success) 14%, transparent); color: color-mix(in srgb, var(--mj-status-success) 70%, var(--mj-text-primary)); }\n.em-row-type[data-type=\"LoggedOut\"][_ngcontent-%COMP%], \n.em-row-type[data-type=\"LoginFailed\"][_ngcontent-%COMP%], \n.em-row-type[data-type=\"LogoutFailed\"][_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-error) 14%, transparent); color: color-mix(in srgb, var(--mj-status-error) 70%, var(--mj-text-primary)); }\n.em-row-type[data-type=\"DisplaySimpleNotificationRequest\"][_ngcontent-%COMP%] { background: color-mix(in srgb, var(--mj-status-warning) 14%, transparent); color: color-mix(in srgb, var(--mj-status-warning) 70%, var(--mj-text-primary)); }\n.em-row-type[data-type=\"ManualResizeRequest\"][_ngcontent-%COMP%] { background: color-mix(in srgb, #7c3aed 12%, transparent); color: #5b21b6; }\n\n.em-row-code[_ngcontent-%COMP%] {\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-size: 11px;\n color: var(--mj-text-secondary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.em-row-component[_ngcontent-%COMP%] {\n font-size: 11.5px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.em-row-summary[_ngcontent-%COMP%] {\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-size: 11.5px;\n color: var(--mj-text-muted);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n}\n.em-row-summary--empty[_ngcontent-%COMP%] { font-style: italic; opacity: 0.6; }\n\n.em-row-no-payload[_ngcontent-%COMP%] {\n margin: 0 20px 12px 50px;\n background: var(--mj-bg-surface-sunken);\n border: 1px dashed var(--mj-border-default);\n border-radius: 8px;\n padding: 14px 18px;\n color: var(--mj-text-muted);\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 10px;\n}\n.em-row-no-payload[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 14px; }\n.em-row-copy[_ngcontent-%COMP%] {\n background: transparent;\n border: 1px solid transparent;\n color: var(--mj-text-muted);\n cursor: pointer;\n padding: 4px 8px;\n border-radius: 5px;\n font-size: 11px;\n opacity: 0;\n transition: all 0.12s;\n}\n.em-row[_ngcontent-%COMP%]:hover .em-row-copy[_ngcontent-%COMP%] { opacity: 1; }\n.em-row-copy[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.em-row-payload[_ngcontent-%COMP%] {\n margin: 0 20px 12px 50px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 8px;\n padding: 12px 14px;\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-size: 11.5px;\n color: var(--mj-text-primary);\n overflow: auto;\n max-height: 280px;\n}\n.em-row-payload[_ngcontent-%COMP%] code[_ngcontent-%COMP%] { white-space: pre-wrap; word-break: break-word; }\n\n\n\n.em-empty[_ngcontent-%COMP%] {\n padding: 80px 40px;\n text-align: center;\n color: var(--mj-text-muted);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n}\n.em-empty-icon[_ngcontent-%COMP%] {\n font-size: 36px;\n opacity: 0.4;\n color: var(--mj-brand-primary);\n}\n.em-empty-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n.em-empty-sub[_ngcontent-%COMP%] {\n font-size: 12.5px;\n max-width: 380px;\n line-height: 1.5;\n}\n\n@media (max-width: 800px) {\n .em-stats[_ngcontent-%COMP%] { flex-wrap: wrap; }\n .em-stat--right[_ngcontent-%COMP%] { margin-left: 0; }\n .em-row-component[_ngcontent-%COMP%] { display: none; }\n .em-row-time[_ngcontent-%COMP%] { min-width: 70px; }\n .em-row-payload[_ngcontent-%COMP%] { margin-left: 20px; }\n}"] });
649
639
  };
650
640
  EventMonitorComponent = __decorate([
651
641
  RegisterClass(BaseResourceComponent, 'EventMonitorInspector')
@@ -653,7 +643,7 @@ EventMonitorComponent = __decorate([
653
643
  export { EventMonitorComponent };
654
644
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EventMonitorComponent, [{
655
645
  type: Component,
656
- args: [{ standalone: false, selector: 'mj-event-monitor', template: "<div class=\"mj-inspector mj-inspector--solo\">\n <div class=\"mj-inspector__header\">\n <div class=\"mj-inspector__header-icon\"><i class=\"fa-solid fa-bolt\"></i></div>\n <div>\n <h3 class=\"mj-inspector__header-title\">Event Monitor</h3>\n <div class=\"mj-inspector__header-sub\">Live tail of MJGlobal events with filter and pause</div>\n </div>\n <span class=\"mj-inspector__header-spacer\"></span>\n <div class=\"mj-inspector__header-actions\">\n <button class=\"mj-inspector__btn\"\n [class.mj-inspector__btn--success]=\"!Paused\"\n [class.em-paused]=\"Paused\"\n type=\"button\" (click)=\"TogglePause()\"\n [title]=\"Paused ? 'Resume capture' : 'Pause capture'\">\n @if (Paused) {\n <i class=\"fa-solid fa-play\"></i> Resume\n } @else {\n <i class=\"fa-solid fa-pause\"></i> Pause\n }\n </button>\n <button class=\"mj-inspector__btn\" type=\"button\" (click)=\"Clear()\" title=\"Clear all captured events\">\n <i class=\"fa-solid fa-broom\"></i> Clear\n </button>\n </div>\n </div>\n\n <div class=\"em-stats\">\n <div class=\"em-stat\">\n <i class=\"em-pulse\" [class.em-pulse--paused]=\"Paused\"></i>\n <div>\n <div class=\"em-stat-value\">{{ Paused ? 'PAUSED' : 'LIVE' }}</div>\n <div class=\"em-stat-label\">{{ Paused ? 'Capture suspended' : 'Capturing events' }}</div>\n </div>\n </div>\n <div class=\"em-stat\">\n <div>\n <div class=\"em-stat-value\">{{ Stats.captured }}</div>\n <div class=\"em-stat-label\">Total captured</div>\n </div>\n </div>\n <div class=\"em-stat\">\n <div>\n <div class=\"em-stat-value\">{{ Stats.kept }} / {{ MaxEvents }}</div>\n <div class=\"em-stat-label\">In buffer</div>\n </div>\n </div>\n <div class=\"em-stat\">\n <div>\n <div class=\"em-stat-value\">{{ Stats.perSecond }}/s</div>\n <div class=\"em-stat-label\">Last second</div>\n </div>\n </div>\n <div class=\"em-stat em-stat--right\">\n <div>\n <div class=\"em-stat-value em-stat-value--small\">{{ UptimeLabel }}</div>\n <div class=\"em-stat-label\">Watching for</div>\n </div>\n </div>\n </div>\n\n <div class=\"em-toolbar\">\n <div class=\"em-search-wrap\">\n <i class=\"fa-solid fa-search em-search-icon\"></i>\n <input type=\"search\"\n class=\"em-search\"\n placeholder=\"Filter by type, component, payload\u2026\"\n [(ngModel)]=\"Filter\"\n (ngModelChange)=\"PersistPrefs()\" />\n @if (Filter) {\n <button class=\"em-search-clear\" (click)=\"Filter = ''\" title=\"Clear\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n }\n </div>\n\n <div class=\"em-select-wrap\">\n <label class=\"em-select-label\">Type</label>\n <select class=\"em-select\" [(ngModel)]=\"TypeFilter\" (ngModelChange)=\"PersistPrefs()\">\n <option value=\"\">All types ({{ KnownTypes.length }})</option>\n @for (t of KnownTypes; track t) {\n <option [value]=\"t\">{{ t }}</option>\n }\n </select>\n </div>\n\n <div class=\"em-select-wrap\">\n <label class=\"em-select-label\">Component</label>\n <select class=\"em-select\" [(ngModel)]=\"ComponentFilter\" (ngModelChange)=\"PersistPrefs()\">\n <option value=\"\">All components ({{ KnownComponents.length }})</option>\n @for (c of KnownComponents; track c) {\n <option [value]=\"c\">{{ c }}</option>\n }\n </select>\n </div>\n\n @if (KnownCodes.length > 0) {\n <div class=\"em-select-wrap\">\n <label class=\"em-select-label\">Code</label>\n <select class=\"em-select\" [(ngModel)]=\"CodeFilter\" (ngModelChange)=\"PersistPrefs()\">\n <option value=\"\">All codes ({{ KnownCodes.length }})</option>\n @for (c of KnownCodes; track c) {\n <option [value]=\"c\">{{ c }}</option>\n }\n </select>\n </div>\n }\n\n @if (HasActiveFilters) {\n <button class=\"em-clear-filters\" type=\"button\" (click)=\"ClearFilters()\" title=\"Clear all filters\">\n <i class=\"fa-solid fa-xmark\"></i> Clear filters\n </button>\n }\n </div>\n\n <div class=\"em-list\">\n <div class=\"em-table-head\">\n <button type=\"button\"\n class=\"em-th em-th--time\"\n [class.em-th--sorted]=\"SortField === 'time'\"\n (click)=\"OnSortClick('time')\">\n Time\n @if (SortField === 'time') {\n <i class=\"fa-solid\" [class.fa-arrow-down]=\"SortDir === 'desc'\" [class.fa-arrow-up]=\"SortDir === 'asc'\"></i>\n }\n </button>\n <button type=\"button\"\n class=\"em-th em-th--type\"\n [class.em-th--sorted]=\"SortField === 'type'\"\n (click)=\"OnSortClick('type')\">\n Type\n @if (SortField === 'type') {\n <i class=\"fa-solid\" [class.fa-arrow-down]=\"SortDir === 'desc'\" [class.fa-arrow-up]=\"SortDir === 'asc'\"></i>\n }\n </button>\n <button type=\"button\"\n class=\"em-th em-th--code\"\n [class.em-th--sorted]=\"SortField === 'eventCode'\"\n (click)=\"OnSortClick('eventCode')\">\n Code\n @if (SortField === 'eventCode') {\n <i class=\"fa-solid\" [class.fa-arrow-down]=\"SortDir === 'desc'\" [class.fa-arrow-up]=\"SortDir === 'asc'\"></i>\n }\n </button>\n <button type=\"button\"\n class=\"em-th em-th--component\"\n [class.em-th--sorted]=\"SortField === 'component'\"\n (click)=\"OnSortClick('component')\">\n Component\n @if (SortField === 'component') {\n <i class=\"fa-solid\" [class.fa-arrow-down]=\"SortDir === 'desc'\" [class.fa-arrow-up]=\"SortDir === 'asc'\"></i>\n }\n </button>\n <span class=\"em-th em-th--summary\">Summary</span>\n <span class=\"em-th em-th--actions\"></span>\n </div>\n\n @if (FilteredEvents.length === 0) {\n <div class=\"em-empty\">\n @if (Stats.captured === 0) {\n <i class=\"fa-solid fa-radio em-empty-icon\"></i>\n <div class=\"em-empty-title\">Listening for events\u2026</div>\n <div class=\"em-empty-sub\">Trigger an action \u2014 saves, navigation, AI events all show up here.</div>\n } @else if (Paused) {\n <i class=\"fa-solid fa-pause em-empty-icon\"></i>\n <div class=\"em-empty-title\">Capture is paused</div>\n <div class=\"em-empty-sub\">{{ Stats.captured }} events fired since you paused. Click Resume to start collecting again.</div>\n } @else {\n <i class=\"fa-solid fa-filter em-empty-icon\"></i>\n <div class=\"em-empty-title\">No events match your filter</div>\n <div class=\"em-empty-sub\">{{ Stats.kept }} events in buffer \u00B7 clear filters to see them.</div>\n }\n </div>\n } @else {\n @for (evt of FilteredEvents; track TrackBySeq($index, evt)) {\n <div class=\"em-row\" [class.em-row--expanded]=\"evt.expanded\">\n <div class=\"em-row-head\" (click)=\"ToggleRow(evt)\">\n <i class=\"em-row-chev fa-solid fa-chevron-right\"\n [class.em-row-chev--down]=\"evt.expanded\"></i>\n <span class=\"em-row-time\">{{ evt.timestamp | date:'HH:mm:ss.SSS' }}</span>\n <span class=\"em-row-type\" [attr.data-type]=\"evt.type\">{{ evt.type }}</span>\n <span class=\"em-row-code\">{{ evt.eventCode || '\u2014' }}</span>\n <span class=\"em-row-component\" [title]=\"evt.componentName\">{{ evt.componentName }}</span>\n <span class=\"em-row-summary\" [class.em-row-summary--empty]=\"!evt.hasPayload\">{{ evt.summary }}</span>\n <button class=\"em-row-copy\"\n type=\"button\"\n (click)=\"$event.stopPropagation(); OnCopyRow(evt)\"\n title=\"Copy as JSON\">\n <i class=\"fa-solid fa-clipboard\"></i>\n </button>\n </div>\n @if (evt.expanded) {\n @if (evt.hasPayload) {\n <pre class=\"em-row-payload\"><code>{{ evt.args | json }}</code></pre>\n } @else {\n <div class=\"em-row-no-payload\">\n <i class=\"fa-regular fa-circle\"></i>\n <span>This event has no payload.</span>\n </div>\n }\n }\n </div>\n }\n }\n </div>\n</div>\n", styles: [":host { display: block; height: 100%; }\n\n.mj-inspector {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n background: var(--mj-bg-page);\n color: var(--mj-text-primary);\n font-family: inherit;\n}\n\n/* Header */\n.mj-inspector__header {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 14px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n flex-shrink: 0;\n}\n.mj-inspector__header-icon {\n width: 36px; height: 36px;\n border-radius: 9px;\n background: linear-gradient(135deg, #264FAF 0%, #0076b6 100%);\n color: white;\n display: flex; align-items: center; justify-content: center;\n font-size: 15px;\n flex-shrink: 0;\n}\n.mj-inspector__header-title {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n letter-spacing: -0.2px;\n}\n.mj-inspector__header-sub {\n font-size: 11.5px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n}\n.mj-inspector__header-spacer { flex: 1; }\n.mj-inspector__header-actions {\n display: flex; gap: 6px;\n}\n.mj-inspector__btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 12px;\n border-radius: 7px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n font-family: inherit;\n transition: all 0.15s;\n}\n.mj-inspector__btn:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n.mj-inspector__btn--success {\n color: var(--mj-status-success);\n border-color: color-mix(in srgb, var(--mj-status-success) 30%, var(--mj-border-default));\n}\n\n/* Layout: sidebar + content */\n.mj-inspector__body {\n display: flex;\n flex: 1;\n min-height: 0;\n}\n.mj-inspector__sidebar {\n width: 220px;\n border-right: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n overflow-y: auto;\n flex-shrink: 0;\n padding: 8px;\n}\n.mj-inspector__nav-item {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n padding: 10px 12px;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.12s;\n margin-bottom: 2px;\n font-family: inherit;\n border: none;\n background: transparent;\n color: var(--mj-text-secondary);\n text-align: left;\n width: 100%;\n}\n.mj-inspector__nav-item:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.mj-inspector__nav-item--active {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n.mj-inspector__nav-item--active:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 14%, transparent);\n}\n.mj-inspector__nav-icon {\n width: 18px;\n text-align: center;\n font-size: 13px;\n margin-top: 1px;\n flex-shrink: 0;\n color: inherit;\n}\n.mj-inspector__nav-text { flex: 1; min-width: 0; }\n.mj-inspector__nav-label {\n font-size: 13px;\n font-weight: 500;\n line-height: 1.2;\n}\n.mj-inspector__nav-desc {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 3px;\n line-height: 1.3;\n}\n.mj-inspector__nav-item--active .mj-inspector__nav-desc {\n color: color-mix(in srgb, var(--mj-brand-primary) 70%, var(--mj-text-muted));\n}\n\n/* Content area */\n.mj-inspector__content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-page);\n}\n.mj-inspector__content-head {\n padding: 12px 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n display: flex;\n align-items: center;\n justify-content: space-between;\n background: var(--mj-bg-surface-card);\n}\n.mj-inspector__content-title {\n margin: 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n.mj-inspector__content-meta {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n.mj-inspector__editor {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n.mj-inspector__editor mj-code-editor {\n flex: 1;\n min-height: 0;\n display: block;\n}\n\n/* Empty state */\n.mj-inspector__empty {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n\n@media (max-width: 700px) {\n .mj-inspector__body { flex-direction: column; }\n .mj-inspector__sidebar {\n width: 100%;\n height: auto;\n max-height: 200px;\n border-right: none;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n }\n .mj-inspector__nav-item { flex: 1 1 calc(50% - 8px); margin-bottom: 0; }\n .mj-inspector__nav-desc { display: none; }\n .mj-inspector__header { padding: 12px 14px; gap: 10px; }\n}\n", ".mj-inspector--solo { background: var(--mj-bg-page); }\n.em-paused {\n color: var(--mj-status-warning) !important;\n border-color: color-mix(in srgb, var(--mj-status-warning) 30%, var(--mj-border-default)) !important;\n}\n\n/* Stats row */\n.em-stats {\n display: flex;\n gap: 16px;\n padding: 14px 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n align-items: center;\n}\n.em-stat {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 10px;\n min-width: 130px;\n}\n.em-stat--right { margin-left: auto; }\n.em-stat-value {\n font-size: 16px;\n font-weight: 700;\n color: var(--mj-text-primary);\n letter-spacing: -0.3px;\n line-height: 1;\n}\n.em-stat-value--small { font-size: 13px; }\n.em-stat-label {\n font-size: 10px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n font-weight: 600;\n letter-spacing: 0.5px;\n margin-top: 4px;\n}\n\n/* Live pulse */\n.em-pulse {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background: var(--mj-status-success);\n box-shadow: 0 0 0 0 var(--mj-status-success);\n animation: em-pulse-anim 1.6s ease-out infinite;\n}\n.em-pulse--paused {\n background: var(--mj-status-warning);\n box-shadow: none;\n animation: none;\n}\n@keyframes em-pulse-anim {\n 0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--mj-status-success) 70%, transparent); }\n 70% { box-shadow: 0 0 0 8px color-mix(in srgb, var(--mj-status-success) 0%, transparent); }\n 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--mj-status-success) 0%, transparent); }\n}\n@media (prefers-reduced-motion: reduce) { .em-pulse { animation: none; } }\n\n/* Toolbar */\n.em-toolbar {\n display: flex;\n align-items: flex-end;\n gap: 10px;\n padding: 10px 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n flex-wrap: wrap;\n}\n.em-search-wrap {\n position: relative;\n width: 280px;\n flex-shrink: 0;\n}\n.em-select-wrap {\n display: flex;\n flex-direction: column;\n gap: 3px;\n min-width: 0;\n}\n.em-select-label {\n font-size: 9.5px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n.em-select {\n padding: 6px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 7px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 12px;\n font-family: inherit;\n cursor: pointer;\n min-width: 160px;\n max-width: 240px;\n}\n.em-select:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n.em-clear-filters {\n align-self: flex-end;\n padding: 6px 12px;\n background: transparent;\n border: 1px solid color-mix(in srgb, var(--mj-status-warning) 30%, var(--mj-border-default));\n color: color-mix(in srgb, var(--mj-status-warning) 70%, var(--mj-text-primary));\n border-radius: 7px;\n font-size: 11.5px;\n font-weight: 500;\n cursor: pointer;\n font-family: inherit;\n margin-left: auto;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n}\n.em-clear-filters:hover {\n background: color-mix(in srgb, var(--mj-status-warning) 8%, transparent);\n}\n.em-search-icon {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-muted);\n font-size: 12px;\n pointer-events: none;\n}\n.em-search {\n width: 100%;\n padding: 7px 32px 7px 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 12.5px;\n font-family: inherit;\n}\n.em-search:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n.em-search-clear {\n position: absolute;\n right: 8px; top: 50%;\n transform: translateY(-50%);\n background: transparent;\n border: none;\n color: var(--mj-text-muted);\n cursor: pointer;\n width: 22px; height: 22px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 11px;\n}\n.em-search-clear:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); }\n\n/* Table head with sortable columns */\n.em-table-head {\n display: grid;\n grid-template-columns: 110px 160px 140px 200px 1fr 32px;\n gap: 12px;\n padding: 8px 20px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-subtle);\n position: sticky;\n top: 0;\n z-index: 1;\n align-items: center;\n}\n.em-th {\n font-size: 10px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: transparent;\n border: none;\n cursor: pointer;\n font-family: inherit;\n text-align: left;\n padding: 4px 0;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n transition: color 0.12s;\n}\n.em-th:hover { color: var(--mj-text-primary); }\n.em-th--sorted {\n color: var(--mj-brand-primary);\n}\n.em-th--sorted i { font-size: 9px; }\n.em-th--summary,\n.em-th--actions {\n cursor: default;\n}\n.em-th--summary:hover,\n.em-th--actions:hover { color: var(--mj-text-muted); }\n\n/* List */\n.em-list {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n background: var(--mj-bg-page);\n}\n.em-row {\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n transition: background 0.1s;\n animation: em-row-in 0.25s ease-out;\n}\n@keyframes em-row-in {\n from { opacity: 0; transform: translateY(-3px); }\n to { opacity: 1; transform: translateY(0); }\n}\n@media (prefers-reduced-motion: reduce) { .em-row { animation: none; } }\n.em-row:hover { background: var(--mj-bg-surface-hover); }\n.em-row--expanded { background: color-mix(in srgb, var(--mj-brand-primary) 4%, var(--mj-bg-surface)); }\n.em-row--expanded:hover { background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface)); }\n\n.em-row-head {\n display: grid;\n grid-template-columns: 12px 96px 160px 140px 200px 1fr 32px;\n gap: 12px;\n padding: 8px 20px;\n cursor: pointer;\n font-size: 12.5px;\n align-items: center;\n}\n.em-row-chev {\n color: var(--mj-text-muted);\n font-size: 10px;\n width: 12px;\n flex-shrink: 0;\n transition: transform 0.15s;\n justify-self: start;\n}\n.em-row-chev--down { transform: rotate(90deg); }\n.em-row-time {\n color: var(--mj-text-muted);\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-size: 11px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.em-row-type {\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-weight: 700;\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 4px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n color: var(--mj-brand-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n justify-self: start;\n}\n.em-row-type[data-type=\"LoggedIn\"] { background: color-mix(in srgb, var(--mj-status-success) 14%, transparent); color: color-mix(in srgb, var(--mj-status-success) 70%, var(--mj-text-primary)); }\n.em-row-type[data-type=\"LoggedOut\"],\n.em-row-type[data-type=\"LoginFailed\"],\n.em-row-type[data-type=\"LogoutFailed\"] { background: color-mix(in srgb, var(--mj-status-error) 14%, transparent); color: color-mix(in srgb, var(--mj-status-error) 70%, var(--mj-text-primary)); }\n.em-row-type[data-type=\"DisplaySimpleNotificationRequest\"] { background: color-mix(in srgb, var(--mj-status-warning) 14%, transparent); color: color-mix(in srgb, var(--mj-status-warning) 70%, var(--mj-text-primary)); }\n.em-row-type[data-type=\"ManualResizeRequest\"] { background: color-mix(in srgb, #7c3aed 12%, transparent); color: #5b21b6; }\n\n.em-row-code {\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-size: 11px;\n color: var(--mj-text-secondary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.em-row-component {\n font-size: 11.5px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.em-row-summary {\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-size: 11.5px;\n color: var(--mj-text-muted);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n}\n.em-row-summary--empty { font-style: italic; opacity: 0.6; }\n\n.em-row-no-payload {\n margin: 0 20px 12px 50px;\n background: var(--mj-bg-surface-sunken);\n border: 1px dashed var(--mj-border-default);\n border-radius: 8px;\n padding: 14px 18px;\n color: var(--mj-text-muted);\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 10px;\n}\n.em-row-no-payload i { font-size: 14px; }\n.em-row-copy {\n background: transparent;\n border: 1px solid transparent;\n color: var(--mj-text-muted);\n cursor: pointer;\n padding: 4px 8px;\n border-radius: 5px;\n font-size: 11px;\n opacity: 0;\n transition: all 0.12s;\n}\n.em-row:hover .em-row-copy { opacity: 1; }\n.em-row-copy:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.em-row-payload {\n margin: 0 20px 12px 50px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 8px;\n padding: 12px 14px;\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-size: 11.5px;\n color: var(--mj-text-primary);\n overflow: auto;\n max-height: 280px;\n}\n.em-row-payload code { white-space: pre-wrap; word-break: break-word; }\n\n/* Empty state */\n.em-empty {\n padding: 80px 40px;\n text-align: center;\n color: var(--mj-text-muted);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n}\n.em-empty-icon {\n font-size: 36px;\n opacity: 0.4;\n color: var(--mj-brand-primary);\n}\n.em-empty-title {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n.em-empty-sub {\n font-size: 12.5px;\n max-width: 380px;\n line-height: 1.5;\n}\n\n@media (max-width: 800px) {\n .em-stats { flex-wrap: wrap; }\n .em-stat--right { margin-left: 0; }\n .em-row-component { display: none; }\n .em-row-time { min-width: 70px; }\n .em-row-payload { margin-left: 20px; }\n}\n"] }]
646
+ args: [{ standalone: false, selector: 'mj-event-monitor', template: "<div class=\"mj-inspector mj-inspector--solo\">\n <mj-page-header-interior\n Role=\"region\"\n AriaLabel=\"Event monitor\"\n Title=\"Event Monitor\"\n Subtitle=\"Live tail of MJGlobal events with filter and pause\">\n <div actions>\n <button mjButton\n variant=\"secondary\"\n size=\"sm\"\n (click)=\"TogglePause()\"\n [title]=\"Paused ? 'Resume capture' : 'Pause capture'\">\n @if (Paused) {\n <i class=\"fa-solid fa-play\" aria-hidden=\"true\"></i> Resume\n } @else {\n <i class=\"fa-solid fa-pause\" aria-hidden=\"true\"></i> Pause\n }\n </button>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"Clear()\" title=\"Clear all captured events\">\n <i class=\"fa-solid fa-broom\" aria-hidden=\"true\"></i> Clear\n </button>\n </div>\n </mj-page-header-interior>\n\n <div class=\"em-stats\">\n <div class=\"em-stat\">\n <i class=\"em-pulse\" [class.em-pulse--paused]=\"Paused\"></i>\n <div>\n <div class=\"em-stat-value\">{{ Paused ? 'PAUSED' : 'LIVE' }}</div>\n <div class=\"em-stat-label\">{{ Paused ? 'Capture suspended' : 'Capturing events' }}</div>\n </div>\n </div>\n <div class=\"em-stat\">\n <div>\n <div class=\"em-stat-value\">{{ Stats.captured }}</div>\n <div class=\"em-stat-label\">Total captured</div>\n </div>\n </div>\n <div class=\"em-stat\">\n <div>\n <div class=\"em-stat-value\">{{ Stats.kept }} / {{ MaxEvents }}</div>\n <div class=\"em-stat-label\">In buffer</div>\n </div>\n </div>\n <div class=\"em-stat\">\n <div>\n <div class=\"em-stat-value\">{{ Stats.perSecond }}/s</div>\n <div class=\"em-stat-label\">Last second</div>\n </div>\n </div>\n <div class=\"em-stat em-stat--right\">\n <div>\n <div class=\"em-stat-value em-stat-value--small\">{{ UptimeLabel }}</div>\n <div class=\"em-stat-label\">Watching for</div>\n </div>\n </div>\n </div>\n\n <div class=\"em-toolbar\">\n <div class=\"em-search-wrap\">\n <i class=\"fa-solid fa-search em-search-icon\"></i>\n <input type=\"search\"\n class=\"em-search\"\n placeholder=\"Filter by type, component, payload\u2026\"\n [(ngModel)]=\"Filter\"\n (ngModelChange)=\"PersistPrefs()\" />\n @if (Filter) {\n <button class=\"em-search-clear\" (click)=\"Filter = ''\" title=\"Clear\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n }\n </div>\n\n <div class=\"em-select-wrap\">\n <label class=\"em-select-label\">Type</label>\n <select class=\"em-select\" [(ngModel)]=\"TypeFilter\" (ngModelChange)=\"PersistPrefs()\">\n <option value=\"\">All types ({{ KnownTypes.length }})</option>\n @for (t of KnownTypes; track t) {\n <option [value]=\"t\">{{ t }}</option>\n }\n </select>\n </div>\n\n <div class=\"em-select-wrap\">\n <label class=\"em-select-label\">Component</label>\n <select class=\"em-select\" [(ngModel)]=\"ComponentFilter\" (ngModelChange)=\"PersistPrefs()\">\n <option value=\"\">All components ({{ KnownComponents.length }})</option>\n @for (c of KnownComponents; track c) {\n <option [value]=\"c\">{{ c }}</option>\n }\n </select>\n </div>\n\n @if (KnownCodes.length > 0) {\n <div class=\"em-select-wrap\">\n <label class=\"em-select-label\">Code</label>\n <select class=\"em-select\" [(ngModel)]=\"CodeFilter\" (ngModelChange)=\"PersistPrefs()\">\n <option value=\"\">All codes ({{ KnownCodes.length }})</option>\n @for (c of KnownCodes; track c) {\n <option [value]=\"c\">{{ c }}</option>\n }\n </select>\n </div>\n }\n\n @if (HasActiveFilters) {\n <button class=\"em-clear-filters\" type=\"button\" (click)=\"ClearFilters()\" title=\"Clear all filters\">\n <i class=\"fa-solid fa-xmark\"></i> Clear filters\n </button>\n }\n </div>\n\n <div class=\"em-list\">\n <div class=\"em-table-head\">\n <button type=\"button\"\n class=\"em-th em-th--time\"\n [class.em-th--sorted]=\"SortField === 'time'\"\n (click)=\"OnSortClick('time')\">\n Time\n @if (SortField === 'time') {\n <i class=\"fa-solid\" [class.fa-arrow-down]=\"SortDir === 'desc'\" [class.fa-arrow-up]=\"SortDir === 'asc'\"></i>\n }\n </button>\n <button type=\"button\"\n class=\"em-th em-th--type\"\n [class.em-th--sorted]=\"SortField === 'type'\"\n (click)=\"OnSortClick('type')\">\n Type\n @if (SortField === 'type') {\n <i class=\"fa-solid\" [class.fa-arrow-down]=\"SortDir === 'desc'\" [class.fa-arrow-up]=\"SortDir === 'asc'\"></i>\n }\n </button>\n <button type=\"button\"\n class=\"em-th em-th--code\"\n [class.em-th--sorted]=\"SortField === 'eventCode'\"\n (click)=\"OnSortClick('eventCode')\">\n Code\n @if (SortField === 'eventCode') {\n <i class=\"fa-solid\" [class.fa-arrow-down]=\"SortDir === 'desc'\" [class.fa-arrow-up]=\"SortDir === 'asc'\"></i>\n }\n </button>\n <button type=\"button\"\n class=\"em-th em-th--component\"\n [class.em-th--sorted]=\"SortField === 'component'\"\n (click)=\"OnSortClick('component')\">\n Component\n @if (SortField === 'component') {\n <i class=\"fa-solid\" [class.fa-arrow-down]=\"SortDir === 'desc'\" [class.fa-arrow-up]=\"SortDir === 'asc'\"></i>\n }\n </button>\n <span class=\"em-th em-th--summary\">Summary</span>\n <span class=\"em-th em-th--actions\"></span>\n </div>\n\n @if (FilteredEvents.length === 0) {\n <div class=\"em-empty\">\n @if (Stats.captured === 0) {\n <i class=\"fa-solid fa-radio em-empty-icon\"></i>\n <div class=\"em-empty-title\">Listening for events\u2026</div>\n <div class=\"em-empty-sub\">Trigger an action \u2014 saves, navigation, AI events all show up here.</div>\n } @else if (Paused) {\n <i class=\"fa-solid fa-pause em-empty-icon\"></i>\n <div class=\"em-empty-title\">Capture is paused</div>\n <div class=\"em-empty-sub\">{{ Stats.captured }} events fired since you paused. Click Resume to start collecting again.</div>\n } @else {\n <i class=\"fa-solid fa-filter em-empty-icon\"></i>\n <div class=\"em-empty-title\">No events match your filter</div>\n <div class=\"em-empty-sub\">{{ Stats.kept }} events in buffer \u00B7 clear filters to see them.</div>\n }\n </div>\n } @else {\n @for (evt of FilteredEvents; track TrackBySeq($index, evt)) {\n <div class=\"em-row\" [class.em-row--expanded]=\"evt.expanded\">\n <div class=\"em-row-head\" (click)=\"ToggleRow(evt)\">\n <i class=\"em-row-chev fa-solid fa-chevron-right\"\n [class.em-row-chev--down]=\"evt.expanded\"></i>\n <span class=\"em-row-time\">{{ evt.timestamp | date:'HH:mm:ss.SSS' }}</span>\n <span class=\"em-row-type\" [attr.data-type]=\"evt.type\">{{ evt.type }}</span>\n <span class=\"em-row-code\">{{ evt.eventCode || '\u2014' }}</span>\n <span class=\"em-row-component\" [title]=\"evt.componentName\">{{ evt.componentName }}</span>\n <span class=\"em-row-summary\" [class.em-row-summary--empty]=\"!evt.hasPayload\">{{ evt.summary }}</span>\n <button class=\"em-row-copy\"\n type=\"button\"\n (click)=\"$event.stopPropagation(); OnCopyRow(evt)\"\n title=\"Copy as JSON\">\n <i class=\"fa-solid fa-clipboard\"></i>\n </button>\n </div>\n @if (evt.expanded) {\n @if (evt.hasPayload) {\n <pre class=\"em-row-payload\"><code>{{ evt.args | json }}</code></pre>\n } @else {\n <div class=\"em-row-no-payload\">\n <i class=\"fa-regular fa-circle\"></i>\n <span>This event has no payload.</span>\n </div>\n }\n }\n </div>\n }\n }\n </div>\n</div>\n", styles: [":host { display: block; height: 100%; }\n\n/*\n Inspector shell \u2014 each Dev Tools sub-page wraps its body in .mj-inspector. The\n chrome (title icon, title, subtitle, action buttons) was previously rendered\n via .mj-inspector__header*, but that's been replaced by <mj-page-header-interior>\n in every inspector template. Action buttons now use the mjButton directive\n (variant=\"secondary\" / \"success\") so they inherit global button styling. App\n State + Layout inspectors used to carry an inner left rail (.mj-inspector__body\n + __sidebar + __nav-item) for L2 sections; that rail was retired 2026-05-19 in\n favor of <mj-tab-nav> projected into the chrome's [toolbar] slot, matching\n SystemDiagnostics and the API Keys tab strip. All inspectors are now \"solo\"\n mode (no sidebar).\n*/\n.mj-inspector {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n background: var(--mj-bg-page);\n color: var(--mj-text-primary);\n font-family: inherit;\n}\n\n/* Content area */\n.mj-inspector__content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-page);\n}\n.mj-inspector__content-head {\n padding: 12px 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n display: flex;\n align-items: center;\n justify-content: space-between;\n background: var(--mj-bg-surface-card);\n}\n.mj-inspector__content-title {\n margin: 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n.mj-inspector__content-meta {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n.mj-inspector__editor {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n.mj-inspector__editor mj-code-editor {\n flex: 1;\n min-height: 0;\n display: block;\n}\n\n/* Empty state */\n.mj-inspector__empty {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n\n", ".mj-inspector--solo { background: var(--mj-bg-page); }\n\n/* Stats row */\n.em-stats {\n display: flex;\n gap: 16px;\n padding: 14px 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n align-items: center;\n}\n.em-stat {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 10px;\n min-width: 130px;\n}\n.em-stat--right { margin-left: auto; }\n.em-stat-value {\n font-size: 16px;\n font-weight: 700;\n color: var(--mj-text-primary);\n letter-spacing: -0.3px;\n line-height: 1;\n}\n.em-stat-value--small { font-size: 13px; }\n.em-stat-label {\n font-size: 10px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n font-weight: 600;\n letter-spacing: 0.5px;\n margin-top: 4px;\n}\n\n/* Live pulse */\n.em-pulse {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background: var(--mj-status-success);\n box-shadow: 0 0 0 0 var(--mj-status-success);\n animation: em-pulse-anim 1.6s ease-out infinite;\n}\n.em-pulse--paused {\n background: var(--mj-status-warning);\n box-shadow: none;\n animation: none;\n}\n@keyframes em-pulse-anim {\n 0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--mj-status-success) 70%, transparent); }\n 70% { box-shadow: 0 0 0 8px color-mix(in srgb, var(--mj-status-success) 0%, transparent); }\n 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--mj-status-success) 0%, transparent); }\n}\n@media (prefers-reduced-motion: reduce) { .em-pulse { animation: none; } }\n\n/* Toolbar */\n.em-toolbar {\n display: flex;\n align-items: flex-end;\n gap: 10px;\n padding: 10px 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n flex-wrap: wrap;\n}\n.em-search-wrap {\n position: relative;\n width: 280px;\n flex-shrink: 0;\n}\n.em-select-wrap {\n display: flex;\n flex-direction: column;\n gap: 3px;\n min-width: 0;\n}\n.em-select-label {\n font-size: 9.5px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n.em-select {\n padding: 6px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 7px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 12px;\n font-family: inherit;\n cursor: pointer;\n min-width: 160px;\n max-width: 240px;\n}\n.em-select:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n.em-clear-filters {\n align-self: flex-end;\n padding: 6px 12px;\n background: transparent;\n border: 1px solid color-mix(in srgb, var(--mj-status-warning) 30%, var(--mj-border-default));\n color: color-mix(in srgb, var(--mj-status-warning) 70%, var(--mj-text-primary));\n border-radius: 7px;\n font-size: 11.5px;\n font-weight: 500;\n cursor: pointer;\n font-family: inherit;\n margin-left: auto;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n}\n.em-clear-filters:hover {\n background: color-mix(in srgb, var(--mj-status-warning) 8%, transparent);\n}\n.em-search-icon {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-muted);\n font-size: 12px;\n pointer-events: none;\n}\n.em-search {\n width: 100%;\n padding: 7px 32px 7px 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 12.5px;\n font-family: inherit;\n}\n.em-search:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n.em-search-clear {\n position: absolute;\n right: 8px; top: 50%;\n transform: translateY(-50%);\n background: transparent;\n border: none;\n color: var(--mj-text-muted);\n cursor: pointer;\n width: 22px; height: 22px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 11px;\n}\n.em-search-clear:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); }\n\n/* Table head with sortable columns */\n.em-table-head {\n display: grid;\n grid-template-columns: 110px 160px 140px 200px 1fr 32px;\n gap: 12px;\n padding: 8px 20px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-subtle);\n position: sticky;\n top: 0;\n z-index: 1;\n align-items: center;\n}\n.em-th {\n font-size: 10px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: transparent;\n border: none;\n cursor: pointer;\n font-family: inherit;\n text-align: left;\n padding: 4px 0;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n transition: color 0.12s;\n}\n.em-th:hover { color: var(--mj-text-primary); }\n.em-th--sorted {\n color: var(--mj-brand-primary);\n}\n.em-th--sorted i { font-size: 9px; }\n.em-th--summary,\n.em-th--actions {\n cursor: default;\n}\n.em-th--summary:hover,\n.em-th--actions:hover { color: var(--mj-text-muted); }\n\n/* List */\n.em-list {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n background: var(--mj-bg-page);\n}\n.em-row {\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n transition: background 0.1s;\n animation: em-row-in 0.25s ease-out;\n}\n@keyframes em-row-in {\n from { opacity: 0; transform: translateY(-3px); }\n to { opacity: 1; transform: translateY(0); }\n}\n@media (prefers-reduced-motion: reduce) { .em-row { animation: none; } }\n.em-row:hover { background: var(--mj-bg-surface-hover); }\n.em-row--expanded { background: color-mix(in srgb, var(--mj-brand-primary) 4%, var(--mj-bg-surface)); }\n.em-row--expanded:hover { background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface)); }\n\n.em-row-head {\n display: grid;\n grid-template-columns: 12px 96px 160px 140px 200px 1fr 32px;\n gap: 12px;\n padding: 8px 20px;\n cursor: pointer;\n font-size: 12.5px;\n align-items: center;\n}\n.em-row-chev {\n color: var(--mj-text-muted);\n font-size: 10px;\n width: 12px;\n flex-shrink: 0;\n transition: transform 0.15s;\n justify-self: start;\n}\n.em-row-chev--down { transform: rotate(90deg); }\n.em-row-time {\n color: var(--mj-text-muted);\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-size: 11px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.em-row-type {\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-weight: 700;\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 4px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n color: var(--mj-brand-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n justify-self: start;\n}\n.em-row-type[data-type=\"LoggedIn\"] { background: color-mix(in srgb, var(--mj-status-success) 14%, transparent); color: color-mix(in srgb, var(--mj-status-success) 70%, var(--mj-text-primary)); }\n.em-row-type[data-type=\"LoggedOut\"],\n.em-row-type[data-type=\"LoginFailed\"],\n.em-row-type[data-type=\"LogoutFailed\"] { background: color-mix(in srgb, var(--mj-status-error) 14%, transparent); color: color-mix(in srgb, var(--mj-status-error) 70%, var(--mj-text-primary)); }\n.em-row-type[data-type=\"DisplaySimpleNotificationRequest\"] { background: color-mix(in srgb, var(--mj-status-warning) 14%, transparent); color: color-mix(in srgb, var(--mj-status-warning) 70%, var(--mj-text-primary)); }\n.em-row-type[data-type=\"ManualResizeRequest\"] { background: color-mix(in srgb, #7c3aed 12%, transparent); color: #5b21b6; }\n\n.em-row-code {\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-size: 11px;\n color: var(--mj-text-secondary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.em-row-component {\n font-size: 11.5px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.em-row-summary {\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-size: 11.5px;\n color: var(--mj-text-muted);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n}\n.em-row-summary--empty { font-style: italic; opacity: 0.6; }\n\n.em-row-no-payload {\n margin: 0 20px 12px 50px;\n background: var(--mj-bg-surface-sunken);\n border: 1px dashed var(--mj-border-default);\n border-radius: 8px;\n padding: 14px 18px;\n color: var(--mj-text-muted);\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 10px;\n}\n.em-row-no-payload i { font-size: 14px; }\n.em-row-copy {\n background: transparent;\n border: 1px solid transparent;\n color: var(--mj-text-muted);\n cursor: pointer;\n padding: 4px 8px;\n border-radius: 5px;\n font-size: 11px;\n opacity: 0;\n transition: all 0.12s;\n}\n.em-row:hover .em-row-copy { opacity: 1; }\n.em-row-copy:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.em-row-payload {\n margin: 0 20px 12px 50px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 8px;\n padding: 12px 14px;\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-size: 11.5px;\n color: var(--mj-text-primary);\n overflow: auto;\n max-height: 280px;\n}\n.em-row-payload code { white-space: pre-wrap; word-break: break-word; }\n\n/* Empty state */\n.em-empty {\n padding: 80px 40px;\n text-align: center;\n color: var(--mj-text-muted);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n}\n.em-empty-icon {\n font-size: 36px;\n opacity: 0.4;\n color: var(--mj-brand-primary);\n}\n.em-empty-title {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n.em-empty-sub {\n font-size: 12.5px;\n max-width: 380px;\n line-height: 1.5;\n}\n\n@media (max-width: 800px) {\n .em-stats { flex-wrap: wrap; }\n .em-stat--right { margin-left: 0; }\n .em-row-component { display: none; }\n .em-row-time { min-width: 70px; }\n .em-row-payload { margin-left: 20px; }\n}\n"] }]
657
647
  }], () => [{ type: i0.ChangeDetectorRef }], null); })();
658
648
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EventMonitorComponent, { className: "EventMonitorComponent", filePath: "src/DevTools/event-monitor.component.ts", lineNumber: 44 }); })();
659
649
  //# sourceMappingURL=event-monitor.component.js.map