@memberjunction/ng-dashboards 5.38.0 → 5.40.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 (321) hide show
  1. package/README.md +14 -7
  2. package/dist/AI/components/agents/agent-configuration.component.js +199 -198
  3. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -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 +20 -17
  6. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  7. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +15 -0
  8. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  9. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +166 -58
  10. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  11. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  12. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +2 -1
  13. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  14. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +1 -0
  15. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  16. package/dist/AI/components/analytics/model-performance/model-performance.component.js +55 -36
  17. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  18. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts +9 -1
  19. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  20. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +158 -117
  21. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  22. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts +1 -0
  23. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  24. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +22 -8
  25. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  26. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +217 -860
  27. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  28. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +1717 -7802
  29. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  30. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts +56 -0
  31. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts.map +1 -0
  32. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js +423 -0
  33. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js.map +1 -0
  34. package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts +70 -0
  35. package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts.map +1 -0
  36. package/dist/AI/components/autotagging/components/classify-item-grid.component.js +308 -0
  37. package/dist/AI/components/autotagging/components/classify-item-grid.component.js.map +1 -0
  38. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts +29 -0
  39. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts.map +1 -0
  40. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js +186 -0
  41. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js.map +1 -0
  42. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts +69 -0
  43. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts.map +1 -0
  44. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js +278 -0
  45. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js.map +1 -0
  46. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts +73 -0
  47. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts.map +1 -0
  48. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js +393 -0
  49. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js.map +1 -0
  50. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts +122 -0
  51. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts.map +1 -0
  52. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js +908 -0
  53. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js.map +1 -0
  54. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts +87 -0
  55. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts.map +1 -0
  56. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js +475 -0
  57. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js.map +1 -0
  58. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts +29 -0
  59. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts.map +1 -0
  60. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js +208 -0
  61. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js.map +1 -0
  62. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts +21 -0
  63. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts.map +1 -0
  64. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js +70 -0
  65. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js.map +1 -0
  66. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts +333 -0
  67. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -0
  68. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +2125 -0
  69. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -0
  70. package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts +61 -0
  71. package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts.map +1 -0
  72. package/dist/AI/components/autotagging/shared/classify.dryrun.js +78 -0
  73. package/dist/AI/components/autotagging/shared/classify.dryrun.js.map +1 -0
  74. package/dist/AI/components/autotagging/shared/classify.format.d.ts +58 -0
  75. package/dist/AI/components/autotagging/shared/classify.format.d.ts.map +1 -0
  76. package/dist/AI/components/autotagging/shared/classify.format.js +260 -0
  77. package/dist/AI/components/autotagging/shared/classify.format.js.map +1 -0
  78. package/dist/AI/components/autotagging/shared/classify.types.d.ts +319 -0
  79. package/dist/AI/components/autotagging/shared/classify.types.d.ts.map +1 -0
  80. package/dist/AI/components/autotagging/shared/classify.types.js +6 -0
  81. package/dist/AI/components/autotagging/shared/classify.types.js.map +1 -0
  82. package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts +103 -0
  83. package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts.map +1 -0
  84. package/dist/AI/components/autotagging/tabs/health-tab.component.js +571 -0
  85. package/dist/AI/components/autotagging/tabs/health-tab.component.js.map +1 -0
  86. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts +77 -0
  87. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts.map +1 -0
  88. package/dist/AI/components/autotagging/tabs/history-tab.component.js +519 -0
  89. package/dist/AI/components/autotagging/tabs/history-tab.component.js.map +1 -0
  90. package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts +107 -0
  91. package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts.map +1 -0
  92. package/dist/AI/components/autotagging/tabs/inbox-tab.component.js +719 -0
  93. package/dist/AI/components/autotagging/tabs/inbox-tab.component.js.map +1 -0
  94. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts +131 -0
  95. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts.map +1 -0
  96. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js +813 -0
  97. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js.map +1 -0
  98. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts +177 -0
  99. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -0
  100. package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1465 -0
  101. package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -0
  102. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts +78 -0
  103. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts.map +1 -0
  104. package/dist/AI/components/autotagging/tabs/tags-tab.component.js +492 -0
  105. package/dist/AI/components/autotagging/tabs/tags-tab.component.js.map +1 -0
  106. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts +397 -0
  107. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts.map +1 -0
  108. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js +3490 -0
  109. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js.map +1 -0
  110. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts +56 -0
  111. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts.map +1 -0
  112. package/dist/AI/components/autotagging/tabs/types-tab.component.js +271 -0
  113. package/dist/AI/components/autotagging/tabs/types-tab.component.js.map +1 -0
  114. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +3 -0
  115. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  116. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +306 -290
  117. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  118. package/dist/AI/components/execution-monitoring.component.js +1 -1
  119. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  120. package/dist/AI/components/models/model-management.component.js +209 -208
  121. package/dist/AI/components/models/model-management.component.js.map +1 -1
  122. package/dist/AI/components/prompts/prompt-management.component.js +130 -128
  123. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  124. package/dist/AI/components/requests/agent-requests-resource.component.js +61 -61
  125. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  126. package/dist/AI/components/system/system-configuration.component.js +17 -17
  127. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  128. package/dist/AI/components/tags/tags-resource.component.d.ts +1 -0
  129. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  130. package/dist/AI/components/tags/tags-resource.component.js +578 -538
  131. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  132. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +3 -0
  133. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  134. package/dist/AI/components/vectors/vector-management-resource.component.js +331 -303
  135. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  136. package/dist/AI/services/ai-instrumentation.service.d.ts +5 -0
  137. package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
  138. package/dist/AI/services/ai-instrumentation.service.js +14 -2
  139. package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
  140. package/dist/AI/services/cache-metrics.d.ts +50 -0
  141. package/dist/AI/services/cache-metrics.d.ts.map +1 -0
  142. package/dist/AI/services/cache-metrics.js +43 -0
  143. package/dist/AI/services/cache-metrics.js.map +1 -0
  144. package/dist/APIKeys/api-applications-panel.component.js +2 -2
  145. package/dist/APIKeys/api-key-create-dialog.component.js +2 -2
  146. package/dist/APIKeys/api-key-edit-panel.component.js +2 -2
  147. package/dist/APIKeys/api-keys-resource.component.js +132 -131
  148. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  149. package/dist/Actions/components/actions-overview.component.js +141 -141
  150. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  151. package/dist/Actions/components/execution-monitoring.component.js +15 -15
  152. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  153. package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -5
  154. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  155. package/dist/Actions/components/explorer/action-explorer.component.js +139 -212
  156. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  157. package/dist/Admin/admin-data-schema.component.js +2 -2
  158. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  159. package/dist/Admin/admin-dev-tools-resource.component.js +2 -2
  160. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  161. package/dist/Admin/admin-identity-access.component.js +2 -2
  162. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  163. package/dist/Admin/admin-monitoring.component.js +2 -2
  164. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  165. package/dist/ApplicationRoles/application-roles-resource.component.js +54 -49
  166. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  167. package/dist/Communication/communication-logs-resource.component.d.ts +6 -0
  168. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  169. package/dist/Communication/communication-logs-resource.component.js +72 -50
  170. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  171. package/dist/Communication/communication-monitor-resource.component.js +103 -102
  172. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  173. package/dist/Communication/communication-providers-resource.component.js +52 -51
  174. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  175. package/dist/Communication/communication-runs-resource.component.js +39 -38
  176. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  177. package/dist/Communication/communication-templates-resource.component.d.ts +6 -0
  178. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  179. package/dist/Communication/communication-templates-resource.component.js +92 -89
  180. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  181. package/dist/Credentials/components/credentials-audit-resource.component.js +136 -135
  182. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  183. package/dist/Credentials/components/credentials-categories-resource.component.js +155 -152
  184. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  185. package/dist/Credentials/components/credentials-list-resource.component.js +119 -118
  186. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  187. package/dist/Credentials/components/credentials-overview-resource.component.js +129 -128
  188. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  189. package/dist/Credentials/components/credentials-types-resource.component.js +107 -106
  190. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  191. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +31 -340
  192. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  193. package/dist/DataExplorer/data-explorer-dashboard.component.js +468 -1958
  194. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  195. package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
  196. package/dist/DataExplorer/data-explorer-resource.component.js +10 -0
  197. package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
  198. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +1 -1
  199. package/dist/DatabaseDesigner/components/entity-list.component.js +115 -114
  200. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  201. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +5 -6
  202. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  203. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +4 -5
  204. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  205. package/dist/DevTools/app-state-inspector.component.js +18 -17
  206. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  207. package/dist/DevTools/class-registry.component.js +88 -85
  208. package/dist/DevTools/class-registry.component.js.map +1 -1
  209. package/dist/DevTools/event-monitor.component.js +155 -150
  210. package/dist/DevTools/event-monitor.component.js.map +1 -1
  211. package/dist/DevTools/graphql-console.component.js +245 -243
  212. package/dist/DevTools/graphql-console.component.js.map +1 -1
  213. package/dist/DevTools/layout-inspector.component.js +18 -17
  214. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  215. package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -19
  216. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  217. package/dist/Home/home-dashboard.component.js +2 -2
  218. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  219. package/dist/Integration/components/activity/activity.component.js +236 -229
  220. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  221. package/dist/Integration/components/connections/connections.component.js +390 -389
  222. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  223. package/dist/Integration/components/overview/overview.component.js +2 -2
  224. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  225. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +14 -11
  226. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  227. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +27 -2
  228. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
  229. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +244 -119
  230. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  231. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +293 -291
  232. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  233. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +62 -61
  234. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  235. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts +65 -0
  236. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts.map +1 -0
  237. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js +176 -0
  238. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js.map +1 -0
  239. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts +81 -0
  240. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts.map +1 -0
  241. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js +308 -0
  242. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js.map +1 -0
  243. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts +85 -0
  244. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts.map +1 -0
  245. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js +362 -0
  246. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js.map +1 -0
  247. package/dist/KnowledgeHub/index.d.ts +3 -0
  248. package/dist/KnowledgeHub/index.d.ts.map +1 -1
  249. package/dist/KnowledgeHub/index.js +3 -0
  250. package/dist/KnowledgeHub/index.js.map +1 -1
  251. package/dist/Lists/components/lists-browse-resource.component.d.ts +6 -2
  252. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  253. package/dist/Lists/components/lists-browse-resource.component.js +525 -566
  254. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  255. package/dist/Lists/components/lists-categories-resource.component.js +135 -134
  256. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  257. package/dist/Lists/components/lists-my-lists-resource.component.js +199 -198
  258. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  259. package/dist/MCP/components/mcp-server-dialog.component.js +2 -2
  260. package/dist/MCP/mcp-dashboard.component.js +443 -438
  261. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  262. package/dist/QueryBrowser/query-browser-resource.component.js +1 -1
  263. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  264. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  265. package/dist/Scheduling/components/scheduling-activity.component.js +146 -147
  266. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  267. package/dist/Scheduling/components/scheduling-jobs.component.js +76 -75
  268. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  269. package/dist/Scheduling/components/scheduling-overview.component.js +97 -96
  270. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  271. package/dist/Scheduling/scheduling-dashboard.component.js +24 -22
  272. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  273. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +2 -0
  274. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
  275. package/dist/Scheduling/services/scheduling-instrumentation.service.js +1 -0
  276. package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
  277. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +1 -1
  278. package/dist/Testing/components/testing-explorer.component.d.ts +14 -4
  279. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  280. package/dist/Testing/components/testing-explorer.component.js +436 -427
  281. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  282. package/dist/Testing/components/testing-runs-resource.component.js +1 -1
  283. package/dist/Testing/components/testing-runs.component.js +116 -115
  284. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  285. package/dist/Testing/testing-dashboard.component.js +6 -7
  286. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  287. package/dist/VersionHistory/components/labels-resource.component.js +173 -172
  288. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  289. package/dist/VersionHistory/components/restore-resource.component.d.ts +6 -0
  290. package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -1
  291. package/dist/VersionHistory/components/restore-resource.component.js +116 -92
  292. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  293. package/dist/ai-dashboards.module.d.ts +57 -35
  294. package/dist/ai-dashboards.module.d.ts.map +1 -1
  295. package/dist/ai-dashboards.module.js +80 -1
  296. package/dist/ai-dashboards.module.js.map +1 -1
  297. package/dist/communication-dashboards.module.d.ts +1 -1
  298. package/dist/communication-dashboards.module.d.ts.map +1 -1
  299. package/dist/communication-dashboards.module.js +7 -1
  300. package/dist/communication-dashboards.module.js.map +1 -1
  301. package/dist/data-explorer-dashboards.module.d.ts +12 -14
  302. package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
  303. package/dist/data-explorer-dashboards.module.js +5 -14
  304. package/dist/data-explorer-dashboards.module.js.map +1 -1
  305. package/dist/public-api.d.ts +3 -0
  306. package/dist/public-api.d.ts.map +1 -1
  307. package/dist/public-api.js +3 -0
  308. package/dist/public-api.js.map +1 -1
  309. package/dist/testing-dashboards.module.d.ts +4 -5
  310. package/dist/testing-dashboards.module.d.ts.map +1 -1
  311. package/dist/testing-dashboards.module.js +7 -5
  312. package/dist/testing-dashboards.module.js.map +1 -1
  313. package/package.json +57 -54
  314. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts +0 -79
  315. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts.map +0 -1
  316. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +0 -195
  317. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +0 -1
  318. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +0 -226
  319. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +0 -1
  320. package/dist/DataExplorer/components/view-selector/view-selector.component.js +0 -861
  321. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +0 -1
@@ -13,22 +13,26 @@ import * as i1 from "@angular/forms";
13
13
  import * as i2 from "@memberjunction/ng-ui-components";
14
14
  import * as i3 from "@angular/common";
15
15
  function EventMonitorComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
16
- i0.ɵɵelement(0, "i", 34);
17
- i0.ɵɵtext(1, " Resume ");
16
+ i0.ɵɵelement(0, "i", 35);
17
+ i0.ɵɵelementStart(1, "span", 6);
18
+ i0.ɵɵtext(2, "Resume");
19
+ i0.ɵɵelementEnd();
18
20
  } }
19
21
  function EventMonitorComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
20
- i0.ɵɵelement(0, "i", 35);
21
- i0.ɵɵtext(1, " Pause ");
22
+ i0.ɵɵelement(0, "i", 36);
23
+ i0.ɵɵelementStart(1, "span", 6);
24
+ i0.ɵɵtext(2, "Pause");
25
+ i0.ɵɵelementEnd();
22
26
  } }
23
- function EventMonitorComponent_Conditional_45_Template(rf, ctx) { if (rf & 1) {
27
+ function EventMonitorComponent_Conditional_46_Template(rf, ctx) { if (rf & 1) {
24
28
  const _r1 = i0.ɵɵgetCurrentView();
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);
29
+ i0.ɵɵelementStart(0, "button", 37);
30
+ i0.ɵɵlistener("click", function EventMonitorComponent_Conditional_46_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.Filter = ""); });
31
+ i0.ɵɵelement(1, "i", 38);
28
32
  i0.ɵɵelementEnd();
29
33
  } }
30
- function EventMonitorComponent_For_53_Template(rf, ctx) { if (rf & 1) {
31
- i0.ɵɵelementStart(0, "option", 22);
34
+ function EventMonitorComponent_For_54_Template(rf, ctx) { if (rf & 1) {
35
+ i0.ɵɵelementStart(0, "option", 23);
32
36
  i0.ɵɵtext(1);
33
37
  i0.ɵɵelementEnd();
34
38
  } if (rf & 2) {
@@ -37,8 +41,8 @@ function EventMonitorComponent_For_53_Template(rf, ctx) { if (rf & 1) {
37
41
  i0.ɵɵadvance();
38
42
  i0.ɵɵtextInterpolate(t_r3);
39
43
  } }
40
- function EventMonitorComponent_For_61_Template(rf, ctx) { if (rf & 1) {
41
- i0.ɵɵelementStart(0, "option", 22);
44
+ function EventMonitorComponent_For_62_Template(rf, ctx) { if (rf & 1) {
45
+ i0.ɵɵelementStart(0, "option", 23);
42
46
  i0.ɵɵtext(1);
43
47
  i0.ɵɵelementEnd();
44
48
  } if (rf & 2) {
@@ -47,8 +51,8 @@ function EventMonitorComponent_For_61_Template(rf, ctx) { if (rf & 1) {
47
51
  i0.ɵɵadvance();
48
52
  i0.ɵɵtextInterpolate(c_r4);
49
53
  } }
50
- function EventMonitorComponent_Conditional_62_For_7_Template(rf, ctx) { if (rf & 1) {
51
- i0.ɵɵelementStart(0, "option", 22);
54
+ function EventMonitorComponent_Conditional_63_For_7_Template(rf, ctx) { if (rf & 1) {
55
+ i0.ɵɵelementStart(0, "option", 23);
52
56
  i0.ɵɵtext(1);
53
57
  i0.ɵɵelementEnd();
54
58
  } if (rf & 2) {
@@ -57,18 +61,18 @@ function EventMonitorComponent_Conditional_62_For_7_Template(rf, ctx) { if (rf &
57
61
  i0.ɵɵadvance();
58
62
  i0.ɵɵtextInterpolate(c_r6);
59
63
  } }
60
- function EventMonitorComponent_Conditional_62_Template(rf, ctx) { if (rf & 1) {
64
+ function EventMonitorComponent_Conditional_63_Template(rf, ctx) { if (rf & 1) {
61
65
  const _r5 = i0.ɵɵgetCurrentView();
62
- i0.ɵɵelementStart(0, "div", 18)(1, "label", 19);
66
+ i0.ɵɵelementStart(0, "div", 19)(1, "label", 20);
63
67
  i0.ɵɵtext(2, "Code");
64
68
  i0.ɵɵelementEnd();
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);
69
+ i0.ɵɵelementStart(3, "select", 21);
70
+ i0.ɵɵtwoWayListener("ngModelChange", function EventMonitorComponent_Conditional_63_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); });
71
+ i0.ɵɵlistener("ngModelChange", function EventMonitorComponent_Conditional_63_Template_select_ngModelChange_3_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.PersistPrefs()); });
72
+ i0.ɵɵelementStart(4, "option", 22);
69
73
  i0.ɵɵtext(5);
70
74
  i0.ɵɵelementEnd();
71
- i0.ɵɵrepeaterCreate(6, EventMonitorComponent_Conditional_62_For_7_Template, 2, 2, "option", 22, i0.ɵɵrepeaterTrackByIdentity);
75
+ i0.ɵɵrepeaterCreate(6, EventMonitorComponent_Conditional_63_For_7_Template, 2, 2, "option", 23, i0.ɵɵrepeaterTrackByIdentity);
72
76
  i0.ɵɵelementEnd()();
73
77
  } if (rf & 2) {
74
78
  const ctx_r1 = i0.ɵɵnextContext();
@@ -79,53 +83,53 @@ function EventMonitorComponent_Conditional_62_Template(rf, ctx) { if (rf & 1) {
79
83
  i0.ɵɵadvance();
80
84
  i0.ɵɵrepeater(ctx_r1.KnownCodes);
81
85
  } }
82
- function EventMonitorComponent_Conditional_63_Template(rf, ctx) { if (rf & 1) {
86
+ function EventMonitorComponent_Conditional_64_Template(rf, ctx) { if (rf & 1) {
83
87
  const _r7 = i0.ɵɵgetCurrentView();
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);
88
+ i0.ɵɵelementStart(0, "button", 39);
89
+ i0.ɵɵlistener("click", function EventMonitorComponent_Conditional_64_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ClearFilters()); });
90
+ i0.ɵɵelement(1, "i", 38);
87
91
  i0.ɵɵtext(2, " Clear filters ");
88
92
  i0.ɵɵelementEnd();
89
93
  } }
90
- function EventMonitorComponent_Conditional_68_Template(rf, ctx) { if (rf & 1) {
91
- i0.ɵɵelement(0, "i", 39);
94
+ function EventMonitorComponent_Conditional_69_Template(rf, ctx) { if (rf & 1) {
95
+ i0.ɵɵelement(0, "i", 40);
92
96
  } if (rf & 2) {
93
97
  const ctx_r1 = i0.ɵɵnextContext();
94
98
  i0.ɵɵclassProp("fa-arrow-down", ctx_r1.SortDir === "desc")("fa-arrow-up", ctx_r1.SortDir === "asc");
95
99
  } }
96
- function EventMonitorComponent_Conditional_71_Template(rf, ctx) { if (rf & 1) {
97
- i0.ɵɵelement(0, "i", 39);
100
+ function EventMonitorComponent_Conditional_72_Template(rf, ctx) { if (rf & 1) {
101
+ i0.ɵɵelement(0, "i", 40);
98
102
  } if (rf & 2) {
99
103
  const ctx_r1 = i0.ɵɵnextContext();
100
104
  i0.ɵɵclassProp("fa-arrow-down", ctx_r1.SortDir === "desc")("fa-arrow-up", ctx_r1.SortDir === "asc");
101
105
  } }
102
- function EventMonitorComponent_Conditional_74_Template(rf, ctx) { if (rf & 1) {
103
- i0.ɵɵelement(0, "i", 39);
106
+ function EventMonitorComponent_Conditional_75_Template(rf, ctx) { if (rf & 1) {
107
+ i0.ɵɵelement(0, "i", 40);
104
108
  } if (rf & 2) {
105
109
  const ctx_r1 = i0.ɵɵnextContext();
106
110
  i0.ɵɵclassProp("fa-arrow-down", ctx_r1.SortDir === "desc")("fa-arrow-up", ctx_r1.SortDir === "asc");
107
111
  } }
108
- function EventMonitorComponent_Conditional_77_Template(rf, ctx) { if (rf & 1) {
109
- i0.ɵɵelement(0, "i", 39);
112
+ function EventMonitorComponent_Conditional_78_Template(rf, ctx) { if (rf & 1) {
113
+ i0.ɵɵelement(0, "i", 40);
110
114
  } if (rf & 2) {
111
115
  const ctx_r1 = i0.ɵɵnextContext();
112
116
  i0.ɵɵclassProp("fa-arrow-down", ctx_r1.SortDir === "desc")("fa-arrow-up", ctx_r1.SortDir === "asc");
113
117
  } }
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);
118
+ function EventMonitorComponent_Conditional_82_Conditional_1_Template(rf, ctx) { if (rf & 1) {
119
+ i0.ɵɵelement(0, "i", 41);
120
+ i0.ɵɵelementStart(1, "div", 42);
117
121
  i0.ɵɵtext(2, "Listening for events\u2026");
118
122
  i0.ɵɵelementEnd();
119
- i0.ɵɵelementStart(3, "div", 42);
123
+ i0.ɵɵelementStart(3, "div", 43);
120
124
  i0.ɵɵtext(4, "Trigger an action \u2014 saves, navigation, AI events all show up here.");
121
125
  i0.ɵɵelementEnd();
122
126
  } }
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);
127
+ function EventMonitorComponent_Conditional_82_Conditional_2_Template(rf, ctx) { if (rf & 1) {
128
+ i0.ɵɵelement(0, "i", 44);
129
+ i0.ɵɵelementStart(1, "div", 42);
126
130
  i0.ɵɵtext(2, "Capture is paused");
127
131
  i0.ɵɵelementEnd();
128
- i0.ɵɵelementStart(3, "div", 42);
132
+ i0.ɵɵelementStart(3, "div", 43);
129
133
  i0.ɵɵtext(4);
130
134
  i0.ɵɵelementEnd();
131
135
  } if (rf & 2) {
@@ -133,12 +137,12 @@ function EventMonitorComponent_Conditional_81_Conditional_2_Template(rf, ctx) {
133
137
  i0.ɵɵadvance(4);
134
138
  i0.ɵɵtextInterpolate1("", ctx_r1.Stats.captured, " events fired since you paused. Click Resume to start collecting again.");
135
139
  } }
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);
140
+ function EventMonitorComponent_Conditional_82_Conditional_3_Template(rf, ctx) { if (rf & 1) {
141
+ i0.ɵɵelement(0, "i", 45);
142
+ i0.ɵɵelementStart(1, "div", 42);
139
143
  i0.ɵɵtext(2, "No events match your filter");
140
144
  i0.ɵɵelementEnd();
141
- i0.ɵɵelementStart(3, "div", 42);
145
+ i0.ɵɵelementStart(3, "div", 43);
142
146
  i0.ɵɵtext(4);
143
147
  i0.ɵɵelementEnd();
144
148
  } if (rf & 2) {
@@ -146,17 +150,17 @@ function EventMonitorComponent_Conditional_81_Conditional_3_Template(rf, ctx) {
146
150
  i0.ɵɵadvance(4);
147
151
  i0.ɵɵtextInterpolate1("", ctx_r1.Stats.kept, " events in buffer \u00B7 clear filters to see them.");
148
152
  } }
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);
153
+ function EventMonitorComponent_Conditional_82_Template(rf, ctx) { if (rf & 1) {
154
+ i0.ɵɵelementStart(0, "div", 34);
155
+ i0.ɵɵconditionalCreate(1, EventMonitorComponent_Conditional_82_Conditional_1_Template, 5, 0)(2, EventMonitorComponent_Conditional_82_Conditional_2_Template, 5, 1)(3, EventMonitorComponent_Conditional_82_Conditional_3_Template, 5, 1);
152
156
  i0.ɵɵelementEnd();
153
157
  } if (rf & 2) {
154
158
  const ctx_r1 = i0.ɵɵnextContext();
155
159
  i0.ɵɵadvance();
156
160
  i0.ɵɵconditional(ctx_r1.Stats.captured === 0 ? 1 : ctx_r1.Paused ? 2 : 3);
157
161
  } }
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");
162
+ function EventMonitorComponent_Conditional_83_For_1_Conditional_16_Conditional_0_Template(rf, ctx) { if (rf & 1) {
163
+ i0.ɵɵelementStart(0, "pre", 57)(1, "code");
160
164
  i0.ɵɵtext(2);
161
165
  i0.ɵɵpipe(3, "json");
162
166
  i0.ɵɵelementEnd()();
@@ -165,45 +169,45 @@ function EventMonitorComponent_Conditional_82_For_1_Conditional_16_Conditional_0
165
169
  i0.ɵɵadvance(2);
166
170
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 1, evt_r9.args));
167
171
  } }
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);
172
+ function EventMonitorComponent_Conditional_83_For_1_Conditional_16_Conditional_1_Template(rf, ctx) { if (rf & 1) {
173
+ i0.ɵɵelementStart(0, "div", 58);
174
+ i0.ɵɵelement(1, "i", 59);
171
175
  i0.ɵɵelementStart(2, "span");
172
176
  i0.ɵɵtext(3, "This event has no payload.");
173
177
  i0.ɵɵelementEnd()();
174
178
  } }
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);
179
+ function EventMonitorComponent_Conditional_83_For_1_Conditional_16_Template(rf, ctx) { if (rf & 1) {
180
+ i0.ɵɵconditionalCreate(0, EventMonitorComponent_Conditional_83_For_1_Conditional_16_Conditional_0_Template, 4, 3, "pre", 57)(1, EventMonitorComponent_Conditional_83_For_1_Conditional_16_Conditional_1_Template, 4, 0, "div", 58);
177
181
  } if (rf & 2) {
178
182
  const evt_r9 = i0.ɵɵnextContext().$implicit;
179
183
  i0.ɵɵconditional(evt_r9.hasPayload ? 0 : 1);
180
184
  } }
181
- function EventMonitorComponent_Conditional_82_For_1_Template(rf, ctx) { if (rf & 1) {
185
+ function EventMonitorComponent_Conditional_83_For_1_Template(rf, ctx) { if (rf & 1) {
182
186
  const _r8 = i0.ɵɵgetCurrentView();
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);
187
+ i0.ɵɵelementStart(0, "div", 47)(1, "div", 48);
188
+ i0.ɵɵlistener("click", function EventMonitorComponent_Conditional_83_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)); });
189
+ i0.ɵɵelement(2, "i", 49);
190
+ i0.ɵɵelementStart(3, "span", 50);
187
191
  i0.ɵɵtext(4);
188
192
  i0.ɵɵpipe(5, "date");
189
193
  i0.ɵɵelementEnd();
190
- i0.ɵɵelementStart(6, "span", 50);
194
+ i0.ɵɵelementStart(6, "span", 51);
191
195
  i0.ɵɵtext(7);
192
196
  i0.ɵɵelementEnd();
193
- i0.ɵɵelementStart(8, "span", 51);
197
+ i0.ɵɵelementStart(8, "span", 52);
194
198
  i0.ɵɵtext(9);
195
199
  i0.ɵɵelementEnd();
196
- i0.ɵɵelementStart(10, "span", 52);
200
+ i0.ɵɵelementStart(10, "span", 53);
197
201
  i0.ɵɵtext(11);
198
202
  i0.ɵɵelementEnd();
199
- i0.ɵɵelementStart(12, "span", 53);
203
+ i0.ɵɵelementStart(12, "span", 54);
200
204
  i0.ɵɵtext(13);
201
205
  i0.ɵɵelementEnd();
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);
206
+ i0.ɵɵelementStart(14, "button", 55);
207
+ i0.ɵɵlistener("click", function EventMonitorComponent_Conditional_83_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)); });
208
+ i0.ɵɵelement(15, "i", 56);
205
209
  i0.ɵɵelementEnd()();
206
- i0.ɵɵconditionalCreate(16, EventMonitorComponent_Conditional_82_For_1_Conditional_16_Template, 2, 1);
210
+ i0.ɵɵconditionalCreate(16, EventMonitorComponent_Conditional_83_For_1_Conditional_16_Template, 2, 1);
207
211
  i0.ɵɵelementEnd();
208
212
  } if (rf & 2) {
209
213
  const evt_r9 = ctx.$implicit;
@@ -229,8 +233,8 @@ function EventMonitorComponent_Conditional_82_For_1_Template(rf, ctx) { if (rf &
229
233
  i0.ɵɵadvance(3);
230
234
  i0.ɵɵconditional(evt_r9.expanded ? 16 : -1);
231
235
  } }
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);
236
+ function EventMonitorComponent_Conditional_83_Template(rf, ctx) { if (rf & 1) {
237
+ i0.ɵɵrepeaterCreate(0, EventMonitorComponent_Conditional_83_For_1_Template, 17, 17, "div", 46, i0.ɵɵcomponentInstance().TrackBySeq, true);
234
238
  } if (rf & 2) {
235
239
  const ctx_r1 = i0.ɵɵnextContext();
236
240
  i0.ɵɵrepeater(ctx_r1.FilteredEvents);
@@ -476,114 +480,115 @@ let EventMonitorComponent = class EventMonitorComponent extends BaseResourceComp
476
480
  return String(args);
477
481
  }
478
482
  static ɵfac = function EventMonitorComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || EventMonitorComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
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) {
483
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EventMonitorComponent, selectors: [["mj-event-monitor"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 84, 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, "mj-action-label"], [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
484
  i0.ɵɵelementStart(0, "div", 0)(1, "mj-page-header-interior", 1)(2, "div", 2)(3, "button", 3);
481
485
  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);
486
+ i0.ɵɵconditionalCreate(4, EventMonitorComponent_Conditional_4_Template, 3, 0)(5, EventMonitorComponent_Conditional_5_Template, 3, 0);
483
487
  i0.ɵɵelementEnd();
484
488
  i0.ɵɵelementStart(6, "button", 4);
485
489
  i0.ɵɵlistener("click", function EventMonitorComponent_Template_button_click_6_listener() { return ctx.Clear(); });
486
490
  i0.ɵɵelement(7, "i", 5);
487
- i0.ɵɵtext(8, " Clear ");
488
- i0.ɵɵelementEnd()()();
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);
491
+ i0.ɵɵelementStart(8, "span", 6);
492
+ i0.ɵɵtext(9, "Clear");
493
+ i0.ɵɵelementEnd()()()();
494
+ i0.ɵɵelementStart(10, "div", 7)(11, "div", 8);
495
+ i0.ɵɵelement(12, "i", 9);
496
+ i0.ɵɵelementStart(13, "div")(14, "div", 10);
497
+ i0.ɵɵtext(15);
493
498
  i0.ɵɵelementEnd();
494
- i0.ɵɵelementStart(15, "div", 10);
495
- i0.ɵɵtext(16);
499
+ i0.ɵɵelementStart(16, "div", 11);
500
+ i0.ɵɵtext(17);
496
501
  i0.ɵɵelementEnd()()();
497
- i0.ɵɵelementStart(17, "div", 7)(18, "div")(19, "div", 9);
498
- i0.ɵɵtext(20);
502
+ i0.ɵɵelementStart(18, "div", 8)(19, "div")(20, "div", 10);
503
+ i0.ɵɵtext(21);
499
504
  i0.ɵɵelementEnd();
500
- i0.ɵɵelementStart(21, "div", 10);
501
- i0.ɵɵtext(22, "Total captured");
505
+ i0.ɵɵelementStart(22, "div", 11);
506
+ i0.ɵɵtext(23, "Total captured");
502
507
  i0.ɵɵelementEnd()()();
503
- i0.ɵɵelementStart(23, "div", 7)(24, "div")(25, "div", 9);
504
- i0.ɵɵtext(26);
508
+ i0.ɵɵelementStart(24, "div", 8)(25, "div")(26, "div", 10);
509
+ i0.ɵɵtext(27);
505
510
  i0.ɵɵelementEnd();
506
- i0.ɵɵelementStart(27, "div", 10);
507
- i0.ɵɵtext(28, "In buffer");
511
+ i0.ɵɵelementStart(28, "div", 11);
512
+ i0.ɵɵtext(29, "In buffer");
508
513
  i0.ɵɵelementEnd()()();
509
- i0.ɵɵelementStart(29, "div", 7)(30, "div")(31, "div", 9);
510
- i0.ɵɵtext(32);
514
+ i0.ɵɵelementStart(30, "div", 8)(31, "div")(32, "div", 10);
515
+ i0.ɵɵtext(33);
511
516
  i0.ɵɵelementEnd();
512
- i0.ɵɵelementStart(33, "div", 10);
513
- i0.ɵɵtext(34, "Last second");
517
+ i0.ɵɵelementStart(34, "div", 11);
518
+ i0.ɵɵtext(35, "Last second");
514
519
  i0.ɵɵelementEnd()()();
515
- i0.ɵɵelementStart(35, "div", 11)(36, "div")(37, "div", 12);
516
- i0.ɵɵtext(38);
520
+ i0.ɵɵelementStart(36, "div", 12)(37, "div")(38, "div", 13);
521
+ i0.ɵɵtext(39);
517
522
  i0.ɵɵelementEnd();
518
- i0.ɵɵelementStart(39, "div", 10);
519
- i0.ɵɵtext(40, "Watching for");
523
+ i0.ɵɵelementStart(40, "div", 11);
524
+ i0.ɵɵtext(41, "Watching for");
520
525
  i0.ɵɵelementEnd()()()();
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(); });
526
+ i0.ɵɵelementStart(42, "div", 14)(43, "div", 15);
527
+ i0.ɵɵelement(44, "i", 16);
528
+ i0.ɵɵelementStart(45, "input", 17);
529
+ i0.ɵɵtwoWayListener("ngModelChange", function EventMonitorComponent_Template_input_ngModelChange_45_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.Filter, $event) || (ctx.Filter = $event); return $event; });
530
+ i0.ɵɵlistener("ngModelChange", function EventMonitorComponent_Template_input_ngModelChange_45_listener() { return ctx.PersistPrefs(); });
526
531
  i0.ɵɵelementEnd();
527
- i0.ɵɵconditionalCreate(45, EventMonitorComponent_Conditional_45_Template, 2, 0, "button", 17);
532
+ i0.ɵɵconditionalCreate(46, EventMonitorComponent_Conditional_46_Template, 2, 0, "button", 18);
528
533
  i0.ɵɵelementEnd();
529
- i0.ɵɵelementStart(46, "div", 18)(47, "label", 19);
530
- i0.ɵɵtext(48, "Type");
534
+ i0.ɵɵelementStart(47, "div", 19)(48, "label", 20);
535
+ i0.ɵɵtext(49, "Type");
531
536
  i0.ɵɵelementEnd();
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);
537
+ i0.ɵɵelementStart(50, "select", 21);
538
+ i0.ɵɵtwoWayListener("ngModelChange", function EventMonitorComponent_Template_select_ngModelChange_50_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.TypeFilter, $event) || (ctx.TypeFilter = $event); return $event; });
539
+ i0.ɵɵlistener("ngModelChange", function EventMonitorComponent_Template_select_ngModelChange_50_listener() { return ctx.PersistPrefs(); });
540
+ i0.ɵɵelementStart(51, "option", 22);
541
+ i0.ɵɵtext(52);
537
542
  i0.ɵɵelementEnd();
538
- i0.ɵɵrepeaterCreate(52, EventMonitorComponent_For_53_Template, 2, 2, "option", 22, i0.ɵɵrepeaterTrackByIdentity);
543
+ i0.ɵɵrepeaterCreate(53, EventMonitorComponent_For_54_Template, 2, 2, "option", 23, i0.ɵɵrepeaterTrackByIdentity);
539
544
  i0.ɵɵelementEnd()();
540
- i0.ɵɵelementStart(54, "div", 18)(55, "label", 19);
541
- i0.ɵɵtext(56, "Component");
545
+ i0.ɵɵelementStart(55, "div", 19)(56, "label", 20);
546
+ i0.ɵɵtext(57, "Component");
542
547
  i0.ɵɵelementEnd();
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);
548
+ i0.ɵɵelementStart(58, "select", 21);
549
+ i0.ɵɵtwoWayListener("ngModelChange", function EventMonitorComponent_Template_select_ngModelChange_58_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.ComponentFilter, $event) || (ctx.ComponentFilter = $event); return $event; });
550
+ i0.ɵɵlistener("ngModelChange", function EventMonitorComponent_Template_select_ngModelChange_58_listener() { return ctx.PersistPrefs(); });
551
+ i0.ɵɵelementStart(59, "option", 22);
552
+ i0.ɵɵtext(60);
548
553
  i0.ɵɵelementEnd();
549
- i0.ɵɵrepeaterCreate(60, EventMonitorComponent_For_61_Template, 2, 2, "option", 22, i0.ɵɵrepeaterTrackByIdentity);
554
+ i0.ɵɵrepeaterCreate(61, EventMonitorComponent_For_62_Template, 2, 2, "option", 23, i0.ɵɵrepeaterTrackByIdentity);
550
555
  i0.ɵɵelementEnd()();
551
- i0.ɵɵconditionalCreate(62, EventMonitorComponent_Conditional_62_Template, 8, 2, "div", 18);
552
- i0.ɵɵconditionalCreate(63, EventMonitorComponent_Conditional_63_Template, 3, 0, "button", 23);
556
+ i0.ɵɵconditionalCreate(63, EventMonitorComponent_Conditional_63_Template, 8, 2, "div", 19);
557
+ i0.ɵɵconditionalCreate(64, EventMonitorComponent_Conditional_64_Template, 3, 0, "button", 24);
553
558
  i0.ɵɵelementEnd();
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);
559
+ i0.ɵɵelementStart(65, "div", 25)(66, "div", 26)(67, "button", 27);
560
+ i0.ɵɵlistener("click", function EventMonitorComponent_Template_button_click_67_listener() { return ctx.OnSortClick("time"); });
561
+ i0.ɵɵtext(68, " Time ");
562
+ i0.ɵɵconditionalCreate(69, EventMonitorComponent_Conditional_69_Template, 1, 4, "i", 28);
558
563
  i0.ɵɵelementEnd();
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);
564
+ i0.ɵɵelementStart(70, "button", 29);
565
+ i0.ɵɵlistener("click", function EventMonitorComponent_Template_button_click_70_listener() { return ctx.OnSortClick("type"); });
566
+ i0.ɵɵtext(71, " Type ");
567
+ i0.ɵɵconditionalCreate(72, EventMonitorComponent_Conditional_72_Template, 1, 4, "i", 28);
563
568
  i0.ɵɵelementEnd();
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);
569
+ i0.ɵɵelementStart(73, "button", 30);
570
+ i0.ɵɵlistener("click", function EventMonitorComponent_Template_button_click_73_listener() { return ctx.OnSortClick("eventCode"); });
571
+ i0.ɵɵtext(74, " Code ");
572
+ i0.ɵɵconditionalCreate(75, EventMonitorComponent_Conditional_75_Template, 1, 4, "i", 28);
568
573
  i0.ɵɵelementEnd();
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);
574
+ i0.ɵɵelementStart(76, "button", 31);
575
+ i0.ɵɵlistener("click", function EventMonitorComponent_Template_button_click_76_listener() { return ctx.OnSortClick("component"); });
576
+ i0.ɵɵtext(77, " Component ");
577
+ i0.ɵɵconditionalCreate(78, EventMonitorComponent_Conditional_78_Template, 1, 4, "i", 28);
573
578
  i0.ɵɵelementEnd();
574
- i0.ɵɵelementStart(78, "span", 31);
575
- i0.ɵɵtext(79, "Summary");
579
+ i0.ɵɵelementStart(79, "span", 32);
580
+ i0.ɵɵtext(80, "Summary");
576
581
  i0.ɵɵelementEnd();
577
- i0.ɵɵelement(80, "span", 32);
582
+ i0.ɵɵelement(81, "span", 33);
578
583
  i0.ɵɵelementEnd();
579
- i0.ɵɵconditionalCreate(81, EventMonitorComponent_Conditional_81_Template, 4, 1, "div", 33)(82, EventMonitorComponent_Conditional_82_Template, 2, 0);
584
+ i0.ɵɵconditionalCreate(82, EventMonitorComponent_Conditional_82_Template, 4, 1, "div", 34)(83, EventMonitorComponent_Conditional_83_Template, 2, 0);
580
585
  i0.ɵɵelementEnd()();
581
586
  } if (rf & 2) {
582
587
  i0.ɵɵadvance(3);
583
588
  i0.ɵɵproperty("title", ctx.Paused ? "Resume capture" : "Pause capture");
584
589
  i0.ɵɵadvance();
585
590
  i0.ɵɵconditional(ctx.Paused ? 4 : 5);
586
- i0.ɵɵadvance(7);
591
+ i0.ɵɵadvance(8);
587
592
  i0.ɵɵclassProp("em-pulse--paused", ctx.Paused);
588
593
  i0.ɵɵadvance(3);
589
594
  i0.ɵɵtextInterpolate(ctx.Paused ? "PAUSED" : "LIVE");
@@ -600,7 +605,7 @@ let EventMonitorComponent = class EventMonitorComponent extends BaseResourceComp
600
605
  i0.ɵɵadvance(6);
601
606
  i0.ɵɵtwoWayProperty("ngModel", ctx.Filter);
602
607
  i0.ɵɵadvance();
603
- i0.ɵɵconditional(ctx.Filter ? 45 : -1);
608
+ i0.ɵɵconditional(ctx.Filter ? 46 : -1);
604
609
  i0.ɵɵadvance(4);
605
610
  i0.ɵɵtwoWayProperty("ngModel", ctx.TypeFilter);
606
611
  i0.ɵɵadvance(2);
@@ -614,27 +619,27 @@ let EventMonitorComponent = class EventMonitorComponent extends BaseResourceComp
614
619
  i0.ɵɵadvance();
615
620
  i0.ɵɵrepeater(ctx.KnownComponents);
616
621
  i0.ɵɵadvance(2);
617
- i0.ɵɵconditional(ctx.KnownCodes.length > 0 ? 62 : -1);
622
+ i0.ɵɵconditional(ctx.KnownCodes.length > 0 ? 63 : -1);
618
623
  i0.ɵɵadvance();
619
- i0.ɵɵconditional(ctx.HasActiveFilters ? 63 : -1);
624
+ i0.ɵɵconditional(ctx.HasActiveFilters ? 64 : -1);
620
625
  i0.ɵɵadvance(3);
621
626
  i0.ɵɵclassProp("em-th--sorted", ctx.SortField === "time");
622
627
  i0.ɵɵadvance(2);
623
- i0.ɵɵconditional(ctx.SortField === "time" ? 68 : -1);
628
+ i0.ɵɵconditional(ctx.SortField === "time" ? 69 : -1);
624
629
  i0.ɵɵadvance();
625
630
  i0.ɵɵclassProp("em-th--sorted", ctx.SortField === "type");
626
631
  i0.ɵɵadvance(2);
627
- i0.ɵɵconditional(ctx.SortField === "type" ? 71 : -1);
632
+ i0.ɵɵconditional(ctx.SortField === "type" ? 72 : -1);
628
633
  i0.ɵɵadvance();
629
634
  i0.ɵɵclassProp("em-th--sorted", ctx.SortField === "eventCode");
630
635
  i0.ɵɵadvance(2);
631
- i0.ɵɵconditional(ctx.SortField === "eventCode" ? 74 : -1);
636
+ i0.ɵɵconditional(ctx.SortField === "eventCode" ? 75 : -1);
632
637
  i0.ɵɵadvance();
633
638
  i0.ɵɵclassProp("em-th--sorted", ctx.SortField === "component");
634
639
  i0.ɵɵadvance(2);
635
- i0.ɵɵconditional(ctx.SortField === "component" ? 77 : -1);
640
+ i0.ɵɵconditional(ctx.SortField === "component" ? 78 : -1);
636
641
  i0.ɵɵadvance(4);
637
- i0.ɵɵconditional(ctx.FilteredEvents.length === 0 ? 81 : 82);
642
+ i0.ɵɵconditional(ctx.FilteredEvents.length === 0 ? 82 : 83);
638
643
  } }, 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}"] });
639
644
  };
640
645
  EventMonitorComponent = __decorate([
@@ -643,7 +648,7 @@ EventMonitorComponent = __decorate([
643
648
  export { EventMonitorComponent };
644
649
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EventMonitorComponent, [{
645
650
  type: Component,
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"] }]
651
+ 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> <span class=\"mj-action-label\">Resume</span>\n } @else {\n <i class=\"fa-solid fa-pause\" aria-hidden=\"true\"></i> <span class=\"mj-action-label\">Pause</span>\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> <span class=\"mj-action-label\">Clear</span>\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"] }]
647
652
  }], () => [{ type: i0.ChangeDetectorRef }], null); })();
648
653
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EventMonitorComponent, { className: "EventMonitorComponent", filePath: "src/DevTools/event-monitor.component.ts", lineNumber: 44 }); })();
649
654
  //# sourceMappingURL=event-monitor.component.js.map