@memberjunction/ng-dashboards 5.34.1 → 5.35.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 (346) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts +51 -0
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +399 -292
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
  6. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
  7. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +87 -85
  8. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  9. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +75 -0
  10. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  11. package/dist/AI/components/analytics/ai-analytics-resource.component.js +400 -89
  12. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  13. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
  14. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
  15. package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
  16. package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
  17. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
  18. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  19. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +104 -103
  20. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  21. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +8 -2
  22. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
  23. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +76 -74
  24. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
  25. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  26. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
  27. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  28. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +12 -19
  29. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  30. package/dist/AI/components/analytics/model-performance/model-performance.component.js +96 -203
  31. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  32. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  33. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
  34. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  35. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  36. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
  37. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  38. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +990 -992
  39. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  40. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
  41. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  42. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
  43. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  44. package/dist/AI/components/models/model-management.component.d.ts +17 -0
  45. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  46. package/dist/AI/components/models/model-management.component.js +370 -425
  47. package/dist/AI/components/models/model-management.component.js.map +1 -1
  48. package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
  49. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  50. package/dist/AI/components/prompts/prompt-management.component.js +317 -357
  51. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  52. package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
  53. package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
  54. package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
  55. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  56. package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
  57. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  58. package/dist/AI/components/system/system-configuration.component.js +403 -362
  59. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  60. package/dist/AI/components/tags/tags-resource.component.js +781 -783
  61. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  62. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
  63. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  64. package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
  65. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  66. package/dist/Actions/components/actions-overview.component.d.ts +6 -0
  67. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  68. package/dist/Actions/components/actions-overview.component.js +79 -30
  69. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  70. package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
  71. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  72. package/dist/Actions/components/execution-monitoring.component.js +196 -142
  73. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  74. package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
  75. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  76. package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
  77. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  78. package/dist/Actions/components/explorer/index.d.ts +0 -1
  79. package/dist/Actions/components/explorer/index.d.ts.map +1 -1
  80. package/dist/Actions/components/explorer/index.js +0 -1
  81. package/dist/Actions/components/explorer/index.js.map +1 -1
  82. package/dist/Admin/admin-data-schema.component.js +32 -40
  83. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  84. package/dist/Admin/admin-dev-tools-resource.component.js +32 -40
  85. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  86. package/dist/Admin/admin-identity-access.component.js +32 -40
  87. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  88. package/dist/Admin/admin-monitoring.component.js +32 -40
  89. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  90. package/dist/ApplicationRoles/application-roles-resource.component.js +76 -82
  91. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  92. package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
  93. package/dist/Archiving/components/archive-config-resource.component.js +24 -5
  94. package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
  95. package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
  96. package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
  97. package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
  98. package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
  99. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  100. package/dist/Communication/communication-logs-resource.component.js +80 -99
  101. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  102. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  103. package/dist/Communication/communication-monitor-resource.component.js +127 -106
  104. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  105. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  106. package/dist/Communication/communication-providers-resource.component.js +44 -45
  107. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  108. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  109. package/dist/Communication/communication-runs-resource.component.js +60 -58
  110. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  111. package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
  112. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  113. package/dist/Communication/communication-templates-resource.component.js +139 -162
  114. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  115. package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
  116. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  117. package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
  118. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  119. package/dist/Credentials/components/credentials-categories-resource.component.js +245 -266
  120. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  121. package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
  122. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  123. package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
  124. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  125. package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
  126. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  127. package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
  128. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  129. package/dist/Credentials/components/credentials-types-resource.component.js +294 -305
  130. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  131. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
  132. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
  133. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +21 -0
  134. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  135. package/dist/DatabaseDesigner/components/entity-list.component.js +147 -160
  136. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  137. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  138. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  139. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +19 -1
  140. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  141. package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -16
  142. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  143. package/dist/Home/home-dashboard.component.d.ts +6 -0
  144. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  145. package/dist/Home/home-dashboard.component.js +521 -485
  146. package/dist/Home/home-dashboard.component.js.map +1 -1
  147. package/dist/Integration/components/activity/activity.component.d.ts +8 -0
  148. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  149. package/dist/Integration/components/activity/activity.component.js +309 -318
  150. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  151. package/dist/Integration/components/connections/connections.component.js +866 -847
  152. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  153. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
  154. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  155. package/dist/Integration/components/overview/overview.component.js +182 -163
  156. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  157. package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
  158. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  159. package/dist/Integration/components/pipelines/pipelines.component.js +610 -606
  160. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  161. package/dist/Integration/components/schedules/schedules.component.js +241 -241
  162. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  163. package/dist/Integration/integration.module.d.ts +1 -1
  164. package/dist/Integration/integration.module.d.ts.map +1 -1
  165. package/dist/Integration/integration.module.js +28 -1
  166. package/dist/Integration/integration.module.js.map +1 -1
  167. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +673 -674
  168. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  169. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
  170. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  171. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +745 -703
  172. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  173. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
  174. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
  175. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
  176. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  177. package/dist/Lists/components/lists-browse-resource.component.d.ts +18 -1
  178. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  179. package/dist/Lists/components/lists-browse-resource.component.js +486 -532
  180. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  181. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  182. package/dist/Lists/components/lists-categories-resource.component.js +152 -160
  183. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  184. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  185. package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
  186. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  187. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  188. package/dist/Lists/components/lists-operations-resource.component.js +234 -246
  189. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  190. package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
  191. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  192. package/dist/MCP/mcp-dashboard.component.js +1248 -1338
  193. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  194. package/dist/MCP/mcp.module.d.ts +1 -1
  195. package/dist/MCP/mcp.module.d.ts.map +1 -1
  196. package/dist/MCP/mcp.module.js +34 -1
  197. package/dist/MCP/mcp.module.js.map +1 -1
  198. package/dist/Permissions/audit-log-resource.component.js +76 -85
  199. package/dist/Permissions/audit-log-resource.component.js.map +1 -1
  200. package/dist/Permissions/resource-access-resource.component.js +64 -69
  201. package/dist/Permissions/resource-access-resource.component.js.map +1 -1
  202. package/dist/Permissions/user-access-resource.component.js +63 -74
  203. package/dist/Permissions/user-access-resource.component.js.map +1 -1
  204. package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
  205. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  206. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
  207. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  208. package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
  209. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  210. package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
  211. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  212. package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
  213. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  214. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
  215. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  216. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
  217. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  218. package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
  219. package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
  220. package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
  221. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  222. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
  223. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  224. package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
  225. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  226. package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
  227. package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
  228. package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
  229. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  230. package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
  231. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  232. package/dist/Scheduling/scheduling-dashboard.component.js +262 -104
  233. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  234. package/dist/SystemDiagnostics/system-diagnostics.component.js +773 -783
  235. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  236. package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
  237. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  238. package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
  239. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  240. package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
  241. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  242. package/dist/Testing/components/testing-analytics.component.js +420 -393
  243. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  244. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
  245. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  246. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
  247. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  248. package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
  249. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  250. package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
  251. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  252. package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
  253. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  254. package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
  255. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  256. package/dist/Testing/components/testing-explorer.component.d.ts +8 -1
  257. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  258. package/dist/Testing/components/testing-explorer.component.js +587 -608
  259. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  260. package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
  261. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  262. package/dist/Testing/components/testing-review-resource.component.js +9 -12
  263. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  264. package/dist/Testing/components/testing-review.component.d.ts +3 -1
  265. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  266. package/dist/Testing/components/testing-review.component.js +310 -274
  267. package/dist/Testing/components/testing-review.component.js.map +1 -1
  268. package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
  269. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  270. package/dist/Testing/components/testing-runs-resource.component.js +16 -19
  271. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  272. package/dist/Testing/components/testing-runs.component.d.ts +3 -1
  273. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  274. package/dist/Testing/components/testing-runs.component.js +307 -273
  275. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  276. package/dist/Testing/testing-dashboard.component.d.ts +2 -0
  277. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  278. package/dist/Testing/testing-dashboard.component.js +107 -93
  279. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  280. package/dist/VersionHistory/components/diff-resource.component.js +185 -188
  281. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  282. package/dist/VersionHistory/components/graph-resource.component.js +154 -184
  283. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  284. package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
  285. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  286. package/dist/VersionHistory/components/labels-resource.component.js +350 -354
  287. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  288. package/dist/VersionHistory/components/restore-resource.component.js +163 -169
  289. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  290. package/dist/actions-dashboards.module.d.ts +15 -16
  291. package/dist/actions-dashboards.module.d.ts.map +1 -1
  292. package/dist/actions-dashboards.module.js +34 -11
  293. package/dist/actions-dashboards.module.js.map +1 -1
  294. package/dist/ai-dashboards.module.d.ts +45 -48
  295. package/dist/ai-dashboards.module.d.ts.map +1 -1
  296. package/dist/ai-dashboards.module.js +36 -10
  297. package/dist/ai-dashboards.module.js.map +1 -1
  298. package/dist/archiving-dashboards.module.d.ts +2 -1
  299. package/dist/archiving-dashboards.module.d.ts.map +1 -1
  300. package/dist/archiving-dashboards.module.js +12 -2
  301. package/dist/archiving-dashboards.module.js.map +1 -1
  302. package/dist/communication-dashboards.module.d.ts +2 -1
  303. package/dist/communication-dashboards.module.d.ts.map +1 -1
  304. package/dist/communication-dashboards.module.js +24 -3
  305. package/dist/communication-dashboards.module.js.map +1 -1
  306. package/dist/core-dashboards.module.d.ts +1 -1
  307. package/dist/core-dashboards.module.d.ts.map +1 -1
  308. package/dist/core-dashboards.module.js +31 -1
  309. package/dist/core-dashboards.module.js.map +1 -1
  310. package/dist/credentials-dashboards.module.d.ts +1 -1
  311. package/dist/credentials-dashboards.module.d.ts.map +1 -1
  312. package/dist/credentials-dashboards.module.js +28 -1
  313. package/dist/credentials-dashboards.module.js.map +1 -1
  314. package/dist/lists-dashboards.module.d.ts +1 -1
  315. package/dist/lists-dashboards.module.d.ts.map +1 -1
  316. package/dist/lists-dashboards.module.js +28 -1
  317. package/dist/lists-dashboards.module.js.map +1 -1
  318. package/dist/public-api.d.ts +2 -2
  319. package/dist/public-api.d.ts.map +1 -1
  320. package/dist/public-api.js +3 -3
  321. package/dist/public-api.js.map +1 -1
  322. package/dist/scheduling-dashboards.module.d.ts +1 -1
  323. package/dist/scheduling-dashboards.module.d.ts.map +1 -1
  324. package/dist/scheduling-dashboards.module.js +31 -1
  325. package/dist/scheduling-dashboards.module.js.map +1 -1
  326. package/dist/testing-dashboards.module.d.ts +8 -7
  327. package/dist/testing-dashboards.module.d.ts.map +1 -1
  328. package/dist/testing-dashboards.module.js +30 -0
  329. package/dist/testing-dashboards.module.js.map +1 -1
  330. package/package.json +52 -52
  331. package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
  332. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
  333. package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
  334. package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
  335. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
  336. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
  337. package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
  338. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
  339. package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
  340. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
  341. package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
  342. package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
  343. package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
  344. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
  345. package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
  346. package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
@@ -14,12 +14,13 @@ import { UserInfoEngine } from '@memberjunction/core-entities';
14
14
  import * as i0 from "@angular/core";
15
15
  import * as i1 from "@angular/common";
16
16
  import * as i2 from "@angular/forms";
17
- import * as i3 from "@memberjunction/ng-shared-generic";
18
- function VersionHistoryDiffResourceComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
17
+ import * as i3 from "@memberjunction/ng-ui-components";
18
+ import * as i4 from "@memberjunction/ng-shared-generic";
19
+ function VersionHistoryDiffResourceComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
19
20
  i0.ɵɵelement(0, "mj-loading", 1);
20
21
  } }
21
- function VersionHistoryDiffResourceComponent_Conditional_2_For_22_Template(rf, ctx) { if (rf & 1) {
22
- i0.ɵɵelementStart(0, "option", 16);
22
+ function VersionHistoryDiffResourceComponent_Conditional_4_For_16_Template(rf, ctx) { if (rf & 1) {
23
+ i0.ɵɵelementStart(0, "option", 12);
23
24
  i0.ɵɵtext(1);
24
25
  i0.ɵɵelementEnd();
25
26
  } if (rf & 2) {
@@ -29,22 +30,22 @@ function VersionHistoryDiffResourceComponent_Conditional_2_For_22_Template(rf, c
29
30
  i0.ɵɵadvance();
30
31
  i0.ɵɵtextInterpolate1(" ", ctx_r1.FormatLabelOption(label_r3), " ");
31
32
  } }
32
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_23_Template(rf, ctx) { if (rf & 1) {
33
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_17_Template(rf, ctx) { if (rf & 1) {
33
34
  const _r4 = i0.ɵɵgetCurrentView();
34
- i0.ɵɵelementStart(0, "div", 17)(1, "button", 22);
35
- i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_23_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SwapLabels()); });
36
- i0.ɵɵelement(2, "i", 23);
35
+ i0.ɵɵelementStart(0, "div", 13)(1, "button", 18);
36
+ i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_17_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SwapLabels()); });
37
+ i0.ɵɵelement(2, "i", 19);
37
38
  i0.ɵɵelementEnd()();
38
39
  } }
39
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_24_Template(rf, ctx) { if (rf & 1) {
40
- i0.ɵɵelementStart(0, "div", 17);
41
- i0.ɵɵelement(1, "i", 24);
42
- i0.ɵɵelementStart(2, "span", 25);
40
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_18_Template(rf, ctx) { if (rf & 1) {
41
+ i0.ɵɵelementStart(0, "div", 13);
42
+ i0.ɵɵelement(1, "i", 20);
43
+ i0.ɵɵelementStart(2, "span", 21);
43
44
  i0.ɵɵtext(3, "Current State");
44
45
  i0.ɵɵelementEnd()();
45
46
  } }
46
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_25_For_7_Template(rf, ctx) { if (rf & 1) {
47
- i0.ɵɵelementStart(0, "option", 16);
47
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_19_For_7_Template(rf, ctx) { if (rf & 1) {
48
+ i0.ɵɵelementStart(0, "option", 12);
48
49
  i0.ɵɵtext(1);
49
50
  i0.ɵɵelementEnd();
50
51
  } if (rf & 2) {
@@ -54,17 +55,17 @@ function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_25_For_7_
54
55
  i0.ɵɵadvance();
55
56
  i0.ɵɵtextInterpolate1(" ", ctx_r1.FormatLabelOption(label_r6), " ");
56
57
  } }
57
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_25_Template(rf, ctx) { if (rf & 1) {
58
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_19_Template(rf, ctx) { if (rf & 1) {
58
59
  const _r5 = i0.ɵɵgetCurrentView();
59
- i0.ɵɵelementStart(0, "div", 12)(1, "label", 13);
60
+ i0.ɵɵelementStart(0, "div", 8)(1, "label", 9);
60
61
  i0.ɵɵtext(2, "To label");
61
62
  i0.ɵɵelementEnd();
62
- i0.ɵɵelementStart(3, "select", 14);
63
- i0.ɵɵtwoWayListener("ngModelChange", function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_25_Template_select_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.ToLabelId, $event) || (ctx_r1.ToLabelId = $event); return i0.ɵɵresetView($event); });
64
- i0.ɵɵelementStart(4, "option", 15);
63
+ i0.ɵɵelementStart(3, "select", 10);
64
+ i0.ɵɵtwoWayListener("ngModelChange", function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_19_Template_select_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.ToLabelId, $event) || (ctx_r1.ToLabelId = $event); return i0.ɵɵresetView($event); });
65
+ i0.ɵɵelementStart(4, "option", 11);
65
66
  i0.ɵɵtext(5, "Select a label...");
66
67
  i0.ɵɵelementEnd();
67
- i0.ɵɵrepeaterCreate(6, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_25_For_7_Template, 2, 2, "option", 16, i0.ɵɵrepeaterTrackByIdentity);
68
+ i0.ɵɵrepeaterCreate(6, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_19_For_7_Template, 2, 2, "option", 12, i0.ɵɵrepeaterTrackByIdentity);
68
69
  i0.ɵɵelementEnd()();
69
70
  } if (rf & 2) {
70
71
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -73,50 +74,50 @@ function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_25_Templa
73
74
  i0.ɵɵadvance(3);
74
75
  i0.ɵɵrepeater(ctx_r1.FilteredToLabels);
75
76
  } }
76
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_27_Template(rf, ctx) { if (rf & 1) {
77
- i0.ɵɵelement(0, "i", 19);
77
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_21_Template(rf, ctx) { if (rf & 1) {
78
+ i0.ɵɵelement(0, "i", 15);
78
79
  } }
79
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_28_Template(rf, ctx) { if (rf & 1) {
80
- i0.ɵɵelement(0, "i", 20);
80
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_22_Template(rf, ctx) { if (rf & 1) {
81
+ i0.ɵɵelement(0, "i", 16);
81
82
  } }
82
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_25_Template(rf, ctx) { if (rf & 1) {
83
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_25_Template(rf, ctx) { if (rf & 1) {
83
84
  const _r7 = i0.ɵɵgetCurrentView();
84
- i0.ɵɵelementStart(0, "div", 37)(1, "div", 39);
85
- i0.ɵɵelement(2, "i", 40);
86
- i0.ɵɵelementStart(3, "input", 41);
87
- i0.ɵɵlistener("ngModelChange", function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_25_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnDiffSearchChange($event)); });
85
+ i0.ɵɵelementStart(0, "div", 33)(1, "div", 35);
86
+ i0.ɵɵelement(2, "i", 36);
87
+ i0.ɵɵelementStart(3, "input", 37);
88
+ i0.ɵɵlistener("ngModelChange", function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_25_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnDiffSearchChange($event)); });
88
89
  i0.ɵɵelementEnd()();
89
- i0.ɵɵelementStart(4, "div", 42)(5, "button", 43);
90
- i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_25_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnDiffFilterChange("all")); });
90
+ i0.ɵɵelementStart(4, "div", 38)(5, "button", 39);
91
+ i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_25_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnDiffFilterChange("all")); });
91
92
  i0.ɵɵtext(6, "All");
92
93
  i0.ɵɵelementEnd();
93
- i0.ɵɵelementStart(7, "button", 44);
94
- i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_25_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnDiffFilterChange("added")); });
94
+ i0.ɵɵelementStart(7, "button", 40);
95
+ i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_25_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnDiffFilterChange("added")); });
95
96
  i0.ɵɵtext(8, "Added");
96
97
  i0.ɵɵelementEnd();
97
- i0.ɵɵelementStart(9, "button", 45);
98
- i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_25_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnDiffFilterChange("removed")); });
98
+ i0.ɵɵelementStart(9, "button", 41);
99
+ i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_25_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnDiffFilterChange("removed")); });
99
100
  i0.ɵɵtext(10, "Removed");
100
101
  i0.ɵɵelementEnd();
101
- i0.ɵɵelementStart(11, "button", 46);
102
- i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_25_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnDiffFilterChange("modified")); });
102
+ i0.ɵɵelementStart(11, "button", 42);
103
+ i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_25_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnDiffFilterChange("modified")); });
103
104
  i0.ɵɵtext(12, "Modified");
104
105
  i0.ɵɵelementEnd()();
105
- i0.ɵɵelementStart(13, "div", 47)(14, "button", 48);
106
- i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_25_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ExpandAllGroups()); });
107
- i0.ɵɵelement(15, "i", 49);
106
+ i0.ɵɵelementStart(13, "div", 43)(14, "button", 44);
107
+ i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_25_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ExpandAllGroups()); });
108
+ i0.ɵɵelement(15, "i", 45);
108
109
  i0.ɵɵelementEnd();
109
- i0.ɵɵelementStart(16, "button", 50);
110
- i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_25_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CollapseAllGroups()); });
111
- i0.ɵɵelement(17, "i", 51);
110
+ i0.ɵɵelementStart(16, "button", 46);
111
+ i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_25_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CollapseAllGroups()); });
112
+ i0.ɵɵelement(17, "i", 47);
112
113
  i0.ɵɵelementEnd();
113
- i0.ɵɵelementStart(18, "div", 52)(19, "button", 53);
114
- i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_25_Template_button_click_19_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnDiffSortChange("name")); });
115
- i0.ɵɵelement(20, "i", 54);
114
+ i0.ɵɵelementStart(18, "div", 48)(19, "button", 49);
115
+ i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_25_Template_button_click_19_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnDiffSortChange("name")); });
116
+ i0.ɵɵelement(20, "i", 50);
116
117
  i0.ɵɵelementEnd();
117
- i0.ɵɵelementStart(21, "button", 55);
118
- i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_25_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnDiffSortChange("count")); });
119
- i0.ɵɵelement(22, "i", 54);
118
+ i0.ɵɵelementStart(21, "button", 51);
119
+ i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_25_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnDiffSortChange("count")); });
120
+ i0.ɵɵelement(22, "i", 50);
120
121
  i0.ɵɵelementEnd()()()();
121
122
  } if (rf & 2) {
122
123
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -139,8 +140,8 @@ function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Condit
139
140
  i0.ɵɵadvance();
140
141
  i0.ɵɵproperty("ngClass", ctx_r1.DiffSortBy === "count" && ctx_r1.DiffSortDir === "asc" ? "fa-arrow-up-1-9" : "fa-arrow-down-9-1");
141
142
  } }
142
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
143
- i0.ɵɵelementStart(0, "span", 63);
143
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
144
+ i0.ɵɵelementStart(0, "span", 59);
144
145
  i0.ɵɵtext(1);
145
146
  i0.ɵɵelementEnd();
146
147
  } if (rf & 2) {
@@ -148,8 +149,8 @@ function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Condit
148
149
  i0.ɵɵadvance();
149
150
  i0.ɵɵtextInterpolate1(" +", group_r9.AddedCount, " ");
150
151
  } }
151
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
152
- i0.ɵɵelementStart(0, "span", 64);
152
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
153
+ i0.ɵɵelementStart(0, "span", 60);
153
154
  i0.ɵɵtext(1);
154
155
  i0.ɵɵelementEnd();
155
156
  } if (rf & 2) {
@@ -157,8 +158,8 @@ function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Condit
157
158
  i0.ɵɵadvance();
158
159
  i0.ɵɵtextInterpolate1(" -", group_r9.RemovedCount, " ");
159
160
  } }
160
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
161
- i0.ɵɵelementStart(0, "span", 65);
161
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
162
+ i0.ɵɵelementStart(0, "span", 61);
162
163
  i0.ɵɵtext(1);
163
164
  i0.ɵɵelementEnd();
164
165
  } if (rf & 2) {
@@ -166,8 +167,8 @@ function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Condit
166
167
  i0.ɵɵadvance();
167
168
  i0.ɵɵtextInterpolate1(" ~", group_r9.ModifiedCount, " ");
168
169
  } }
169
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
170
- i0.ɵɵelementStart(0, "span", 71);
170
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
171
+ i0.ɵɵelementStart(0, "span", 67);
171
172
  i0.ɵɵtext(1);
172
173
  i0.ɵɵelementEnd();
173
174
  } if (rf & 2) {
@@ -175,17 +176,17 @@ function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Condit
175
176
  i0.ɵɵadvance();
176
177
  i0.ɵɵtextInterpolate1(" (", item_r11.DisplayName, ")");
177
178
  } }
178
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
179
- i0.ɵɵelement(0, "i", 77);
179
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
180
+ i0.ɵɵelement(0, "i", 73);
180
181
  } if (rf & 2) {
181
182
  const item_r11 = i0.ɵɵnextContext().$implicit;
182
183
  i0.ɵɵclassProp("expanded", item_r11.IsExpanded);
183
184
  } }
184
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_1_Template(rf, ctx) { if (rf & 1) {
185
- i0.ɵɵelement(0, "mj-loading", 78);
185
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_1_Template(rf, ctx) { if (rf & 1) {
186
+ i0.ɵɵelement(0, "mj-loading", 74);
186
187
  } }
187
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_2_For_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
188
- i0.ɵɵelementStart(0, "span", 83);
188
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_2_For_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
189
+ i0.ɵɵelementStart(0, "span", 79);
189
190
  i0.ɵɵtext(1);
190
191
  i0.ɵɵpipe(2, "slice");
191
192
  i0.ɵɵelementEnd();
@@ -194,11 +195,11 @@ function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Condit
194
195
  i0.ɵɵadvance();
195
196
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, field_r12.OldValue, 0, 60));
196
197
  } }
197
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_2_For_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
198
- i0.ɵɵelement(0, "i", 84);
198
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_2_For_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
199
+ i0.ɵɵelement(0, "i", 80);
199
200
  } }
200
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_2_For_1_Conditional_6_Template(rf, ctx) { if (rf & 1) {
201
- i0.ɵɵelementStart(0, "span", 85);
201
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_2_For_1_Conditional_6_Template(rf, ctx) { if (rf & 1) {
202
+ i0.ɵɵelementStart(0, "span", 81);
202
203
  i0.ɵɵtext(1);
203
204
  i0.ɵɵpipe(2, "slice");
204
205
  i0.ɵɵelementEnd();
@@ -207,14 +208,14 @@ function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Condit
207
208
  i0.ɵɵadvance();
208
209
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, field_r12.NewValue, 0, 60));
209
210
  } }
210
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_2_For_1_Template(rf, ctx) { if (rf & 1) {
211
- i0.ɵɵelementStart(0, "div", 80)(1, "span", 81);
211
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_2_For_1_Template(rf, ctx) { if (rf & 1) {
212
+ i0.ɵɵelementStart(0, "div", 76)(1, "span", 77);
212
213
  i0.ɵɵtext(2);
213
214
  i0.ɵɵelementEnd();
214
- i0.ɵɵelementStart(3, "span", 82);
215
- i0.ɵɵconditionalCreate(4, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_2_For_1_Conditional_4_Template, 3, 5, "span", 83);
216
- i0.ɵɵconditionalCreate(5, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_2_For_1_Conditional_5_Template, 1, 0, "i", 84);
217
- i0.ɵɵconditionalCreate(6, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_2_For_1_Conditional_6_Template, 3, 5, "span", 85);
215
+ i0.ɵɵelementStart(3, "span", 78);
216
+ i0.ɵɵconditionalCreate(4, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_2_For_1_Conditional_4_Template, 3, 5, "span", 79);
217
+ i0.ɵɵconditionalCreate(5, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_2_For_1_Conditional_5_Template, 1, 0, "i", 80);
218
+ i0.ɵɵconditionalCreate(6, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_2_For_1_Conditional_6_Template, 3, 5, "span", 81);
218
219
  i0.ɵɵelementEnd()();
219
220
  } if (rf & 2) {
220
221
  const field_r12 = ctx.$implicit;
@@ -229,22 +230,22 @@ function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Condit
229
230
  i0.ɵɵadvance();
230
231
  i0.ɵɵconditional(field_r12.NewValue ? 6 : -1);
231
232
  } }
232
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_2_Template(rf, ctx) { if (rf & 1) {
233
- i0.ɵɵrepeaterCreate(0, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_2_For_1_Template, 7, 5, "div", 80, i0.ɵɵrepeaterTrackByIdentity);
233
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_2_Template(rf, ctx) { if (rf & 1) {
234
+ i0.ɵɵrepeaterCreate(0, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_2_For_1_Template, 7, 5, "div", 76, i0.ɵɵrepeaterTrackByIdentity);
234
235
  } if (rf & 2) {
235
236
  const item_r11 = i0.ɵɵnextContext(2).$implicit;
236
237
  i0.ɵɵrepeater(item_r11.FieldChanges);
237
238
  } }
238
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_3_Template(rf, ctx) { if (rf & 1) {
239
- i0.ɵɵelementStart(0, "div", 79)(1, "span");
239
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_3_Template(rf, ctx) { if (rf & 1) {
240
+ i0.ɵɵelementStart(0, "div", 75)(1, "span");
240
241
  i0.ɵɵtext(2, "No field-level changes available");
241
242
  i0.ɵɵelementEnd()();
242
243
  } }
243
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
244
- i0.ɵɵelementStart(0, "div", 76);
245
- i0.ɵɵconditionalCreate(1, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_1_Template, 1, 0, "mj-loading", 78);
246
- i0.ɵɵconditionalCreate(2, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_2_Template, 2, 0);
247
- i0.ɵɵconditionalCreate(3, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_3_Template, 3, 0, "div", 79);
244
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
245
+ i0.ɵɵelementStart(0, "div", 72);
246
+ i0.ɵɵconditionalCreate(1, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_1_Template, 1, 0, "mj-loading", 74);
247
+ i0.ɵɵconditionalCreate(2, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_2_Template, 2, 0);
248
+ i0.ɵɵconditionalCreate(3, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Conditional_3_Template, 3, 0, "div", 75);
248
249
  i0.ɵɵelementEnd();
249
250
  } if (rf & 2) {
250
251
  const item_r11 = i0.ɵɵnextContext().$implicit;
@@ -255,25 +256,25 @@ function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Condit
255
256
  i0.ɵɵadvance();
256
257
  i0.ɵɵconditional(!item_r11.IsLoadingFields && item_r11.FieldsLoaded && item_r11.FieldChanges.length === 0 ? 3 : -1);
257
258
  } }
258
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Template(rf, ctx) { if (rf & 1) {
259
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Template(rf, ctx) { if (rf & 1) {
259
260
  const _r10 = i0.ɵɵgetCurrentView();
260
- i0.ɵɵelementStart(0, "div", 67)(1, "div", 68);
261
- i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Template_div_click_1_listener() { const item_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.ToggleItem(item_r11)); });
262
- i0.ɵɵelement(2, "i", 69);
263
- i0.ɵɵelementStart(3, "span", 70);
261
+ i0.ɵɵelementStart(0, "div", 63)(1, "div", 64);
262
+ i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Template_div_click_1_listener() { const item_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.ToggleItem(item_r11)); });
263
+ i0.ɵɵelement(2, "i", 65);
264
+ i0.ɵɵelementStart(3, "span", 66);
264
265
  i0.ɵɵtext(4);
265
- i0.ɵɵconditionalCreate(5, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Conditional_5_Template, 2, 1, "span", 71);
266
+ i0.ɵɵconditionalCreate(5, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Conditional_5_Template, 2, 1, "span", 67);
266
267
  i0.ɵɵelementEnd();
267
- i0.ɵɵelementStart(6, "span", 72);
268
+ i0.ɵɵelementStart(6, "span", 68);
268
269
  i0.ɵɵtext(7);
269
270
  i0.ɵɵelementEnd();
270
- i0.ɵɵelementStart(8, "button", 73);
271
- i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Template_button_click_8_listener($event) { const item_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r1 = i0.ɵɵnextContext(6); ctx_r1.OnOpenRecord(item_r11); return i0.ɵɵresetView($event.stopPropagation()); });
272
- i0.ɵɵelement(9, "i", 74);
271
+ i0.ɵɵelementStart(8, "button", 69);
272
+ i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Template_button_click_8_listener($event) { const item_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r1 = i0.ɵɵnextContext(6); ctx_r1.OnOpenRecord(item_r11); return i0.ɵɵresetView($event.stopPropagation()); });
273
+ i0.ɵɵelement(9, "i", 70);
273
274
  i0.ɵɵelementEnd();
274
- i0.ɵɵconditionalCreate(10, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Conditional_10_Template, 1, 2, "i", 75);
275
+ i0.ɵɵconditionalCreate(10, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Conditional_10_Template, 1, 2, "i", 71);
275
276
  i0.ɵɵelementEnd();
276
- i0.ɵɵconditionalCreate(11, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Template, 4, 3, "div", 76);
277
+ i0.ɵɵconditionalCreate(11, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Conditional_11_Template, 4, 3, "div", 72);
277
278
  i0.ɵɵelementEnd();
278
279
  } if (rf & 2) {
279
280
  const item_r11 = ctx.$implicit;
@@ -294,30 +295,30 @@ function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Condit
294
295
  i0.ɵɵadvance();
295
296
  i0.ɵɵconditional(item_r11.IsExpanded && item_r11.ChangeType === "Modified" ? 11 : -1);
296
297
  } }
297
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
298
- i0.ɵɵelementStart(0, "div", 66);
299
- i0.ɵɵrepeaterCreate(1, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_For_2_Template, 12, 10, "div", 67, i0.ɵɵrepeaterTrackByIdentity);
298
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
299
+ i0.ɵɵelementStart(0, "div", 62);
300
+ i0.ɵɵrepeaterCreate(1, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_For_2_Template, 12, 10, "div", 63, i0.ɵɵrepeaterTrackByIdentity);
300
301
  i0.ɵɵelementEnd();
301
302
  } if (rf & 2) {
302
303
  const group_r9 = i0.ɵɵnextContext().$implicit;
303
304
  i0.ɵɵadvance();
304
305
  i0.ɵɵrepeater(group_r9.Items);
305
306
  } }
306
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Template(rf, ctx) { if (rf & 1) {
307
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Template(rf, ctx) { if (rf & 1) {
307
308
  const _r8 = i0.ɵɵgetCurrentView();
308
- i0.ɵɵelementStart(0, "div", 56)(1, "div", 57);
309
- i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Template_div_click_1_listener() { const group_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.ToggleEntityGroup(group_r9)); });
310
- i0.ɵɵelementStart(2, "div", 58);
311
- i0.ɵɵelement(3, "i", 59)(4, "i", 60);
312
- i0.ɵɵelementStart(5, "span", 61);
309
+ i0.ɵɵelementStart(0, "div", 52)(1, "div", 53);
310
+ i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Template_div_click_1_listener() { const group_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.ToggleEntityGroup(group_r9)); });
311
+ i0.ɵɵelementStart(2, "div", 54);
312
+ i0.ɵɵelement(3, "i", 55)(4, "i", 56);
313
+ i0.ɵɵelementStart(5, "span", 57);
313
314
  i0.ɵɵtext(6);
314
315
  i0.ɵɵelementEnd()();
315
- i0.ɵɵelementStart(7, "div", 62);
316
- i0.ɵɵconditionalCreate(8, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_8_Template, 2, 1, "span", 63);
317
- i0.ɵɵconditionalCreate(9, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_9_Template, 2, 1, "span", 64);
318
- i0.ɵɵconditionalCreate(10, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_10_Template, 2, 1, "span", 65);
316
+ i0.ɵɵelementStart(7, "div", 58);
317
+ i0.ɵɵconditionalCreate(8, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_8_Template, 2, 1, "span", 59);
318
+ i0.ɵɵconditionalCreate(9, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_9_Template, 2, 1, "span", 60);
319
+ i0.ɵɵconditionalCreate(10, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_10_Template, 2, 1, "span", 61);
319
320
  i0.ɵɵelementEnd()();
320
- i0.ɵɵconditionalCreate(11, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Conditional_11_Template, 3, 0, "div", 66);
321
+ i0.ɵɵconditionalCreate(11, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Conditional_11_Template, 3, 0, "div", 62);
321
322
  i0.ɵɵelementEnd();
322
323
  } if (rf & 2) {
323
324
  const group_r9 = ctx.$implicit;
@@ -336,18 +337,18 @@ function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Condit
336
337
  i0.ɵɵadvance();
337
338
  i0.ɵɵconditional(group_r9.IsExpanded ? 11 : -1);
338
339
  } }
339
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_Template(rf, ctx) { if (rf & 1) {
340
- i0.ɵɵelementStart(0, "div", 38);
341
- i0.ɵɵrepeaterCreate(1, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_For_2_Template, 12, 9, "div", 56, i0.ɵɵrepeaterTrackByIdentity);
340
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_Template(rf, ctx) { if (rf & 1) {
341
+ i0.ɵɵelementStart(0, "div", 34);
342
+ i0.ɵɵrepeaterCreate(1, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_For_2_Template, 12, 9, "div", 52, i0.ɵɵrepeaterTrackByIdentity);
342
343
  i0.ɵɵelementEnd();
343
344
  } if (rf & 2) {
344
345
  const ctx_r1 = i0.ɵɵnextContext(3);
345
346
  i0.ɵɵadvance();
346
347
  i0.ɵɵrepeater(ctx_r1.FilteredEntityGroups);
347
348
  } }
348
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_27_Template(rf, ctx) { if (rf & 1) {
349
- i0.ɵɵelementStart(0, "div", 21);
350
- i0.ɵɵelement(1, "i", 86);
349
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_27_Template(rf, ctx) { if (rf & 1) {
350
+ i0.ɵɵelementStart(0, "div", 17);
351
+ i0.ɵɵelement(1, "i", 82);
351
352
  i0.ɵɵelementStart(2, "h3");
352
353
  i0.ɵɵtext(3, "No differences found");
353
354
  i0.ɵɵelementEnd();
@@ -355,42 +356,42 @@ function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Condit
355
356
  i0.ɵɵtext(5, "The compared states are identical.");
356
357
  i0.ɵɵelementEnd()();
357
358
  } }
358
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Template(rf, ctx) { if (rf & 1) {
359
- i0.ɵɵelementStart(0, "div", 26)(1, "div", 27);
360
- i0.ɵɵelement(2, "i", 28);
361
- i0.ɵɵelementStart(3, "span", 29);
359
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Template(rf, ctx) { if (rf & 1) {
360
+ i0.ɵɵelementStart(0, "div", 22)(1, "div", 23);
361
+ i0.ɵɵelement(2, "i", 24);
362
+ i0.ɵɵelementStart(3, "span", 25);
362
363
  i0.ɵɵtext(4);
363
364
  i0.ɵɵelementEnd();
364
- i0.ɵɵelementStart(5, "span", 30);
365
+ i0.ɵɵelementStart(5, "span", 26);
365
366
  i0.ɵɵtext(6, "Added");
366
367
  i0.ɵɵelementEnd()();
367
- i0.ɵɵelementStart(7, "div", 31);
368
- i0.ɵɵelement(8, "i", 32);
369
- i0.ɵɵelementStart(9, "span", 29);
368
+ i0.ɵɵelementStart(7, "div", 27);
369
+ i0.ɵɵelement(8, "i", 28);
370
+ i0.ɵɵelementStart(9, "span", 25);
370
371
  i0.ɵɵtext(10);
371
372
  i0.ɵɵelementEnd();
372
- i0.ɵɵelementStart(11, "span", 30);
373
+ i0.ɵɵelementStart(11, "span", 26);
373
374
  i0.ɵɵtext(12, "Removed");
374
375
  i0.ɵɵelementEnd()();
375
- i0.ɵɵelementStart(13, "div", 33);
376
- i0.ɵɵelement(14, "i", 34);
377
- i0.ɵɵelementStart(15, "span", 29);
376
+ i0.ɵɵelementStart(13, "div", 29);
377
+ i0.ɵɵelement(14, "i", 30);
378
+ i0.ɵɵelementStart(15, "span", 25);
378
379
  i0.ɵɵtext(16);
379
380
  i0.ɵɵelementEnd();
380
- i0.ɵɵelementStart(17, "span", 30);
381
+ i0.ɵɵelementStart(17, "span", 26);
381
382
  i0.ɵɵtext(18, "Modified");
382
383
  i0.ɵɵelementEnd()();
383
- i0.ɵɵelementStart(19, "div", 35);
384
- i0.ɵɵelement(20, "i", 36);
385
- i0.ɵɵelementStart(21, "span", 29);
384
+ i0.ɵɵelementStart(19, "div", 31);
385
+ i0.ɵɵelement(20, "i", 32);
386
+ i0.ɵɵelementStart(21, "span", 25);
386
387
  i0.ɵɵtext(22);
387
388
  i0.ɵɵelementEnd();
388
- i0.ɵɵelementStart(23, "span", 30);
389
+ i0.ɵɵelementStart(23, "span", 26);
389
390
  i0.ɵɵtext(24, "Unchanged");
390
391
  i0.ɵɵelementEnd()()();
391
- i0.ɵɵconditionalCreate(25, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_25_Template, 23, 15, "div", 37);
392
- i0.ɵɵconditionalCreate(26, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_26_Template, 3, 0, "div", 38);
393
- i0.ɵɵconditionalCreate(27, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Conditional_27_Template, 6, 0, "div", 21);
392
+ i0.ɵɵconditionalCreate(25, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_25_Template, 23, 15, "div", 33);
393
+ i0.ɵɵconditionalCreate(26, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_26_Template, 3, 0, "div", 34);
394
+ i0.ɵɵconditionalCreate(27, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Conditional_27_Template, 6, 0, "div", 17);
394
395
  } if (rf & 2) {
395
396
  const ctx_r1 = i0.ɵɵnextContext(2);
396
397
  i0.ɵɵadvance(4);
@@ -408,9 +409,9 @@ function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Templa
408
409
  i0.ɵɵadvance();
409
410
  i0.ɵɵconditional(ctx_r1.FilteredEntityGroups.length === 0 && ctx_r1.TotalChanges === 0 ? 27 : -1);
410
411
  } }
411
- function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_32_Template(rf, ctx) { if (rf & 1) {
412
- i0.ɵɵelementStart(0, "div", 21);
413
- i0.ɵɵelement(1, "i", 87);
412
+ function VersionHistoryDiffResourceComponent_Conditional_4_Conditional_26_Template(rf, ctx) { if (rf & 1) {
413
+ i0.ɵɵelementStart(0, "div", 17);
414
+ i0.ɵɵelement(1, "i", 83);
414
415
  i0.ɵɵelementStart(2, "h3");
415
416
  i0.ɵɵtext(3, "Select labels to compare");
416
417
  i0.ɵɵelementEnd();
@@ -418,50 +419,44 @@ function VersionHistoryDiffResourceComponent_Conditional_2_Conditional_32_Templa
418
419
  i0.ɵɵtext(5, "Choose a diff mode and select labels above, then click Compare.");
419
420
  i0.ɵɵelementEnd()();
420
421
  } }
421
- function VersionHistoryDiffResourceComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
422
+ function VersionHistoryDiffResourceComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
422
423
  const _r1 = i0.ɵɵgetCurrentView();
423
- i0.ɵɵelementStart(0, "div", 2)(1, "div", 3)(2, "h2", 4);
424
- i0.ɵɵtext(3, "Diff Viewer");
425
- i0.ɵɵelementEnd();
426
- i0.ɵɵelementStart(4, "p", 5);
427
- i0.ɵɵtext(5, "Compare states between version labels or against current data");
428
- i0.ɵɵelementEnd()()();
429
- i0.ɵɵelementStart(6, "div", 6)(7, "div", 7)(8, "button", 8);
430
- i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_2_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnDiffModeChange("label-to-current")); });
431
- i0.ɵɵelement(9, "i", 9);
432
- i0.ɵɵtext(10, " Label vs Current ");
424
+ i0.ɵɵelementStart(0, "div", 2)(1, "div", 3)(2, "button", 4);
425
+ i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_4_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnDiffModeChange("label-to-current")); });
426
+ i0.ɵɵelement(3, "i", 5);
427
+ i0.ɵɵtext(4, " Label vs Current ");
433
428
  i0.ɵɵelementEnd();
434
- i0.ɵɵelementStart(11, "button", 8);
435
- i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_2_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnDiffModeChange("label-to-label")); });
436
- i0.ɵɵelement(12, "i", 10);
437
- i0.ɵɵtext(13, " Label vs Label ");
429
+ i0.ɵɵelementStart(5, "button", 4);
430
+ i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_4_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnDiffModeChange("label-to-label")); });
431
+ i0.ɵɵelement(6, "i", 6);
432
+ i0.ɵɵtext(7, " Label vs Label ");
438
433
  i0.ɵɵelementEnd()();
439
- i0.ɵɵelementStart(14, "div", 11)(15, "div", 12)(16, "label", 13);
440
- i0.ɵɵtext(17);
434
+ i0.ɵɵelementStart(8, "div", 7)(9, "div", 8)(10, "label", 9);
435
+ i0.ɵɵtext(11);
441
436
  i0.ɵɵelementEnd();
442
- i0.ɵɵelementStart(18, "select", 14);
443
- i0.ɵɵtwoWayListener("ngModelChange", function VersionHistoryDiffResourceComponent_Conditional_2_Template_select_ngModelChange_18_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.FromLabelId, $event) || (ctx_r1.FromLabelId = $event); return i0.ɵɵresetView($event); });
444
- i0.ɵɵelementStart(19, "option", 15);
445
- i0.ɵɵtext(20, "Select a label...");
437
+ i0.ɵɵelementStart(12, "select", 10);
438
+ i0.ɵɵtwoWayListener("ngModelChange", function VersionHistoryDiffResourceComponent_Conditional_4_Template_select_ngModelChange_12_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.FromLabelId, $event) || (ctx_r1.FromLabelId = $event); return i0.ɵɵresetView($event); });
439
+ i0.ɵɵelementStart(13, "option", 11);
440
+ i0.ɵɵtext(14, "Select a label...");
446
441
  i0.ɵɵelementEnd();
447
- i0.ɵɵrepeaterCreate(21, VersionHistoryDiffResourceComponent_Conditional_2_For_22_Template, 2, 2, "option", 16, i0.ɵɵrepeaterTrackByIdentity);
442
+ i0.ɵɵrepeaterCreate(15, VersionHistoryDiffResourceComponent_Conditional_4_For_16_Template, 2, 2, "option", 12, i0.ɵɵrepeaterTrackByIdentity);
448
443
  i0.ɵɵelementEnd()();
449
- i0.ɵɵconditionalCreate(23, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_23_Template, 3, 0, "div", 17);
450
- i0.ɵɵconditionalCreate(24, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_24_Template, 4, 0, "div", 17);
451
- i0.ɵɵconditionalCreate(25, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_25_Template, 8, 1, "div", 12);
444
+ i0.ɵɵconditionalCreate(17, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_17_Template, 3, 0, "div", 13);
445
+ i0.ɵɵconditionalCreate(18, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_18_Template, 4, 0, "div", 13);
446
+ i0.ɵɵconditionalCreate(19, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_19_Template, 8, 1, "div", 8);
452
447
  i0.ɵɵelementEnd();
453
- i0.ɵɵelementStart(26, "button", 18);
454
- i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_2_Template_button_click_26_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.RunDiff()); });
455
- i0.ɵɵconditionalCreate(27, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_27_Template, 1, 0, "i", 19);
456
- i0.ɵɵconditionalCreate(28, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_28_Template, 1, 0, "i", 20);
457
- i0.ɵɵelementStart(29, "span");
458
- i0.ɵɵtext(30);
448
+ i0.ɵɵelementStart(20, "button", 14);
449
+ i0.ɵɵlistener("click", function VersionHistoryDiffResourceComponent_Conditional_4_Template_button_click_20_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.RunDiff()); });
450
+ i0.ɵɵconditionalCreate(21, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_21_Template, 1, 0, "i", 15);
451
+ i0.ɵɵconditionalCreate(22, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_22_Template, 1, 0, "i", 16);
452
+ i0.ɵɵelementStart(23, "span");
453
+ i0.ɵɵtext(24);
459
454
  i0.ɵɵelementEnd()()();
460
- i0.ɵɵconditionalCreate(31, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_31_Template, 28, 7);
461
- i0.ɵɵconditionalCreate(32, VersionHistoryDiffResourceComponent_Conditional_2_Conditional_32_Template, 6, 0, "div", 21);
455
+ i0.ɵɵconditionalCreate(25, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_25_Template, 28, 7);
456
+ i0.ɵɵconditionalCreate(26, VersionHistoryDiffResourceComponent_Conditional_4_Conditional_26_Template, 6, 0, "div", 17);
462
457
  } if (rf & 2) {
463
458
  const ctx_r1 = i0.ɵɵnextContext();
464
- i0.ɵɵadvance(8);
459
+ i0.ɵɵadvance(2);
465
460
  i0.ɵɵclassProp("active", ctx_r1.DiffMode === "label-to-current");
466
461
  i0.ɵɵadvance(3);
467
462
  i0.ɵɵclassProp("active", ctx_r1.DiffMode === "label-to-label");
@@ -472,23 +467,23 @@ function VersionHistoryDiffResourceComponent_Conditional_2_Template(rf, ctx) { i
472
467
  i0.ɵɵadvance(3);
473
468
  i0.ɵɵrepeater(ctx_r1.FilteredFromLabels);
474
469
  i0.ɵɵadvance(2);
475
- i0.ɵɵconditional(ctx_r1.DiffMode === "label-to-label" ? 23 : -1);
470
+ i0.ɵɵconditional(ctx_r1.DiffMode === "label-to-label" ? 17 : -1);
476
471
  i0.ɵɵadvance();
477
- i0.ɵɵconditional(ctx_r1.DiffMode === "label-to-current" ? 24 : -1);
472
+ i0.ɵɵconditional(ctx_r1.DiffMode === "label-to-current" ? 18 : -1);
478
473
  i0.ɵɵadvance();
479
- i0.ɵɵconditional(ctx_r1.DiffMode === "label-to-label" ? 25 : -1);
474
+ i0.ɵɵconditional(ctx_r1.DiffMode === "label-to-label" ? 19 : -1);
480
475
  i0.ɵɵadvance();
481
476
  i0.ɵɵproperty("disabled", !ctx_r1.CanRunDiff || ctx_r1.IsDiffLoading);
482
477
  i0.ɵɵadvance();
483
- i0.ɵɵconditional(!ctx_r1.IsDiffLoading ? 27 : -1);
478
+ i0.ɵɵconditional(!ctx_r1.IsDiffLoading ? 21 : -1);
484
479
  i0.ɵɵadvance();
485
- i0.ɵɵconditional(ctx_r1.IsDiffLoading ? 28 : -1);
480
+ i0.ɵɵconditional(ctx_r1.IsDiffLoading ? 22 : -1);
486
481
  i0.ɵɵadvance(2);
487
482
  i0.ɵɵtextInterpolate(ctx_r1.IsDiffLoading ? "Comparing..." : "Compare");
488
483
  i0.ɵɵadvance();
489
- i0.ɵɵconditional(ctx_r1.HasDiffResult ? 31 : -1);
484
+ i0.ɵɵconditional(ctx_r1.HasDiffResult ? 25 : -1);
490
485
  i0.ɵɵadvance();
491
- i0.ɵɵconditional(!ctx_r1.HasDiffResult && !ctx_r1.IsDiffLoading ? 32 : -1);
486
+ i0.ɵɵconditional(!ctx_r1.HasDiffResult && !ctx_r1.IsDiffLoading ? 26 : -1);
492
487
  } }
493
488
  let VersionHistoryDiffResourceComponent = class VersionHistoryDiffResourceComponent extends BaseResourceComponent {
494
489
  static { VersionHistoryDiffResourceComponent_1 = this; }
@@ -1137,17 +1132,19 @@ let VersionHistoryDiffResourceComponent = class VersionHistoryDiffResourceCompon
1137
1132
  this.FilteredEntityGroups = groups;
1138
1133
  }
1139
1134
  static ɵfac = function VersionHistoryDiffResourceComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || VersionHistoryDiffResourceComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
1140
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: VersionHistoryDiffResourceComponent, selectors: [["mj-version-history-diff-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 2, consts: [[1, "diff-container"], ["text", "Loading diff viewer..."], [1, "page-header"], [1, "header-left"], [1, "page-title"], [1, "page-subtitle"], [1, "config-panel"], [1, "mode-selector"], [1, "mode-btn", 3, "click"], [1, "fa-solid", "fa-clock-rotate-left"], [1, "fa-solid", "fa-code-compare"], [1, "label-selectors"], [1, "selector-group"], [1, "selector-label"], [1, "selector-input", 3, "ngModelChange", "ngModel"], ["value", ""], [3, "value"], [1, "selector-arrow"], [1, "btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-play"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "empty-state"], ["title", "Swap direction", 1, "swap-btn", 3, "click"], [1, "fa-solid", "fa-arrows-rotate"], [1, "fa-solid", "fa-arrow-right"], [1, "current-state-badge"], [1, "diff-summary"], [1, "diff-stat", "change-added"], [1, "fa-solid", "fa-plus"], [1, "diff-stat-value"], [1, "diff-stat-label"], [1, "diff-stat", "change-removed"], [1, "fa-solid", "fa-minus"], [1, "diff-stat", "change-modified"], [1, "fa-solid", "fa-pen"], [1, "diff-stat", "change-unchanged"], [1, "fa-solid", "fa-equals"], [1, "diff-toolbar"], [1, "entity-groups"], [1, "diff-search"], [1, "fa-solid", "fa-search", "diff-search-icon"], ["type", "text", "placeholder", "Search by entity or record...", 1, "diff-search-input", 3, "ngModelChange", "ngModel"], [1, "diff-filter-pills"], [1, "filter-pill", 3, "click"], [1, "filter-pill", "change-added", 3, "click"], [1, "filter-pill", "change-removed", 3, "click"], [1, "filter-pill", "change-modified", 3, "click"], [1, "diff-toolbar-right"], ["title", "Expand all", 1, "toolbar-action-btn", 3, "click"], [1, "fa-solid", "fa-angles-down"], ["title", "Collapse all", 1, "toolbar-action-btn", 3, "click"], [1, "fa-solid", "fa-angles-up"], [1, "diff-sort-toggle"], ["title", "Sort by name", 1, "toggle-btn-sm", 3, "click"], [1, "fa-solid", 3, "ngClass"], ["title", "Sort by count", 1, "toggle-btn-sm", 3, "click"], [1, "entity-group"], [1, "entity-group-header", 3, "click"], [1, "entity-group-left"], [1, "fa-solid", "fa-chevron-right", "entity-chevron"], [1, "entity-icon"], [1, "entity-group-name"], [1, "entity-group-badges"], [1, "badge", "change-added"], [1, "badge", "change-removed"], [1, "badge", "change-modified"], [1, "entity-group-items"], [1, "diff-item-wrapper"], [1, "diff-item", 3, "click", "ngClass"], [1, "diff-item-icon"], [1, "diff-item-record"], [1, "diff-item-display-name"], [1, "diff-item-type"], ["title", "Open record", 1, "diff-item-open-btn", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square"], [1, "fa-solid", "fa-chevron-right", "diff-item-chevron", 3, "expanded"], [1, "diff-fields"], [1, "fa-solid", "fa-chevron-right", "diff-item-chevron"], ["text", "Loading changes...", "size", "small"], [1, "diff-fields-empty"], [1, "diff-field", 3, "ngClass"], [1, "diff-field-name"], [1, "diff-field-values"], [1, "diff-field-old"], [1, "fa-solid", "fa-arrow-right", "diff-field-arrow"], [1, "diff-field-new"], [1, "fa-solid", "fa-check-circle", "empty-icon", 2, "color", "#10b981"], [1, "fa-solid", "fa-code-compare", "empty-icon"]], template: function VersionHistoryDiffResourceComponent_Template(rf, ctx) { if (rf & 1) {
1141
- i0.ɵɵelementStart(0, "div", 0);
1142
- i0.ɵɵconditionalCreate(1, VersionHistoryDiffResourceComponent_Conditional_1_Template, 1, 0, "mj-loading", 1);
1143
- i0.ɵɵconditionalCreate(2, VersionHistoryDiffResourceComponent_Conditional_2_Template, 33, 15);
1144
- i0.ɵɵelementEnd();
1135
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: VersionHistoryDiffResourceComponent, selectors: [["mj-version-history-diff-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 2, consts: [["Title", "Diff Viewer", "Icon", "fa-solid fa-code-compare", "Subtitle", "Compare states between version labels or against current data"], ["text", "Loading diff viewer..."], [1, "config-panel"], [1, "mode-selector"], [1, "mode-btn", 3, "click"], [1, "fa-solid", "fa-clock-rotate-left"], [1, "fa-solid", "fa-code-compare"], [1, "label-selectors"], [1, "selector-group"], [1, "selector-label"], [1, "selector-input", 3, "ngModelChange", "ngModel"], ["value", ""], [3, "value"], [1, "selector-arrow"], [1, "btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-play"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "empty-state"], ["title", "Swap direction", 1, "swap-btn", 3, "click"], [1, "fa-solid", "fa-arrows-rotate"], [1, "fa-solid", "fa-arrow-right"], [1, "current-state-badge"], [1, "diff-summary"], [1, "diff-stat", "change-added"], [1, "fa-solid", "fa-plus"], [1, "diff-stat-value"], [1, "diff-stat-label"], [1, "diff-stat", "change-removed"], [1, "fa-solid", "fa-minus"], [1, "diff-stat", "change-modified"], [1, "fa-solid", "fa-pen"], [1, "diff-stat", "change-unchanged"], [1, "fa-solid", "fa-equals"], [1, "diff-toolbar"], [1, "entity-groups"], [1, "diff-search"], [1, "fa-solid", "fa-search", "diff-search-icon"], ["type", "text", "placeholder", "Search by entity or record...", 1, "diff-search-input", 3, "ngModelChange", "ngModel"], [1, "diff-filter-pills"], [1, "filter-pill", 3, "click"], [1, "filter-pill", "change-added", 3, "click"], [1, "filter-pill", "change-removed", 3, "click"], [1, "filter-pill", "change-modified", 3, "click"], [1, "diff-toolbar-right"], ["title", "Expand all", 1, "toolbar-action-btn", 3, "click"], [1, "fa-solid", "fa-angles-down"], ["title", "Collapse all", 1, "toolbar-action-btn", 3, "click"], [1, "fa-solid", "fa-angles-up"], [1, "diff-sort-toggle"], ["title", "Sort by name", 1, "toggle-btn-sm", 3, "click"], [1, "fa-solid", 3, "ngClass"], ["title", "Sort by count", 1, "toggle-btn-sm", 3, "click"], [1, "entity-group"], [1, "entity-group-header", 3, "click"], [1, "entity-group-left"], [1, "fa-solid", "fa-chevron-right", "entity-chevron"], [1, "entity-icon"], [1, "entity-group-name"], [1, "entity-group-badges"], [1, "badge", "change-added"], [1, "badge", "change-removed"], [1, "badge", "change-modified"], [1, "entity-group-items"], [1, "diff-item-wrapper"], [1, "diff-item", 3, "click", "ngClass"], [1, "diff-item-icon"], [1, "diff-item-record"], [1, "diff-item-display-name"], [1, "diff-item-type"], ["title", "Open record", 1, "diff-item-open-btn", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square"], [1, "fa-solid", "fa-chevron-right", "diff-item-chevron", 3, "expanded"], [1, "diff-fields"], [1, "fa-solid", "fa-chevron-right", "diff-item-chevron"], ["text", "Loading changes...", "size", "small"], [1, "diff-fields-empty"], [1, "diff-field", 3, "ngClass"], [1, "diff-field-name"], [1, "diff-field-values"], [1, "diff-field-old"], [1, "fa-solid", "fa-arrow-right", "diff-field-arrow"], [1, "diff-field-new"], [1, "fa-solid", "fa-check-circle", "empty-icon", 2, "color", "#10b981"], [1, "fa-solid", "fa-code-compare", "empty-icon"]], template: function VersionHistoryDiffResourceComponent_Template(rf, ctx) { if (rf & 1) {
1136
+ i0.ɵɵelementStart(0, "mj-page-layout");
1137
+ i0.ɵɵelement(1, "mj-page-header", 0);
1138
+ i0.ɵɵelementStart(2, "mj-page-body");
1139
+ i0.ɵɵconditionalCreate(3, VersionHistoryDiffResourceComponent_Conditional_3_Template, 1, 0, "mj-loading", 1);
1140
+ i0.ɵɵconditionalCreate(4, VersionHistoryDiffResourceComponent_Conditional_4_Template, 27, 15);
1141
+ i0.ɵɵelementEnd()();
1145
1142
  } if (rf & 2) {
1143
+ i0.ɵɵadvance(3);
1144
+ i0.ɵɵconditional(ctx.IsLoading ? 3 : -1);
1146
1145
  i0.ɵɵadvance();
1147
- i0.ɵɵconditional(ctx.IsLoading ? 1 : -1);
1148
- i0.ɵɵadvance();
1149
- i0.ɵɵconditional(!ctx.IsLoading ? 2 : -1);
1150
- } }, dependencies: [i1.NgClass, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.LoadingComponent, i1.SlicePipe], styles: [".diff-container[_ngcontent-%COMP%] {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n}\n\n\n\n.page-header[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.page-title[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 4px 0;\n}\n\n.page-subtitle[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n\n\n.config-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 24px;\n margin-bottom: 24px;\n}\n\n.mode-selector[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-bottom: 20px;\n}\n\n.mode-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 8px 18px;\n background: var(--mj-bg-surface-sunken);\n border: 2px solid transparent;\n border-radius: 8px;\n cursor: pointer;\n font-size: 14px;\n color: var(--mj-text-secondary);\n transition: all 0.2s ease;\n}\n\n.mode-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n}\n\n.mode-btn.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n\n\n.label-selectors[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.selector-group[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.selector-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 6px;\n}\n\n.selector-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 12px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n box-sizing: border-box;\n}\n\n.selector-input[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.selector-arrow[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding-bottom: 8px;\n color: var(--mj-text-secondary);\n font-size: 16px;\n}\n\n.current-state-badge[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n padding: 2px 8px;\n border-radius: 8px;\n white-space: nowrap;\n}\n\n\n\n.btn-primary[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 24px;\n background: var(--mj-brand-primary);\n border: none;\n border-radius: 8px;\n color: var(--mj-text-inverse);\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n}\n\n.btn-primary[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n\n\n.diff-summary[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 12px;\n margin-bottom: 24px;\n}\n\n.diff-stat[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 16px 20px;\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n}\n\n.diff-stat[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n.diff-stat-value[_ngcontent-%COMP%] {\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.diff-stat-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n\n\n.change-added[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 6%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-success) 20%, transparent);\n color: var(--mj-status-success);\n}\n\n.change-removed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n color: var(--mj-status-error);\n}\n\n.change-modified[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 6%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-warning) 20%, transparent);\n color: var(--mj-status-warning);\n}\n\n.change-unchanged[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-muted) 6%, transparent);\n border-color: color-mix(in srgb, var(--mj-text-muted) 20%, transparent);\n color: var(--mj-text-muted);\n}\n\n\n\n.entity-groups[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.entity-group[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n overflow: hidden;\n}\n\n.entity-group-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 20px;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.entity-group-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.entity-group-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.entity-group-left[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n font-size: 12px;\n color: var(--mj-text-muted);\n width: 16px;\n}\n\n.entity-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.entity-group-name[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.entity-group-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n}\n\n.badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n border: none;\n}\n\n\n\n.entity-chevron[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n width: 14px;\n text-align: center;\n transition: transform 0.2s ease;\n}\n\n.entity-chevron.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n\n\n.entity-group-items[_ngcontent-%COMP%] {\n border-top: 1px solid var(--mj-border-default);\n padding: 8px 16px;\n}\n\n.diff-item-wrapper[_ngcontent-%COMP%] {\n margin-bottom: 2px;\n}\n\n.diff-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 12px;\n border-radius: 6px;\n}\n\n.diff-item.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.diff-item.clickable[_ngcontent-%COMP%]:hover {\n filter: brightness(0.97);\n}\n\n.diff-item-icon[_ngcontent-%COMP%] {\n font-size: 12px;\n width: 20px;\n text-align: center;\n}\n\n.diff-item-record[_ngcontent-%COMP%] {\n font-size: 13px;\n font-family: 'SF Mono', 'Fira Code', monospace;\n color: var(--mj-text-primary);\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.diff-item-display-name[_ngcontent-%COMP%] {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n color: var(--mj-text-secondary);\n font-weight: 500;\n}\n\n.diff-item-open-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: 1px solid transparent;\n border-radius: 4px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 11px;\n cursor: pointer;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.diff-item-open-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, transparent);\n}\n\n.diff-item-type[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.diff-item-chevron[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n transition: transform 0.2s ease;\n}\n\n.diff-item-chevron.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n\n\n.diff-fields[_ngcontent-%COMP%] {\n margin-left: 42px;\n margin-bottom: 8px;\n padding: 8px 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.diff-field[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 6px 10px;\n border-radius: 6px;\n font-size: 13px;\n}\n\n.diff-field.change-added[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 6%, transparent);\n}\n\n.diff-field.change-modified[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 6%, transparent);\n}\n\n.diff-field.change-removed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, transparent);\n}\n\n.diff-field-name[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n min-width: 120px;\n flex-shrink: 0;\n}\n\n.diff-field-values[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n flex: 1;\n}\n\n.diff-field-old[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n text-decoration: line-through;\n opacity: 0.8;\n font-family: 'SF Mono', 'Fira Code', monospace;\n font-size: 12px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.diff-field-arrow[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 10px;\n flex-shrink: 0;\n}\n\n.diff-field-new[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-family: 'SF Mono', 'Fira Code', monospace;\n font-size: 12px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.diff-fields-empty[_ngcontent-%COMP%] {\n padding: 6px 10px;\n font-size: 12px;\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n\n\n.diff-toolbar-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.toolbar-action-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-muted);\n font-size: 13px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.toolbar-action-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, transparent);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-text-muted);\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n max-width: 400px;\n}\n\n\n\n.swap-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 50%;\n background: var(--mj-bg-surface-card);\n color: var(--mj-brand-primary);\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.swap-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n border-color: var(--mj-brand-primary);\n transform: rotate(180deg);\n}\n\n\n\n.diff-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.diff-search[_ngcontent-%COMP%] {\n position: relative;\n flex: 1;\n min-width: 200px;\n}\n\n.diff-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: 13px;\n}\n\n.diff-search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 12px 8px 36px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 8px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n box-sizing: border-box;\n}\n\n.diff-search-input[_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) 10%, transparent);\n}\n\n.diff-filter-pills[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.filter-pill[_ngcontent-%COMP%] {\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 16px;\n background: var(--mj-bg-surface-card);\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.filter-pill[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.filter-pill.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.filter-pill.change-added.active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n border-color: var(--mj-status-success);\n}\n\n.filter-pill.change-removed.active[_ngcontent-%COMP%] {\n background: var(--mj-status-error);\n border-color: var(--mj-status-error);\n}\n\n.filter-pill.change-modified.active[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n border-color: var(--mj-status-warning);\n}\n\n.diff-sort-toggle[_ngcontent-%COMP%] {\n display: flex;\n gap: 2px;\n}\n\n.toggle-btn-sm[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-muted);\n font-size: 13px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.toggle-btn-sm[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.toggle-btn-sm.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n@media (max-width: 768px) {\n .diff-summary[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .label-selectors[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n}"], changeDetection: 0 });
1146
+ i0.ɵɵconditional(!ctx.IsLoading ? 4 : -1);
1147
+ } }, dependencies: [i1.NgClass, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.MJPageHeaderComponent, i3.MJPageLayoutComponent, i3.MJPageBodyComponent, i4.LoadingComponent, i1.SlicePipe], styles: ["\n\n.config-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 24px;\n margin-bottom: 24px;\n}\n\n.mode-selector[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-bottom: 20px;\n}\n\n.mode-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 8px 18px;\n background: var(--mj-bg-surface-sunken);\n border: 2px solid transparent;\n border-radius: 8px;\n cursor: pointer;\n font-size: 14px;\n color: var(--mj-text-secondary);\n transition: all 0.2s ease;\n}\n\n.mode-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n}\n\n.mode-btn.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n\n\n.label-selectors[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.selector-group[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.selector-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 6px;\n}\n\n.selector-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 12px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n box-sizing: border-box;\n}\n\n.selector-input[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.selector-arrow[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding-bottom: 8px;\n color: var(--mj-text-secondary);\n font-size: 16px;\n}\n\n.current-state-badge[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n padding: 2px 8px;\n border-radius: 8px;\n white-space: nowrap;\n}\n\n\n\n.btn-primary[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 24px;\n background: var(--mj-brand-primary);\n border: none;\n border-radius: 8px;\n color: var(--mj-text-inverse);\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n}\n\n.btn-primary[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n\n\n.diff-summary[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 12px;\n margin-bottom: 24px;\n}\n\n.diff-stat[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 16px 20px;\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n}\n\n.diff-stat[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n.diff-stat-value[_ngcontent-%COMP%] {\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.diff-stat-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n\n\n.change-added[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 6%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-success) 20%, transparent);\n color: var(--mj-status-success);\n}\n\n.change-removed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n color: var(--mj-status-error);\n}\n\n.change-modified[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 6%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-warning) 20%, transparent);\n color: var(--mj-status-warning);\n}\n\n.change-unchanged[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-muted) 6%, transparent);\n border-color: color-mix(in srgb, var(--mj-text-muted) 20%, transparent);\n color: var(--mj-text-muted);\n}\n\n\n\n.entity-groups[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.entity-group[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n overflow: hidden;\n}\n\n.entity-group-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 20px;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.entity-group-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.entity-group-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.entity-group-left[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n font-size: 12px;\n color: var(--mj-text-muted);\n width: 16px;\n}\n\n.entity-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.entity-group-name[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.entity-group-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n}\n\n.badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n border: none;\n}\n\n\n\n.entity-chevron[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n width: 14px;\n text-align: center;\n transition: transform 0.2s ease;\n}\n\n.entity-chevron.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n\n\n.entity-group-items[_ngcontent-%COMP%] {\n border-top: 1px solid var(--mj-border-default);\n padding: 8px 16px;\n}\n\n.diff-item-wrapper[_ngcontent-%COMP%] {\n margin-bottom: 2px;\n}\n\n.diff-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 12px;\n border-radius: 6px;\n}\n\n.diff-item.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.diff-item.clickable[_ngcontent-%COMP%]:hover {\n filter: brightness(0.97);\n}\n\n.diff-item-icon[_ngcontent-%COMP%] {\n font-size: 12px;\n width: 20px;\n text-align: center;\n}\n\n.diff-item-record[_ngcontent-%COMP%] {\n font-size: 13px;\n font-family: 'SF Mono', 'Fira Code', monospace;\n color: var(--mj-text-primary);\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.diff-item-display-name[_ngcontent-%COMP%] {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n color: var(--mj-text-secondary);\n font-weight: 500;\n}\n\n.diff-item-open-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: 1px solid transparent;\n border-radius: 4px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 11px;\n cursor: pointer;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.diff-item-open-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, transparent);\n}\n\n.diff-item-type[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.diff-item-chevron[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n transition: transform 0.2s ease;\n}\n\n.diff-item-chevron.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n\n\n.diff-fields[_ngcontent-%COMP%] {\n margin-left: 42px;\n margin-bottom: 8px;\n padding: 8px 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.diff-field[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 6px 10px;\n border-radius: 6px;\n font-size: 13px;\n}\n\n.diff-field.change-added[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 6%, transparent);\n}\n\n.diff-field.change-modified[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 6%, transparent);\n}\n\n.diff-field.change-removed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, transparent);\n}\n\n.diff-field-name[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n min-width: 120px;\n flex-shrink: 0;\n}\n\n.diff-field-values[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n flex: 1;\n}\n\n.diff-field-old[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n text-decoration: line-through;\n opacity: 0.8;\n font-family: 'SF Mono', 'Fira Code', monospace;\n font-size: 12px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.diff-field-arrow[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 10px;\n flex-shrink: 0;\n}\n\n.diff-field-new[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-family: 'SF Mono', 'Fira Code', monospace;\n font-size: 12px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.diff-fields-empty[_ngcontent-%COMP%] {\n padding: 6px 10px;\n font-size: 12px;\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n\n\n.diff-toolbar-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.toolbar-action-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-muted);\n font-size: 13px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.toolbar-action-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, transparent);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-text-muted);\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n max-width: 400px;\n}\n\n\n\n.swap-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 50%;\n background: var(--mj-bg-surface-card);\n color: var(--mj-brand-primary);\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.swap-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n border-color: var(--mj-brand-primary);\n transform: rotate(180deg);\n}\n\n\n\n.diff-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.diff-search[_ngcontent-%COMP%] {\n position: relative;\n flex: 1;\n min-width: 200px;\n}\n\n.diff-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: 13px;\n}\n\n.diff-search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 12px 8px 36px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 8px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n box-sizing: border-box;\n}\n\n.diff-search-input[_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) 10%, transparent);\n}\n\n.diff-filter-pills[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.filter-pill[_ngcontent-%COMP%] {\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 16px;\n background: var(--mj-bg-surface-card);\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.filter-pill[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.filter-pill.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.filter-pill.change-added.active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n border-color: var(--mj-status-success);\n}\n\n.filter-pill.change-removed.active[_ngcontent-%COMP%] {\n background: var(--mj-status-error);\n border-color: var(--mj-status-error);\n}\n\n.filter-pill.change-modified.active[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n border-color: var(--mj-status-warning);\n}\n\n.diff-sort-toggle[_ngcontent-%COMP%] {\n display: flex;\n gap: 2px;\n}\n\n.toggle-btn-sm[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-muted);\n font-size: 13px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.toggle-btn-sm[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.toggle-btn-sm.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n@media (max-width: 768px) {\n .diff-summary[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .label-selectors[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n}"], changeDetection: 0 });
1151
1148
  };
1152
1149
  VersionHistoryDiffResourceComponent = VersionHistoryDiffResourceComponent_1 = __decorate([
1153
1150
  RegisterClass(BaseResourceComponent, 'VersionHistoryDiffResource')
@@ -1155,7 +1152,7 @@ VersionHistoryDiffResourceComponent = VersionHistoryDiffResourceComponent_1 = __
1155
1152
  export { VersionHistoryDiffResourceComponent };
1156
1153
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(VersionHistoryDiffResourceComponent, [{
1157
1154
  type: Component,
1158
- args: [{ standalone: false, selector: 'mj-version-history-diff-resource', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"diff-container\">\n @if (IsLoading) {\n <mj-loading text=\"Loading diff viewer...\"></mj-loading>\n }\n\n @if (!IsLoading) {\n <!-- Header -->\n <div class=\"page-header\">\n <div class=\"header-left\">\n <h2 class=\"page-title\">Diff Viewer</h2>\n <p class=\"page-subtitle\">Compare states between version labels or against current data</p>\n </div>\n </div>\n <!-- Diff Configuration Panel -->\n <div class=\"config-panel\">\n <!-- Mode Selector -->\n <div class=\"mode-selector\">\n <button class=\"mode-btn\"\n [class.active]=\"DiffMode === 'label-to-current'\"\n (click)=\"OnDiffModeChange('label-to-current')\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i>\n Label vs Current\n </button>\n <button class=\"mode-btn\"\n [class.active]=\"DiffMode === 'label-to-label'\"\n (click)=\"OnDiffModeChange('label-to-label')\">\n <i class=\"fa-solid fa-code-compare\"></i>\n Label vs Label\n </button>\n </div>\n <!-- Label Selectors -->\n <div class=\"label-selectors\">\n <div class=\"selector-group\">\n <label class=\"selector-label\">\n {{DiffMode === 'label-to-current' ? 'Compare label' : 'From label'}}\n </label>\n <select class=\"selector-input\"\n [(ngModel)]=\"FromLabelId\">\n <option value=\"\">Select a label...</option>\n @for (label of FilteredFromLabels; track label) {\n <option\n [value]=\"label.ID\">\n {{FormatLabelOption(label)}}\n </option>\n }\n </select>\n </div>\n @if (DiffMode === 'label-to-label') {\n <div class=\"selector-arrow\">\n <button class=\"swap-btn\" (click)=\"SwapLabels()\" title=\"Swap direction\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n </button>\n </div>\n }\n @if (DiffMode === 'label-to-current') {\n <div class=\"selector-arrow\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n <span class=\"current-state-badge\">Current State</span>\n </div>\n }\n @if (DiffMode === 'label-to-label') {\n <div class=\"selector-group\">\n <label class=\"selector-label\">To label</label>\n <select class=\"selector-input\"\n [(ngModel)]=\"ToLabelId\">\n <option value=\"\">Select a label...</option>\n @for (label of FilteredToLabels; track label) {\n <option\n [value]=\"label.ID\">\n {{FormatLabelOption(label)}}\n </option>\n }\n </select>\n </div>\n }\n </div>\n <!-- Run Button -->\n <button class=\"btn-primary\"\n [disabled]=\"!CanRunDiff || IsDiffLoading\"\n (click)=\"RunDiff()\">\n @if (!IsDiffLoading) {\n <i class=\"fa-solid fa-play\"></i>\n }\n @if (IsDiffLoading) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n }\n <span>{{IsDiffLoading ? 'Comparing...' : 'Compare'}}</span>\n </button>\n </div>\n <!-- Diff Results -->\n @if (HasDiffResult) {\n <!-- Summary Stats -->\n <div class=\"diff-summary\">\n <div class=\"diff-stat change-added\">\n <i class=\"fa-solid fa-plus\"></i>\n <span class=\"diff-stat-value\">{{TotalAdded}}</span>\n <span class=\"diff-stat-label\">Added</span>\n </div>\n <div class=\"diff-stat change-removed\">\n <i class=\"fa-solid fa-minus\"></i>\n <span class=\"diff-stat-value\">{{TotalRemoved}}</span>\n <span class=\"diff-stat-label\">Removed</span>\n </div>\n <div class=\"diff-stat change-modified\">\n <i class=\"fa-solid fa-pen\"></i>\n <span class=\"diff-stat-value\">{{TotalModified}}</span>\n <span class=\"diff-stat-label\">Modified</span>\n </div>\n <div class=\"diff-stat change-unchanged\">\n <i class=\"fa-solid fa-equals\"></i>\n <span class=\"diff-stat-value\">{{TotalUnchanged}}</span>\n <span class=\"diff-stat-label\">Unchanged</span>\n </div>\n </div>\n <!-- Results toolbar -->\n @if (EntityGroups.length > 0) {\n <div class=\"diff-toolbar\">\n <div class=\"diff-search\">\n <i class=\"fa-solid fa-search diff-search-icon\"></i>\n <input type=\"text\" class=\"diff-search-input\"\n placeholder=\"Search by entity or record...\"\n [ngModel]=\"DiffSearch\"\n (ngModelChange)=\"OnDiffSearchChange($event)\" />\n </div>\n <div class=\"diff-filter-pills\">\n <button class=\"filter-pill\" [class.active]=\"DiffFilterType === 'all'\"\n (click)=\"OnDiffFilterChange('all')\">All</button>\n <button class=\"filter-pill change-added\" [class.active]=\"DiffFilterType === 'added'\"\n (click)=\"OnDiffFilterChange('added')\">Added</button>\n <button class=\"filter-pill change-removed\" [class.active]=\"DiffFilterType === 'removed'\"\n (click)=\"OnDiffFilterChange('removed')\">Removed</button>\n <button class=\"filter-pill change-modified\" [class.active]=\"DiffFilterType === 'modified'\"\n (click)=\"OnDiffFilterChange('modified')\">Modified</button>\n </div>\n <div class=\"diff-toolbar-right\">\n <button class=\"toolbar-action-btn\" (click)=\"ExpandAllGroups()\" title=\"Expand all\">\n <i class=\"fa-solid fa-angles-down\"></i>\n </button>\n <button class=\"toolbar-action-btn\" (click)=\"CollapseAllGroups()\" title=\"Collapse all\">\n <i class=\"fa-solid fa-angles-up\"></i>\n </button>\n <div class=\"diff-sort-toggle\">\n <button class=\"toggle-btn-sm\" [class.active]=\"DiffSortBy === 'name'\"\n (click)=\"OnDiffSortChange('name')\" title=\"Sort by name\">\n <i class=\"fa-solid\" [ngClass]=\"DiffSortBy === 'name' && DiffSortDir === 'desc' ? 'fa-arrow-up-z-a' : 'fa-arrow-down-a-z'\"></i>\n </button>\n <button class=\"toggle-btn-sm\" [class.active]=\"DiffSortBy === 'count'\"\n (click)=\"OnDiffSortChange('count')\" title=\"Sort by count\">\n <i class=\"fa-solid\" [ngClass]=\"DiffSortBy === 'count' && DiffSortDir === 'asc' ? 'fa-arrow-up-1-9' : 'fa-arrow-down-9-1'\"></i>\n </button>\n </div>\n </div>\n </div>\n }\n <!-- Entity Groups -->\n @if (FilteredEntityGroups.length > 0) {\n <div class=\"entity-groups\">\n @for (group of FilteredEntityGroups; track group) {\n <div class=\"entity-group\">\n <div class=\"entity-group-header\" (click)=\"ToggleEntityGroup(group)\">\n <div class=\"entity-group-left\">\n <i class=\"fa-solid fa-chevron-right entity-chevron\"\n [class.expanded]=\"group.IsExpanded\">\n </i>\n <i [class]=\"group.EntityIcon\" class=\"entity-icon\"></i>\n <span class=\"entity-group-name\">{{group.EntityName}}</span>\n </div>\n <div class=\"entity-group-badges\">\n @if (group.AddedCount > 0) {\n <span class=\"badge change-added\">\n +{{group.AddedCount}}\n </span>\n }\n @if (group.RemovedCount > 0) {\n <span class=\"badge change-removed\">\n -{{group.RemovedCount}}\n </span>\n }\n @if (group.ModifiedCount > 0) {\n <span class=\"badge change-modified\">\n ~{{group.ModifiedCount}}\n </span>\n }\n </div>\n </div>\n @if (group.IsExpanded) {\n <div class=\"entity-group-items\">\n @for (item of group.Items; track item) {\n <div class=\"diff-item-wrapper\">\n <div class=\"diff-item\" [ngClass]=\"GetChangeTypeClass(item.ChangeType)\"\n [class.clickable]=\"item.ChangeType === 'Modified'\"\n (click)=\"ToggleItem(item)\">\n <i [class]=\"GetChangeTypeIcon(item.ChangeType)\" class=\"diff-item-icon\"></i>\n <span class=\"diff-item-record\">\n {{FormatRecordID(item.RecordID)}}\n @if (item.DisplayName) {\n <span class=\"diff-item-display-name\"> ({{item.DisplayName}})</span>\n }\n </span>\n <span class=\"diff-item-type\">{{item.ChangeType}}</span>\n <button class=\"diff-item-open-btn\" (click)=\"OnOpenRecord(item); $event.stopPropagation()\"\n title=\"Open record\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i>\n </button>\n @if (item.ChangeType === 'Modified') {\n <i class=\"fa-solid fa-chevron-right diff-item-chevron\"\n [class.expanded]=\"item.IsExpanded\"\n ></i>\n }\n </div>\n <!-- Field-level changes -->\n @if (item.IsExpanded && item.ChangeType === 'Modified') {\n <div class=\"diff-fields\">\n @if (item.IsLoadingFields) {\n <mj-loading text=\"Loading changes...\" size=\"small\"></mj-loading>\n }\n @if (!item.IsLoadingFields && item.FieldChanges.length > 0) {\n @for (field of item.FieldChanges; track field) {\n <div class=\"diff-field\"\n [ngClass]=\"GetChangeTypeClass(field.ChangeType)\">\n <span class=\"diff-field-name\">{{field.FieldName}}</span>\n <span class=\"diff-field-values\">\n @if (field.OldValue) {\n <span class=\"diff-field-old\">{{field.OldValue | slice:0:60}}</span>\n }\n @if (field.OldValue && field.NewValue) {\n <i class=\"fa-solid fa-arrow-right diff-field-arrow\"></i>\n }\n @if (field.NewValue) {\n <span class=\"diff-field-new\">{{field.NewValue | slice:0:60}}</span>\n }\n </span>\n </div>\n }\n }\n @if (!item.IsLoadingFields && item.FieldsLoaded && item.FieldChanges.length === 0) {\n <div class=\"diff-fields-empty\">\n <span>No field-level changes available</span>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n <!-- No changes -->\n @if (FilteredEntityGroups.length === 0 && TotalChanges === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-check-circle empty-icon\" style=\"color: #10b981;\"></i>\n <h3>No differences found</h3>\n <p>The compared states are identical.</p>\n </div>\n }\n }\n <!-- No results yet -->\n @if (!HasDiffResult && !IsDiffLoading) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-code-compare empty-icon\"></i>\n <h3>Select labels to compare</h3>\n <p>Choose a diff mode and select labels above, then click Compare.</p>\n </div>\n }\n }\n</div>\n", styles: [".diff-container {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n}\n\n/* Header */\n.page-header {\n margin-bottom: 24px;\n}\n\n.page-title {\n font-size: 24px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 4px 0;\n}\n\n.page-subtitle {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n/* Config Panel */\n.config-panel {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 24px;\n margin-bottom: 24px;\n}\n\n.mode-selector {\n display: flex;\n gap: 8px;\n margin-bottom: 20px;\n}\n\n.mode-btn {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 8px 18px;\n background: var(--mj-bg-surface-sunken);\n border: 2px solid transparent;\n border-radius: 8px;\n cursor: pointer;\n font-size: 14px;\n color: var(--mj-text-secondary);\n transition: all 0.2s ease;\n}\n\n.mode-btn:hover {\n background: var(--mj-border-default);\n}\n\n.mode-btn.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n/* Label Selectors */\n.label-selectors {\n display: flex;\n align-items: flex-end;\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.selector-group {\n flex: 1;\n}\n\n.selector-label {\n display: block;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 6px;\n}\n\n.selector-input {\n width: 100%;\n padding: 10px 12px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n box-sizing: border-box;\n}\n\n.selector-input:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.selector-arrow {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding-bottom: 8px;\n color: var(--mj-text-secondary);\n font-size: 16px;\n}\n\n.current-state-badge {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n padding: 2px 8px;\n border-radius: 8px;\n white-space: nowrap;\n}\n\n/* Run Button */\n.btn-primary {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 24px;\n background: var(--mj-brand-primary);\n border: none;\n border-radius: 8px;\n color: var(--mj-text-inverse);\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-primary:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n}\n\n.btn-primary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Diff Summary */\n.diff-summary {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 12px;\n margin-bottom: 24px;\n}\n\n.diff-stat {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 16px 20px;\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n}\n\n.diff-stat i {\n font-size: 16px;\n}\n\n.diff-stat-value {\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.diff-stat-label {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n/* Change type colors */\n.change-added {\n background: color-mix(in srgb, var(--mj-status-success) 6%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-success) 20%, transparent);\n color: var(--mj-status-success);\n}\n\n.change-removed {\n background: color-mix(in srgb, var(--mj-status-error) 6%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n color: var(--mj-status-error);\n}\n\n.change-modified {\n background: color-mix(in srgb, var(--mj-status-warning) 6%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-warning) 20%, transparent);\n color: var(--mj-status-warning);\n}\n\n.change-unchanged {\n background: color-mix(in srgb, var(--mj-text-muted) 6%, transparent);\n border-color: color-mix(in srgb, var(--mj-text-muted) 20%, transparent);\n color: var(--mj-text-muted);\n}\n\n/* Entity Groups */\n.entity-groups {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.entity-group {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n overflow: hidden;\n}\n\n.entity-group-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 20px;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.entity-group-header:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.entity-group-left {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.entity-group-left i:first-child {\n font-size: 12px;\n color: var(--mj-text-muted);\n width: 16px;\n}\n\n.entity-icon {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.entity-group-name {\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.entity-group-badges {\n display: flex;\n gap: 6px;\n}\n\n.badge {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n border: none;\n}\n\n/* Entity chevron animation */\n.entity-chevron {\n font-size: 11px;\n color: var(--mj-text-muted);\n width: 14px;\n text-align: center;\n transition: transform 0.2s ease;\n}\n\n.entity-chevron.expanded {\n transform: rotate(90deg);\n}\n\n/* Entity group items */\n.entity-group-items {\n border-top: 1px solid var(--mj-border-default);\n padding: 8px 16px;\n}\n\n.diff-item-wrapper {\n margin-bottom: 2px;\n}\n\n.diff-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 12px;\n border-radius: 6px;\n}\n\n.diff-item.clickable {\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.diff-item.clickable:hover {\n filter: brightness(0.97);\n}\n\n.diff-item-icon {\n font-size: 12px;\n width: 20px;\n text-align: center;\n}\n\n.diff-item-record {\n font-size: 13px;\n font-family: 'SF Mono', 'Fira Code', monospace;\n color: var(--mj-text-primary);\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.diff-item-display-name {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n color: var(--mj-text-secondary);\n font-weight: 500;\n}\n\n.diff-item-open-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: 1px solid transparent;\n border-radius: 4px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 11px;\n cursor: pointer;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.diff-item-open-btn:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, transparent);\n}\n\n.diff-item-type {\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.diff-item-chevron {\n font-size: 10px;\n color: var(--mj-text-muted);\n transition: transform 0.2s ease;\n}\n\n.diff-item-chevron.expanded {\n transform: rotate(90deg);\n}\n\n/* Field-level diff changes */\n.diff-fields {\n margin-left: 42px;\n margin-bottom: 8px;\n padding: 8px 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.diff-field {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 6px 10px;\n border-radius: 6px;\n font-size: 13px;\n}\n\n.diff-field.change-added {\n background: color-mix(in srgb, var(--mj-status-success) 6%, transparent);\n}\n\n.diff-field.change-modified {\n background: color-mix(in srgb, var(--mj-status-warning) 6%, transparent);\n}\n\n.diff-field.change-removed {\n background: color-mix(in srgb, var(--mj-status-error) 6%, transparent);\n}\n\n.diff-field-name {\n font-weight: 600;\n color: var(--mj-text-primary);\n min-width: 120px;\n flex-shrink: 0;\n}\n\n.diff-field-values {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n flex: 1;\n}\n\n.diff-field-old {\n color: var(--mj-status-error);\n text-decoration: line-through;\n opacity: 0.8;\n font-family: 'SF Mono', 'Fira Code', monospace;\n font-size: 12px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.diff-field-arrow {\n color: var(--mj-text-muted);\n font-size: 10px;\n flex-shrink: 0;\n}\n\n.diff-field-new {\n color: var(--mj-status-success);\n font-family: 'SF Mono', 'Fira Code', monospace;\n font-size: 12px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.diff-fields-empty {\n padding: 6px 10px;\n font-size: 12px;\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n/* Toolbar actions */\n.diff-toolbar-right {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.toolbar-action-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-muted);\n font-size: 13px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.toolbar-action-btn:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, transparent);\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n}\n\n.empty-icon {\n font-size: 48px;\n color: var(--mj-text-muted);\n margin-bottom: 16px;\n}\n\n.empty-state h3 {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state p {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n max-width: 400px;\n}\n\n/* Swap Button */\n.swap-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 50%;\n background: var(--mj-bg-surface-card);\n color: var(--mj-brand-primary);\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.swap-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n border-color: var(--mj-brand-primary);\n transform: rotate(180deg);\n}\n\n/* Diff Results Toolbar */\n.diff-toolbar {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.diff-search {\n position: relative;\n flex: 1;\n min-width: 200px;\n}\n\n.diff-search-icon {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n\n.diff-search-input {\n width: 100%;\n padding: 8px 12px 8px 36px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 8px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n box-sizing: border-box;\n}\n\n.diff-search-input: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) 10%, transparent);\n}\n\n.diff-filter-pills {\n display: flex;\n gap: 4px;\n}\n\n.filter-pill {\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 16px;\n background: var(--mj-bg-surface-card);\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.filter-pill:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.filter-pill.active {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.filter-pill.change-added.active {\n background: var(--mj-status-success);\n border-color: var(--mj-status-success);\n}\n\n.filter-pill.change-removed.active {\n background: var(--mj-status-error);\n border-color: var(--mj-status-error);\n}\n\n.filter-pill.change-modified.active {\n background: var(--mj-status-warning);\n border-color: var(--mj-status-warning);\n}\n\n.diff-sort-toggle {\n display: flex;\n gap: 2px;\n}\n\n.toggle-btn-sm {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-muted);\n font-size: 13px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.toggle-btn-sm:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.toggle-btn-sm.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n@media (max-width: 768px) {\n .diff-summary {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .label-selectors {\n flex-direction: column;\n }\n}\n"] }]
1155
+ args: [{ standalone: false, selector: 'mj-version-history-diff-resource', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mj-page-layout>\n <mj-page-header\n Title=\"Diff Viewer\"\n Icon=\"fa-solid fa-code-compare\"\n Subtitle=\"Compare states between version labels or against current data\">\n </mj-page-header>\n\n <mj-page-body>\n @if (IsLoading) {\n <mj-loading text=\"Loading diff viewer...\"></mj-loading>\n }\n\n @if (!IsLoading) {\n <!-- Diff Configuration Panel -->\n <div class=\"config-panel\">\n <!-- Mode Selector -->\n <div class=\"mode-selector\">\n <button class=\"mode-btn\"\n [class.active]=\"DiffMode === 'label-to-current'\"\n (click)=\"OnDiffModeChange('label-to-current')\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i>\n Label vs Current\n </button>\n <button class=\"mode-btn\"\n [class.active]=\"DiffMode === 'label-to-label'\"\n (click)=\"OnDiffModeChange('label-to-label')\">\n <i class=\"fa-solid fa-code-compare\"></i>\n Label vs Label\n </button>\n </div>\n <!-- Label Selectors -->\n <div class=\"label-selectors\">\n <div class=\"selector-group\">\n <label class=\"selector-label\">\n {{DiffMode === 'label-to-current' ? 'Compare label' : 'From label'}}\n </label>\n <select class=\"selector-input\"\n [(ngModel)]=\"FromLabelId\">\n <option value=\"\">Select a label...</option>\n @for (label of FilteredFromLabels; track label) {\n <option\n [value]=\"label.ID\">\n {{FormatLabelOption(label)}}\n </option>\n }\n </select>\n </div>\n @if (DiffMode === 'label-to-label') {\n <div class=\"selector-arrow\">\n <button class=\"swap-btn\" (click)=\"SwapLabels()\" title=\"Swap direction\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n </button>\n </div>\n }\n @if (DiffMode === 'label-to-current') {\n <div class=\"selector-arrow\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n <span class=\"current-state-badge\">Current State</span>\n </div>\n }\n @if (DiffMode === 'label-to-label') {\n <div class=\"selector-group\">\n <label class=\"selector-label\">To label</label>\n <select class=\"selector-input\"\n [(ngModel)]=\"ToLabelId\">\n <option value=\"\">Select a label...</option>\n @for (label of FilteredToLabels; track label) {\n <option\n [value]=\"label.ID\">\n {{FormatLabelOption(label)}}\n </option>\n }\n </select>\n </div>\n }\n </div>\n <!-- Run Button -->\n <button class=\"btn-primary\"\n [disabled]=\"!CanRunDiff || IsDiffLoading\"\n (click)=\"RunDiff()\">\n @if (!IsDiffLoading) {\n <i class=\"fa-solid fa-play\"></i>\n }\n @if (IsDiffLoading) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n }\n <span>{{IsDiffLoading ? 'Comparing...' : 'Compare'}}</span>\n </button>\n </div>\n <!-- Diff Results -->\n @if (HasDiffResult) {\n <!-- Summary Stats -->\n <div class=\"diff-summary\">\n <div class=\"diff-stat change-added\">\n <i class=\"fa-solid fa-plus\"></i>\n <span class=\"diff-stat-value\">{{TotalAdded}}</span>\n <span class=\"diff-stat-label\">Added</span>\n </div>\n <div class=\"diff-stat change-removed\">\n <i class=\"fa-solid fa-minus\"></i>\n <span class=\"diff-stat-value\">{{TotalRemoved}}</span>\n <span class=\"diff-stat-label\">Removed</span>\n </div>\n <div class=\"diff-stat change-modified\">\n <i class=\"fa-solid fa-pen\"></i>\n <span class=\"diff-stat-value\">{{TotalModified}}</span>\n <span class=\"diff-stat-label\">Modified</span>\n </div>\n <div class=\"diff-stat change-unchanged\">\n <i class=\"fa-solid fa-equals\"></i>\n <span class=\"diff-stat-value\">{{TotalUnchanged}}</span>\n <span class=\"diff-stat-label\">Unchanged</span>\n </div>\n </div>\n <!-- Results toolbar -->\n @if (EntityGroups.length > 0) {\n <div class=\"diff-toolbar\">\n <div class=\"diff-search\">\n <i class=\"fa-solid fa-search diff-search-icon\"></i>\n <input type=\"text\" class=\"diff-search-input\"\n placeholder=\"Search by entity or record...\"\n [ngModel]=\"DiffSearch\"\n (ngModelChange)=\"OnDiffSearchChange($event)\" />\n </div>\n <div class=\"diff-filter-pills\">\n <button class=\"filter-pill\" [class.active]=\"DiffFilterType === 'all'\"\n (click)=\"OnDiffFilterChange('all')\">All</button>\n <button class=\"filter-pill change-added\" [class.active]=\"DiffFilterType === 'added'\"\n (click)=\"OnDiffFilterChange('added')\">Added</button>\n <button class=\"filter-pill change-removed\" [class.active]=\"DiffFilterType === 'removed'\"\n (click)=\"OnDiffFilterChange('removed')\">Removed</button>\n <button class=\"filter-pill change-modified\" [class.active]=\"DiffFilterType === 'modified'\"\n (click)=\"OnDiffFilterChange('modified')\">Modified</button>\n </div>\n <div class=\"diff-toolbar-right\">\n <button class=\"toolbar-action-btn\" (click)=\"ExpandAllGroups()\" title=\"Expand all\">\n <i class=\"fa-solid fa-angles-down\"></i>\n </button>\n <button class=\"toolbar-action-btn\" (click)=\"CollapseAllGroups()\" title=\"Collapse all\">\n <i class=\"fa-solid fa-angles-up\"></i>\n </button>\n <div class=\"diff-sort-toggle\">\n <button class=\"toggle-btn-sm\" [class.active]=\"DiffSortBy === 'name'\"\n (click)=\"OnDiffSortChange('name')\" title=\"Sort by name\">\n <i class=\"fa-solid\" [ngClass]=\"DiffSortBy === 'name' && DiffSortDir === 'desc' ? 'fa-arrow-up-z-a' : 'fa-arrow-down-a-z'\"></i>\n </button>\n <button class=\"toggle-btn-sm\" [class.active]=\"DiffSortBy === 'count'\"\n (click)=\"OnDiffSortChange('count')\" title=\"Sort by count\">\n <i class=\"fa-solid\" [ngClass]=\"DiffSortBy === 'count' && DiffSortDir === 'asc' ? 'fa-arrow-up-1-9' : 'fa-arrow-down-9-1'\"></i>\n </button>\n </div>\n </div>\n </div>\n }\n <!-- Entity Groups -->\n @if (FilteredEntityGroups.length > 0) {\n <div class=\"entity-groups\">\n @for (group of FilteredEntityGroups; track group) {\n <div class=\"entity-group\">\n <div class=\"entity-group-header\" (click)=\"ToggleEntityGroup(group)\">\n <div class=\"entity-group-left\">\n <i class=\"fa-solid fa-chevron-right entity-chevron\"\n [class.expanded]=\"group.IsExpanded\">\n </i>\n <i [class]=\"group.EntityIcon\" class=\"entity-icon\"></i>\n <span class=\"entity-group-name\">{{group.EntityName}}</span>\n </div>\n <div class=\"entity-group-badges\">\n @if (group.AddedCount > 0) {\n <span class=\"badge change-added\">\n +{{group.AddedCount}}\n </span>\n }\n @if (group.RemovedCount > 0) {\n <span class=\"badge change-removed\">\n -{{group.RemovedCount}}\n </span>\n }\n @if (group.ModifiedCount > 0) {\n <span class=\"badge change-modified\">\n ~{{group.ModifiedCount}}\n </span>\n }\n </div>\n </div>\n @if (group.IsExpanded) {\n <div class=\"entity-group-items\">\n @for (item of group.Items; track item) {\n <div class=\"diff-item-wrapper\">\n <div class=\"diff-item\" [ngClass]=\"GetChangeTypeClass(item.ChangeType)\"\n [class.clickable]=\"item.ChangeType === 'Modified'\"\n (click)=\"ToggleItem(item)\">\n <i [class]=\"GetChangeTypeIcon(item.ChangeType)\" class=\"diff-item-icon\"></i>\n <span class=\"diff-item-record\">\n {{FormatRecordID(item.RecordID)}}\n @if (item.DisplayName) {\n <span class=\"diff-item-display-name\"> ({{item.DisplayName}})</span>\n }\n </span>\n <span class=\"diff-item-type\">{{item.ChangeType}}</span>\n <button class=\"diff-item-open-btn\" (click)=\"OnOpenRecord(item); $event.stopPropagation()\"\n title=\"Open record\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i>\n </button>\n @if (item.ChangeType === 'Modified') {\n <i class=\"fa-solid fa-chevron-right diff-item-chevron\"\n [class.expanded]=\"item.IsExpanded\"\n ></i>\n }\n </div>\n <!-- Field-level changes -->\n @if (item.IsExpanded && item.ChangeType === 'Modified') {\n <div class=\"diff-fields\">\n @if (item.IsLoadingFields) {\n <mj-loading text=\"Loading changes...\" size=\"small\"></mj-loading>\n }\n @if (!item.IsLoadingFields && item.FieldChanges.length > 0) {\n @for (field of item.FieldChanges; track field) {\n <div class=\"diff-field\"\n [ngClass]=\"GetChangeTypeClass(field.ChangeType)\">\n <span class=\"diff-field-name\">{{field.FieldName}}</span>\n <span class=\"diff-field-values\">\n @if (field.OldValue) {\n <span class=\"diff-field-old\">{{field.OldValue | slice:0:60}}</span>\n }\n @if (field.OldValue && field.NewValue) {\n <i class=\"fa-solid fa-arrow-right diff-field-arrow\"></i>\n }\n @if (field.NewValue) {\n <span class=\"diff-field-new\">{{field.NewValue | slice:0:60}}</span>\n }\n </span>\n </div>\n }\n }\n @if (!item.IsLoadingFields && item.FieldsLoaded && item.FieldChanges.length === 0) {\n <div class=\"diff-fields-empty\">\n <span>No field-level changes available</span>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n <!-- No changes -->\n @if (FilteredEntityGroups.length === 0 && TotalChanges === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-check-circle empty-icon\" style=\"color: #10b981;\"></i>\n <h3>No differences found</h3>\n <p>The compared states are identical.</p>\n </div>\n }\n }\n <!-- No results yet -->\n @if (!HasDiffResult && !IsDiffLoading) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-code-compare empty-icon\"></i>\n <h3>Select labels to compare</h3>\n <p>Choose a diff mode and select labels above, then click Compare.</p>\n </div>\n }\n }\n </mj-page-body>\n</mj-page-layout>\n", styles: ["/* Config Panel */\n.config-panel {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 24px;\n margin-bottom: 24px;\n}\n\n.mode-selector {\n display: flex;\n gap: 8px;\n margin-bottom: 20px;\n}\n\n.mode-btn {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 8px 18px;\n background: var(--mj-bg-surface-sunken);\n border: 2px solid transparent;\n border-radius: 8px;\n cursor: pointer;\n font-size: 14px;\n color: var(--mj-text-secondary);\n transition: all 0.2s ease;\n}\n\n.mode-btn:hover {\n background: var(--mj-border-default);\n}\n\n.mode-btn.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n/* Label Selectors */\n.label-selectors {\n display: flex;\n align-items: flex-end;\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.selector-group {\n flex: 1;\n}\n\n.selector-label {\n display: block;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 6px;\n}\n\n.selector-input {\n width: 100%;\n padding: 10px 12px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n box-sizing: border-box;\n}\n\n.selector-input:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.selector-arrow {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding-bottom: 8px;\n color: var(--mj-text-secondary);\n font-size: 16px;\n}\n\n.current-state-badge {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n padding: 2px 8px;\n border-radius: 8px;\n white-space: nowrap;\n}\n\n/* Run Button */\n.btn-primary {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 24px;\n background: var(--mj-brand-primary);\n border: none;\n border-radius: 8px;\n color: var(--mj-text-inverse);\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-primary:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n}\n\n.btn-primary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Diff Summary */\n.diff-summary {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 12px;\n margin-bottom: 24px;\n}\n\n.diff-stat {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 16px 20px;\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n}\n\n.diff-stat i {\n font-size: 16px;\n}\n\n.diff-stat-value {\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.diff-stat-label {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n/* Change type colors */\n.change-added {\n background: color-mix(in srgb, var(--mj-status-success) 6%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-success) 20%, transparent);\n color: var(--mj-status-success);\n}\n\n.change-removed {\n background: color-mix(in srgb, var(--mj-status-error) 6%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n color: var(--mj-status-error);\n}\n\n.change-modified {\n background: color-mix(in srgb, var(--mj-status-warning) 6%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-warning) 20%, transparent);\n color: var(--mj-status-warning);\n}\n\n.change-unchanged {\n background: color-mix(in srgb, var(--mj-text-muted) 6%, transparent);\n border-color: color-mix(in srgb, var(--mj-text-muted) 20%, transparent);\n color: var(--mj-text-muted);\n}\n\n/* Entity Groups */\n.entity-groups {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.entity-group {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n overflow: hidden;\n}\n\n.entity-group-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 20px;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.entity-group-header:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.entity-group-left {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.entity-group-left i:first-child {\n font-size: 12px;\n color: var(--mj-text-muted);\n width: 16px;\n}\n\n.entity-icon {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.entity-group-name {\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.entity-group-badges {\n display: flex;\n gap: 6px;\n}\n\n.badge {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n border: none;\n}\n\n/* Entity chevron animation */\n.entity-chevron {\n font-size: 11px;\n color: var(--mj-text-muted);\n width: 14px;\n text-align: center;\n transition: transform 0.2s ease;\n}\n\n.entity-chevron.expanded {\n transform: rotate(90deg);\n}\n\n/* Entity group items */\n.entity-group-items {\n border-top: 1px solid var(--mj-border-default);\n padding: 8px 16px;\n}\n\n.diff-item-wrapper {\n margin-bottom: 2px;\n}\n\n.diff-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 12px;\n border-radius: 6px;\n}\n\n.diff-item.clickable {\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.diff-item.clickable:hover {\n filter: brightness(0.97);\n}\n\n.diff-item-icon {\n font-size: 12px;\n width: 20px;\n text-align: center;\n}\n\n.diff-item-record {\n font-size: 13px;\n font-family: 'SF Mono', 'Fira Code', monospace;\n color: var(--mj-text-primary);\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.diff-item-display-name {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n color: var(--mj-text-secondary);\n font-weight: 500;\n}\n\n.diff-item-open-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: 1px solid transparent;\n border-radius: 4px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 11px;\n cursor: pointer;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.diff-item-open-btn:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, transparent);\n}\n\n.diff-item-type {\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.diff-item-chevron {\n font-size: 10px;\n color: var(--mj-text-muted);\n transition: transform 0.2s ease;\n}\n\n.diff-item-chevron.expanded {\n transform: rotate(90deg);\n}\n\n/* Field-level diff changes */\n.diff-fields {\n margin-left: 42px;\n margin-bottom: 8px;\n padding: 8px 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.diff-field {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 6px 10px;\n border-radius: 6px;\n font-size: 13px;\n}\n\n.diff-field.change-added {\n background: color-mix(in srgb, var(--mj-status-success) 6%, transparent);\n}\n\n.diff-field.change-modified {\n background: color-mix(in srgb, var(--mj-status-warning) 6%, transparent);\n}\n\n.diff-field.change-removed {\n background: color-mix(in srgb, var(--mj-status-error) 6%, transparent);\n}\n\n.diff-field-name {\n font-weight: 600;\n color: var(--mj-text-primary);\n min-width: 120px;\n flex-shrink: 0;\n}\n\n.diff-field-values {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n flex: 1;\n}\n\n.diff-field-old {\n color: var(--mj-status-error);\n text-decoration: line-through;\n opacity: 0.8;\n font-family: 'SF Mono', 'Fira Code', monospace;\n font-size: 12px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.diff-field-arrow {\n color: var(--mj-text-muted);\n font-size: 10px;\n flex-shrink: 0;\n}\n\n.diff-field-new {\n color: var(--mj-status-success);\n font-family: 'SF Mono', 'Fira Code', monospace;\n font-size: 12px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.diff-fields-empty {\n padding: 6px 10px;\n font-size: 12px;\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n/* Toolbar actions */\n.diff-toolbar-right {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.toolbar-action-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-muted);\n font-size: 13px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.toolbar-action-btn:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, transparent);\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n}\n\n.empty-icon {\n font-size: 48px;\n color: var(--mj-text-muted);\n margin-bottom: 16px;\n}\n\n.empty-state h3 {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state p {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n max-width: 400px;\n}\n\n/* Swap Button */\n.swap-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 50%;\n background: var(--mj-bg-surface-card);\n color: var(--mj-brand-primary);\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.swap-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n border-color: var(--mj-brand-primary);\n transform: rotate(180deg);\n}\n\n/* Diff Results Toolbar */\n.diff-toolbar {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.diff-search {\n position: relative;\n flex: 1;\n min-width: 200px;\n}\n\n.diff-search-icon {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n\n.diff-search-input {\n width: 100%;\n padding: 8px 12px 8px 36px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 8px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n box-sizing: border-box;\n}\n\n.diff-search-input: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) 10%, transparent);\n}\n\n.diff-filter-pills {\n display: flex;\n gap: 4px;\n}\n\n.filter-pill {\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 16px;\n background: var(--mj-bg-surface-card);\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.filter-pill:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.filter-pill.active {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.filter-pill.change-added.active {\n background: var(--mj-status-success);\n border-color: var(--mj-status-success);\n}\n\n.filter-pill.change-removed.active {\n background: var(--mj-status-error);\n border-color: var(--mj-status-error);\n}\n\n.filter-pill.change-modified.active {\n background: var(--mj-status-warning);\n border-color: var(--mj-status-warning);\n}\n\n.diff-sort-toggle {\n display: flex;\n gap: 2px;\n}\n\n.toggle-btn-sm {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-muted);\n font-size: 13px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.toggle-btn-sm:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.toggle-btn-sm.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n@media (max-width: 768px) {\n .diff-summary {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .label-selectors {\n flex-direction: column;\n }\n}\n"] }]
1159
1156
  }], () => [{ type: i0.ChangeDetectorRef }], null); })();
1160
1157
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(VersionHistoryDiffResourceComponent, { className: "VersionHistoryDiffResourceComponent", filePath: "src/VersionHistory/components/diff-resource.component.ts", lineNumber: 59 }); })();
1161
1158
  //# sourceMappingURL=diff-resource.component.js.map