@memberjunction/ng-dashboards 5.34.1 → 5.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (407) 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 +96 -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 +453 -122
  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.d.ts +28 -0
  39. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  40. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +2084 -2079
  41. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  42. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
  43. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  44. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
  45. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  46. package/dist/AI/components/models/model-management.component.d.ts +17 -0
  47. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  48. package/dist/AI/components/models/model-management.component.js +370 -425
  49. package/dist/AI/components/models/model-management.component.js.map +1 -1
  50. package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
  51. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  52. package/dist/AI/components/prompts/prompt-management.component.js +317 -357
  53. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  54. package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
  55. package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
  56. package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
  57. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  58. package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
  59. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  60. package/dist/AI/components/system/system-configuration.component.js +403 -362
  61. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  62. package/dist/AI/components/tags/tags-resource.component.d.ts +15 -0
  63. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  64. package/dist/AI/components/tags/tags-resource.component.js +1423 -1438
  65. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  66. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
  67. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  68. package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
  69. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  70. package/dist/APIKeys/api-keys-resource.component.d.ts +12 -8
  71. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  72. package/dist/APIKeys/api-keys-resource.component.js +329 -371
  73. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  74. package/dist/Actions/components/actions-overview.component.d.ts +6 -0
  75. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  76. package/dist/Actions/components/actions-overview.component.js +202 -158
  77. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  78. package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
  79. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  80. package/dist/Actions/components/execution-monitoring.component.js +191 -142
  81. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  82. package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
  83. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  84. package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
  85. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  86. package/dist/Actions/components/explorer/index.d.ts +0 -1
  87. package/dist/Actions/components/explorer/index.d.ts.map +1 -1
  88. package/dist/Actions/components/explorer/index.js +0 -1
  89. package/dist/Actions/components/explorer/index.js.map +1 -1
  90. package/dist/Admin/admin-data-schema.component.js +19 -79
  91. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  92. package/dist/Admin/admin-dev-tools-resource.component.js +19 -79
  93. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  94. package/dist/Admin/admin-identity-access.component.js +19 -79
  95. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  96. package/dist/Admin/admin-monitoring.component.js +19 -79
  97. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  98. package/dist/Admin/base-admin-container.component.d.ts +9 -7
  99. package/dist/Admin/base-admin-container.component.d.ts.map +1 -1
  100. package/dist/Admin/base-admin-container.component.js +26 -17
  101. package/dist/Admin/base-admin-container.component.js.map +1 -1
  102. package/dist/ApplicationRoles/application-roles-resource.component.js +92 -91
  103. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  104. package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
  105. package/dist/Archiving/components/archive-config-resource.component.js +24 -5
  106. package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
  107. package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
  108. package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
  109. package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
  110. package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
  111. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  112. package/dist/Communication/communication-logs-resource.component.js +80 -99
  113. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  114. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  115. package/dist/Communication/communication-monitor-resource.component.js +127 -106
  116. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  117. package/dist/Communication/communication-new-message-resource.component.d.ts +93 -0
  118. package/dist/Communication/communication-new-message-resource.component.d.ts.map +1 -0
  119. package/dist/Communication/communication-new-message-resource.component.js +661 -0
  120. package/dist/Communication/communication-new-message-resource.component.js.map +1 -0
  121. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  122. package/dist/Communication/communication-providers-resource.component.js +44 -45
  123. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  124. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  125. package/dist/Communication/communication-runs-resource.component.js +60 -58
  126. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  127. package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
  128. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  129. package/dist/Communication/communication-templates-resource.component.js +139 -162
  130. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  131. package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
  132. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  133. package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
  134. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  135. package/dist/Credentials/components/credentials-categories-resource.component.js +238 -266
  136. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  137. package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
  138. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  139. package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
  140. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  141. package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
  142. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  143. package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
  144. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  145. package/dist/Credentials/components/credentials-types-resource.component.js +290 -305
  146. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  147. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
  148. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
  149. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +41 -21
  150. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  151. package/dist/DatabaseDesigner/components/entity-list.component.d.ts +2 -0
  152. package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -1
  153. package/dist/DatabaseDesigner/components/entity-list.component.js +148 -155
  154. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  155. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  156. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  157. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +25 -1
  158. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  159. package/dist/DevTools/app-state-inspector.component.d.ts +5 -0
  160. package/dist/DevTools/app-state-inspector.component.d.ts.map +1 -1
  161. package/dist/DevTools/app-state-inspector.component.js +46 -72
  162. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  163. package/dist/DevTools/class-registry.component.js +88 -100
  164. package/dist/DevTools/class-registry.component.js.map +1 -1
  165. package/dist/DevTools/event-monitor.component.js +158 -168
  166. package/dist/DevTools/event-monitor.component.js.map +1 -1
  167. package/dist/DevTools/graphql-console.component.js +257 -264
  168. package/dist/DevTools/graphql-console.component.js.map +1 -1
  169. package/dist/DevTools/layout-inspector.component.d.ts +5 -0
  170. package/dist/DevTools/layout-inspector.component.d.ts.map +1 -1
  171. package/dist/DevTools/layout-inspector.component.js +46 -64
  172. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  173. package/dist/DevTools/lazy-module-status.component.js +75 -84
  174. package/dist/DevTools/lazy-module-status.component.js.map +1 -1
  175. package/dist/DevTools/settings-explorer.component.js +76 -85
  176. package/dist/DevTools/settings-explorer.component.js.map +1 -1
  177. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +2 -0
  178. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  179. package/dist/EntityAdmin/entity-admin-dashboard.component.js +24 -16
  180. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  181. package/dist/Home/home-dashboard.component.d.ts +6 -0
  182. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  183. package/dist/Home/home-dashboard.component.js +521 -485
  184. package/dist/Home/home-dashboard.component.js.map +1 -1
  185. package/dist/Integration/components/activity/activity.component.d.ts +8 -0
  186. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  187. package/dist/Integration/components/activity/activity.component.js +307 -318
  188. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  189. package/dist/Integration/components/connections/connections.component.js +654 -648
  190. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  191. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
  192. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  193. package/dist/Integration/components/overview/overview.component.js +182 -163
  194. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  195. package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
  196. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  197. package/dist/Integration/components/pipelines/pipelines.component.js +595 -606
  198. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  199. package/dist/Integration/components/schedules/schedules.component.js +230 -241
  200. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  201. package/dist/Integration/integration.module.d.ts +1 -1
  202. package/dist/Integration/integration.module.d.ts.map +1 -1
  203. package/dist/Integration/integration.module.js +28 -1
  204. package/dist/Integration/integration.module.js.map +1 -1
  205. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +5 -0
  206. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  207. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +1138 -1147
  208. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  209. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
  210. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  211. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +11 -0
  212. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
  213. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +684 -697
  214. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  215. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
  216. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
  217. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
  218. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  219. package/dist/Lists/components/lists-browse-resource.component.d.ts +120 -1
  220. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  221. package/dist/Lists/components/lists-browse-resource.component.js +1239 -610
  222. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  223. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  224. package/dist/Lists/components/lists-categories-resource.component.js +152 -160
  225. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  226. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  227. package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
  228. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  229. package/dist/Lists/components/lists-operations-resource.component.d.ts +133 -3
  230. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  231. package/dist/Lists/components/lists-operations-resource.component.js +1460 -272
  232. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  233. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts +29 -0
  234. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts.map +1 -0
  235. package/dist/Lists/components/lists-shared-with-me-resource.component.js +77 -0
  236. package/dist/Lists/components/lists-shared-with-me-resource.component.js.map +1 -0
  237. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts +6 -0
  238. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
  239. package/dist/Lists/components/venn-diagram/venn-diagram.component.js +35 -7
  240. package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
  241. package/dist/Lists/index.d.ts +1 -0
  242. package/dist/Lists/index.d.ts.map +1 -1
  243. package/dist/Lists/index.js +1 -0
  244. package/dist/Lists/index.js.map +1 -1
  245. package/dist/Lists/services/list-set-operations.service.d.ts +93 -2
  246. package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
  247. package/dist/Lists/services/list-set-operations.service.js +236 -10
  248. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  249. package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
  250. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  251. package/dist/MCP/mcp-dashboard.component.js +1248 -1338
  252. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  253. package/dist/MCP/mcp.module.d.ts +1 -1
  254. package/dist/MCP/mcp.module.d.ts.map +1 -1
  255. package/dist/MCP/mcp.module.js +34 -1
  256. package/dist/MCP/mcp.module.js.map +1 -1
  257. package/dist/Permissions/audit-log-resource.component.js +76 -85
  258. package/dist/Permissions/audit-log-resource.component.js.map +1 -1
  259. package/dist/Permissions/resource-access-resource.component.js +64 -69
  260. package/dist/Permissions/resource-access-resource.component.js.map +1 -1
  261. package/dist/Permissions/user-access-resource.component.js +63 -74
  262. package/dist/Permissions/user-access-resource.component.js.map +1 -1
  263. package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
  264. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  265. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
  266. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  267. package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
  268. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  269. package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
  270. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  271. package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
  272. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  273. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
  274. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  275. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
  276. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  277. package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
  278. package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
  279. package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
  280. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  281. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
  282. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  283. package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
  284. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  285. package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
  286. package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
  287. package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
  288. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  289. package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
  290. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  291. package/dist/Scheduling/scheduling-dashboard.component.js +259 -103
  292. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  293. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +13 -3
  294. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  295. package/dist/SystemDiagnostics/system-diagnostics.component.js +1009 -1264
  296. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  297. package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
  298. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  299. package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
  300. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  301. package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
  302. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  303. package/dist/Testing/components/testing-analytics.component.js +420 -393
  304. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  305. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
  306. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  307. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
  308. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  309. package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
  310. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  311. package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
  312. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  313. package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
  314. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  315. package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
  316. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  317. package/dist/Testing/components/testing-explorer.component.d.ts +38 -6
  318. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  319. package/dist/Testing/components/testing-explorer.component.js +679 -786
  320. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  321. package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
  322. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  323. package/dist/Testing/components/testing-review-resource.component.js +9 -12
  324. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  325. package/dist/Testing/components/testing-review.component.d.ts +3 -1
  326. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  327. package/dist/Testing/components/testing-review.component.js +310 -274
  328. package/dist/Testing/components/testing-review.component.js.map +1 -1
  329. package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
  330. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  331. package/dist/Testing/components/testing-runs-resource.component.js +16 -19
  332. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  333. package/dist/Testing/components/testing-runs.component.d.ts +3 -1
  334. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  335. package/dist/Testing/components/testing-runs.component.js +307 -273
  336. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  337. package/dist/Testing/testing-dashboard.component.d.ts +2 -0
  338. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  339. package/dist/Testing/testing-dashboard.component.js +114 -99
  340. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  341. package/dist/VersionHistory/components/diff-resource.component.js +185 -188
  342. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  343. package/dist/VersionHistory/components/graph-resource.component.js +154 -184
  344. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  345. package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
  346. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  347. package/dist/VersionHistory/components/labels-resource.component.js +350 -354
  348. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  349. package/dist/VersionHistory/components/restore-resource.component.js +163 -169
  350. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  351. package/dist/actions-dashboards.module.d.ts +15 -16
  352. package/dist/actions-dashboards.module.d.ts.map +1 -1
  353. package/dist/actions-dashboards.module.js +34 -11
  354. package/dist/actions-dashboards.module.js.map +1 -1
  355. package/dist/ai-dashboards.module.d.ts +45 -48
  356. package/dist/ai-dashboards.module.d.ts.map +1 -1
  357. package/dist/ai-dashboards.module.js +51 -10
  358. package/dist/ai-dashboards.module.js.map +1 -1
  359. package/dist/archiving-dashboards.module.d.ts +2 -1
  360. package/dist/archiving-dashboards.module.d.ts.map +1 -1
  361. package/dist/archiving-dashboards.module.js +12 -2
  362. package/dist/archiving-dashboards.module.js.map +1 -1
  363. package/dist/communication-dashboards.module.d.ts +9 -6
  364. package/dist/communication-dashboards.module.d.ts.map +1 -1
  365. package/dist/communication-dashboards.module.js +37 -7
  366. package/dist/communication-dashboards.module.js.map +1 -1
  367. package/dist/core-dashboards.module.d.ts +1 -1
  368. package/dist/core-dashboards.module.d.ts.map +1 -1
  369. package/dist/core-dashboards.module.js +46 -1
  370. package/dist/core-dashboards.module.js.map +1 -1
  371. package/dist/credentials-dashboards.module.d.ts +1 -1
  372. package/dist/credentials-dashboards.module.d.ts.map +1 -1
  373. package/dist/credentials-dashboards.module.js +28 -1
  374. package/dist/credentials-dashboards.module.js.map +1 -1
  375. package/dist/lists-dashboards.module.d.ts +10 -9
  376. package/dist/lists-dashboards.module.d.ts.map +1 -1
  377. package/dist/lists-dashboards.module.js +40 -2
  378. package/dist/lists-dashboards.module.js.map +1 -1
  379. package/dist/public-api.d.ts +3 -2
  380. package/dist/public-api.d.ts.map +1 -1
  381. package/dist/public-api.js +4 -3
  382. package/dist/public-api.js.map +1 -1
  383. package/dist/scheduling-dashboards.module.d.ts +1 -1
  384. package/dist/scheduling-dashboards.module.d.ts.map +1 -1
  385. package/dist/scheduling-dashboards.module.js +31 -1
  386. package/dist/scheduling-dashboards.module.js.map +1 -1
  387. package/dist/testing-dashboards.module.d.ts +8 -7
  388. package/dist/testing-dashboards.module.d.ts.map +1 -1
  389. package/dist/testing-dashboards.module.js +42 -0
  390. package/dist/testing-dashboards.module.js.map +1 -1
  391. package/package.json +53 -52
  392. package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
  393. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
  394. package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
  395. package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
  396. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
  397. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
  398. package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
  399. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
  400. package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
  401. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
  402. package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
  403. package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
  404. package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
  405. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
  406. package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
  407. package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
@@ -24,36 +24,44 @@ const _forTrack0 = ($index, $item) => $item.Integration.ID;
24
24
  const _forTrack1 = ($index, $item) => $item.Name;
25
25
  const _forTrack2 = ($index, $item) => $item.ID;
26
26
  const _forTrack3 = ($index, $item) => $item.Number;
27
- function ConnectionsComponent_Conditional_1_Conditional_9_Template(rf, ctx) { if (rf & 1) {
28
- i0.ɵɵelementStart(0, "div", 13);
29
- i0.ɵɵelement(1, "mj-loading", 16);
27
+ function ConnectionsComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
28
+ const _r1 = i0.ɵɵgetCurrentView();
29
+ i0.ɵɵelementStart(0, "button", 12);
30
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OpenWizard()); });
31
+ i0.ɵɵelement(1, "i", 13);
32
+ i0.ɵɵtext(2, " Add Integration ");
30
33
  i0.ɵɵelementEnd();
31
34
  } }
32
- function ConnectionsComponent_Conditional_1_Conditional_10_Template(rf, ctx) { if (rf & 1) {
33
- const _r3 = i0.ɵɵgetCurrentView();
35
+ function ConnectionsComponent_Conditional_7_Conditional_0_Template(rf, ctx) { if (rf & 1) {
34
36
  i0.ɵɵelementStart(0, "div", 14);
35
- i0.ɵɵelement(1, "i", 17);
37
+ i0.ɵɵelement(1, "mj-loading", 17);
38
+ i0.ɵɵelementEnd();
39
+ } }
40
+ function ConnectionsComponent_Conditional_7_Conditional_1_Template(rf, ctx) { if (rf & 1) {
41
+ const _r3 = i0.ɵɵgetCurrentView();
42
+ i0.ɵɵelementStart(0, "div", 15);
43
+ i0.ɵɵelement(1, "i", 18);
36
44
  i0.ɵɵelementStart(2, "h3");
37
45
  i0.ɵɵtext(3, "No integrations yet");
38
46
  i0.ɵɵelementEnd();
39
47
  i0.ɵɵelementStart(4, "p");
40
48
  i0.ɵɵtext(5, "Connect your first external system to start syncing data.");
41
49
  i0.ɵɵelementEnd();
42
- i0.ɵɵelementStart(6, "button", 18);
43
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_10_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenWizard()); });
44
- i0.ɵɵelement(7, "i", 12);
50
+ i0.ɵɵelementStart(6, "button", 19);
51
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_7_Conditional_1_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenWizard()); });
52
+ i0.ɵɵelement(7, "i", 13);
45
53
  i0.ɵɵtext(8, " Add Your First Integration ");
46
54
  i0.ɵɵelementEnd()();
47
55
  } }
48
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
49
- i0.ɵɵelement(0, "i", 47);
50
- } }
51
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_22_Conditional_2_Template(rf, ctx) { if (rf & 1) {
56
+ function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
52
57
  i0.ɵɵelement(0, "i", 48);
53
58
  } }
54
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_22_Template(rf, ctx) { if (rf & 1) {
55
- i0.ɵɵelementStart(0, "div", 46);
56
- i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_22_Conditional_1_Template, 1, 0, "i", 47)(2, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_22_Conditional_2_Template, 1, 0, "i", 48);
59
+ function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_22_Conditional_2_Template(rf, ctx) { if (rf & 1) {
60
+ i0.ɵɵelement(0, "i", 49);
61
+ } }
62
+ function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_22_Template(rf, ctx) { if (rf & 1) {
63
+ i0.ɵɵelementStart(0, "div", 47);
64
+ i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_22_Conditional_1_Template, 1, 0, "i", 48)(2, ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_22_Conditional_2_Template, 1, 0, "i", 49);
57
65
  i0.ɵɵelementStart(3, "span");
58
66
  i0.ɵɵtext(4);
59
67
  i0.ɵɵelementEnd()();
@@ -65,26 +73,26 @@ function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_22_
65
73
  i0.ɵɵadvance(3);
66
74
  i0.ɵɵtextInterpolate(testResult_r7.Message);
67
75
  } }
68
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_23_Conditional_7_Template(rf, ctx) { if (rf & 1) {
69
- i0.ɵɵelement(0, "i", 41);
76
+ function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_23_Conditional_7_Template(rf, ctx) { if (rf & 1) {
77
+ i0.ɵɵelement(0, "i", 42);
70
78
  i0.ɵɵtext(1, " Deleting... ");
71
79
  } }
72
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_23_Conditional_8_Template(rf, ctx) { if (rf & 1) {
80
+ function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_23_Conditional_8_Template(rf, ctx) { if (rf & 1) {
73
81
  i0.ɵɵtext(0, " Delete ");
74
82
  } }
75
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_23_Template(rf, ctx) { if (rf & 1) {
83
+ function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_23_Template(rf, ctx) { if (rf & 1) {
76
84
  const _r8 = i0.ɵɵgetCurrentView();
77
- i0.ɵɵelementStart(0, "div", 38)(1, "div", 49);
78
- i0.ɵɵelement(2, "i", 50);
79
- i0.ɵɵelementStart(3, "span", 51);
85
+ i0.ɵɵelementStart(0, "div", 39)(1, "div", 50);
86
+ i0.ɵɵelement(2, "i", 51);
87
+ i0.ɵɵelementStart(3, "span", 52);
80
88
  i0.ɵɵtext(4, "Delete this integration and all its entity maps?");
81
89
  i0.ɵɵelementEnd();
82
- i0.ɵɵelementStart(5, "div", 52)(6, "button", 53);
83
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_23_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r8); const summary_r6 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ConfirmDelete(summary_r6.Integration.ID)); });
84
- i0.ɵɵconditionalCreate(7, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_23_Conditional_7_Template, 2, 0)(8, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_23_Conditional_8_Template, 1, 0);
90
+ i0.ɵɵelementStart(5, "div", 53)(6, "button", 54);
91
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_23_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r8); const summary_r6 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ConfirmDelete(summary_r6.Integration.ID)); });
92
+ i0.ɵɵconditionalCreate(7, ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_23_Conditional_7_Template, 2, 0)(8, ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_23_Conditional_8_Template, 1, 0);
85
93
  i0.ɵɵelementEnd();
86
- i0.ɵɵelementStart(9, "button", 42);
87
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_23_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.CancelDelete()); });
94
+ i0.ɵɵelementStart(9, "button", 43);
95
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_23_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.CancelDelete()); });
88
96
  i0.ɵɵtext(10, " Cancel ");
89
97
  i0.ɵɵelementEnd()()()();
90
98
  } if (rf & 2) {
@@ -94,70 +102,70 @@ function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_23_
94
102
  i0.ɵɵadvance();
95
103
  i0.ɵɵconditional(ctx_r1.IsDeleting ? 7 : 8);
96
104
  } }
97
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_26_Template(rf, ctx) { if (rf & 1) {
98
- i0.ɵɵelement(0, "i", 41);
105
+ function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_26_Template(rf, ctx) { if (rf & 1) {
106
+ i0.ɵɵelement(0, "i", 42);
99
107
  } }
100
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_27_Template(rf, ctx) { if (rf & 1) {
108
+ function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_27_Template(rf, ctx) { if (rf & 1) {
101
109
  i0.ɵɵtext(0, " Test ");
102
110
  } }
103
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_2_Template(rf, ctx) { if (rf & 1) {
104
- i0.ɵɵelement(0, "i", 41);
111
+ function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_30_Conditional_2_Template(rf, ctx) { if (rf & 1) {
112
+ i0.ɵɵelement(0, "i", 42);
105
113
  i0.ɵɵtext(1, " Syncing... ");
106
114
  } }
107
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_3_Template(rf, ctx) { if (rf & 1) {
108
- i0.ɵɵelement(0, "i", 36);
115
+ function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_30_Conditional_3_Template(rf, ctx) { if (rf & 1) {
116
+ i0.ɵɵelement(0, "i", 37);
109
117
  i0.ɵɵtext(1, " Sync ");
110
- i0.ɵɵelement(2, "i", 56);
118
+ i0.ɵɵelement(2, "i", 57);
111
119
  } }
112
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_4_Template(rf, ctx) { if (rf & 1) {
120
+ function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_30_Conditional_4_Template(rf, ctx) { if (rf & 1) {
113
121
  const _r10 = i0.ɵɵgetCurrentView();
114
- i0.ɵɵelementStart(0, "div", 55)(1, "div", 57)(2, "span", 58);
122
+ i0.ɵɵelementStart(0, "div", 56)(1, "div", 58)(2, "span", 59);
115
123
  i0.ɵɵtext(3, "Pull (External \u2192 MJ)");
116
124
  i0.ɵɵelementEnd();
117
- i0.ɵɵelementStart(4, "button", 59);
118
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_4_Template_button_click_4_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(summary_r6.Integration.ID, false, "Pull", $event)); });
119
- i0.ɵɵelement(5, "i", 60);
125
+ i0.ɵɵelementStart(4, "button", 60);
126
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_30_Conditional_4_Template_button_click_4_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(summary_r6.Integration.ID, false, "Pull", $event)); });
127
+ i0.ɵɵelement(5, "i", 61);
120
128
  i0.ɵɵtext(6, " Incremental Pull ");
121
129
  i0.ɵɵelementEnd();
122
- i0.ɵɵelementStart(7, "button", 59);
123
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_4_Template_button_click_7_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(summary_r6.Integration.ID, true, "Pull", $event)); });
124
- i0.ɵɵelement(8, "i", 61);
130
+ i0.ɵɵelementStart(7, "button", 60);
131
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_30_Conditional_4_Template_button_click_7_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(summary_r6.Integration.ID, true, "Pull", $event)); });
132
+ i0.ɵɵelement(8, "i", 62);
125
133
  i0.ɵɵtext(9, " Full Pull ");
126
134
  i0.ɵɵelementEnd()();
127
- i0.ɵɵelementStart(10, "div", 57)(11, "span", 58);
135
+ i0.ɵɵelementStart(10, "div", 58)(11, "span", 59);
128
136
  i0.ɵɵtext(12, "Push (MJ \u2192 External)");
129
137
  i0.ɵɵelementEnd();
130
- i0.ɵɵelementStart(13, "button", 59);
131
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_4_Template_button_click_13_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(summary_r6.Integration.ID, false, "Push", $event)); });
132
- i0.ɵɵelement(14, "i", 62);
138
+ i0.ɵɵelementStart(13, "button", 60);
139
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_30_Conditional_4_Template_button_click_13_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(summary_r6.Integration.ID, false, "Push", $event)); });
140
+ i0.ɵɵelement(14, "i", 63);
133
141
  i0.ɵɵtext(15, " Incremental Push ");
134
142
  i0.ɵɵelementEnd();
135
- i0.ɵɵelementStart(16, "button", 59);
136
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_4_Template_button_click_16_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(summary_r6.Integration.ID, true, "Push", $event)); });
137
- i0.ɵɵelement(17, "i", 61);
143
+ i0.ɵɵelementStart(16, "button", 60);
144
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_30_Conditional_4_Template_button_click_16_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(summary_r6.Integration.ID, true, "Push", $event)); });
145
+ i0.ɵɵelement(17, "i", 62);
138
146
  i0.ɵɵtext(18, " Full Push ");
139
147
  i0.ɵɵelementEnd()();
140
- i0.ɵɵelementStart(19, "div", 57)(20, "span", 58);
148
+ i0.ɵɵelementStart(19, "div", 58)(20, "span", 59);
141
149
  i0.ɵɵtext(21, "Bidirectional");
142
150
  i0.ɵɵelementEnd();
143
- i0.ɵɵelementStart(22, "button", 59);
144
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_4_Template_button_click_22_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(summary_r6.Integration.ID, false, "Bidirectional", $event)); });
145
- i0.ɵɵelement(23, "i", 36);
151
+ i0.ɵɵelementStart(22, "button", 60);
152
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_30_Conditional_4_Template_button_click_22_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(summary_r6.Integration.ID, false, "Bidirectional", $event)); });
153
+ i0.ɵɵelement(23, "i", 37);
146
154
  i0.ɵɵtext(24, " Incremental Both ");
147
155
  i0.ɵɵelementEnd();
148
- i0.ɵɵelementStart(25, "button", 59);
149
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_4_Template_button_click_25_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(summary_r6.Integration.ID, true, "Bidirectional", $event)); });
150
- i0.ɵɵelement(26, "i", 61);
156
+ i0.ɵɵelementStart(25, "button", 60);
157
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_30_Conditional_4_Template_button_click_25_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(summary_r6.Integration.ID, true, "Bidirectional", $event)); });
158
+ i0.ɵɵelement(26, "i", 62);
151
159
  i0.ɵɵtext(27, " Full Both ");
152
160
  i0.ɵɵelementEnd()()();
153
161
  } }
154
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Template(rf, ctx) { if (rf & 1) {
162
+ function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_30_Template(rf, ctx) { if (rf & 1) {
155
163
  const _r9 = i0.ɵɵgetCurrentView();
156
- i0.ɵɵelementStart(0, "div", 43)(1, "button", 54);
157
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r9); const summary_r6 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ToggleSyncMenu(summary_r6.Integration.ID, $event)); });
158
- i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_2_Template, 2, 0)(3, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_3_Template, 3, 0);
164
+ i0.ɵɵelementStart(0, "div", 44)(1, "button", 55);
165
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_30_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r9); const summary_r6 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ToggleSyncMenu(summary_r6.Integration.ID, $event)); });
166
+ i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_30_Conditional_2_Template, 2, 0)(3, ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_30_Conditional_3_Template, 3, 0);
159
167
  i0.ɵɵelementEnd();
160
- i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_4_Template, 28, 0, "div", 55);
168
+ i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_30_Conditional_4_Template, 28, 0, "div", 56);
161
169
  i0.ɵɵelementEnd();
162
170
  } if (rf & 2) {
163
171
  const summary_r6 = i0.ɵɵnextContext().$implicit;
@@ -169,50 +177,50 @@ function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_
169
177
  i0.ɵɵadvance(2);
170
178
  i0.ɵɵconditional(ctx_r1.SyncMenuIntegrationID === summary_r6.Integration.ID ? 4 : -1);
171
179
  } }
172
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Template(rf, ctx) { if (rf & 1) {
180
+ function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
173
181
  const _r5 = i0.ɵɵgetCurrentView();
174
- i0.ɵɵelementStart(0, "div", 19)(1, "div", 24);
175
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Template_div_click_1_listener() { const summary_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SelectIntegrationCard(summary_r6)); });
176
- i0.ɵɵelementStart(2, "div", 25)(3, "div", 26);
177
- i0.ɵɵelement(4, "i", 27);
182
+ i0.ɵɵelementStart(0, "div", 20)(1, "div", 25);
183
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Template_div_click_1_listener() { const summary_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SelectIntegrationCard(summary_r6)); });
184
+ i0.ɵɵelementStart(2, "div", 26)(3, "div", 27);
185
+ i0.ɵɵelement(4, "i", 28);
178
186
  i0.ɵɵelementEnd();
179
187
  i0.ɵɵelementStart(5, "span");
180
188
  i0.ɵɵtext(6);
181
189
  i0.ɵɵelementEnd()();
182
- i0.ɵɵelementStart(7, "div", 28)(8, "div", 29);
190
+ i0.ɵɵelementStart(7, "div", 29)(8, "div", 30);
183
191
  i0.ɵɵtext(9);
184
192
  i0.ɵɵelementEnd();
185
- i0.ɵɵelementStart(10, "div", 30);
193
+ i0.ɵɵelementStart(10, "div", 31);
186
194
  i0.ɵɵtext(11);
187
195
  i0.ɵɵelementEnd();
188
- i0.ɵɵelementStart(12, "div", 31)(13, "span", 32);
196
+ i0.ɵɵelementStart(12, "div", 32)(13, "span", 33);
189
197
  i0.ɵɵtext(14);
190
198
  i0.ɵɵelementEnd();
191
- i0.ɵɵelementStart(15, "span", 33);
199
+ i0.ɵɵelementStart(15, "span", 34);
192
200
  i0.ɵɵtext(16, "\u00B7");
193
201
  i0.ɵɵelementEnd();
194
- i0.ɵɵelementStart(17, "span", 34);
202
+ i0.ɵɵelementStart(17, "span", 35);
195
203
  i0.ɵɵtext(18);
196
204
  i0.ɵɵelementEnd()();
197
- i0.ɵɵelementStart(19, "div", 35);
198
- i0.ɵɵelement(20, "i", 36);
205
+ i0.ɵɵelementStart(19, "div", 36);
206
+ i0.ɵɵelement(20, "i", 37);
199
207
  i0.ɵɵtext(21);
200
208
  i0.ɵɵelementEnd();
201
- i0.ɵɵconditionalCreate(22, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_22_Template, 5, 6, "div", 37);
209
+ i0.ɵɵconditionalCreate(22, ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_22_Template, 5, 6, "div", 38);
202
210
  i0.ɵɵelementEnd()();
203
- i0.ɵɵconditionalCreate(23, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_23_Template, 11, 2, "div", 38);
204
- i0.ɵɵelementStart(24, "div", 39)(25, "button", 40);
205
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Template_button_click_25_listener() { const summary_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.TestExistingConnection(summary_r6.Integration.ID)); });
206
- i0.ɵɵconditionalCreate(26, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_26_Template, 1, 0, "i", 41)(27, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_27_Template, 1, 0);
211
+ i0.ɵɵconditionalCreate(23, ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_23_Template, 11, 2, "div", 39);
212
+ i0.ɵɵelementStart(24, "div", 40)(25, "button", 41);
213
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Template_button_click_25_listener() { const summary_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.TestExistingConnection(summary_r6.Integration.ID)); });
214
+ i0.ɵɵconditionalCreate(26, ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_26_Template, 1, 0, "i", 42)(27, ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_27_Template, 1, 0);
207
215
  i0.ɵɵelementEnd();
208
- i0.ɵɵelementStart(28, "button", 42);
209
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Template_button_click_28_listener() { const summary_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMenuAction("edit", summary_r6)); });
216
+ i0.ɵɵelementStart(28, "button", 43);
217
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Template_button_click_28_listener() { const summary_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMenuAction("edit", summary_r6)); });
210
218
  i0.ɵɵtext(29, " Configure ");
211
219
  i0.ɵɵelementEnd();
212
- i0.ɵɵconditionalCreate(30, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Template, 5, 3, "div", 43);
213
- i0.ɵɵelementStart(31, "button", 44);
214
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Template_button_click_31_listener() { const summary_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMenuAction("delete", summary_r6)); });
215
- i0.ɵɵelement(32, "i", 45);
220
+ i0.ɵɵconditionalCreate(30, ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_30_Template, 5, 3, "div", 44);
221
+ i0.ɵɵelementStart(31, "button", 45);
222
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Template_button_click_31_listener() { const summary_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMenuAction("delete", summary_r6)); });
223
+ i0.ɵɵelement(32, "i", 46);
216
224
  i0.ɵɵelementEnd()()();
217
225
  } if (rf & 2) {
218
226
  let tmp_21_0;
@@ -247,16 +255,16 @@ function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Template(rf, ct
247
255
  i0.ɵɵadvance(4);
248
256
  i0.ɵɵconditional(ctx_r1.IsConnectionActive(summary_r6) ? 30 : -1);
249
257
  } }
250
- function ConnectionsComponent_Conditional_1_Conditional_11_Template(rf, ctx) { if (rf & 1) {
258
+ function ConnectionsComponent_Conditional_7_Conditional_2_Template(rf, ctx) { if (rf & 1) {
251
259
  const _r4 = i0.ɵɵgetCurrentView();
252
- i0.ɵɵelementStart(0, "div", 15);
253
- i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Template, 33, 17, "div", 19, _forTrack0);
254
- i0.ɵɵelementStart(3, "div", 20);
255
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenWizard()); });
256
- i0.ɵɵelementStart(4, "div", 21)(5, "div", 22);
257
- i0.ɵɵelement(6, "i", 12);
258
- i0.ɵɵelementEnd();
259
- i0.ɵɵelementStart(7, "span", 23);
260
+ i0.ɵɵelementStart(0, "div", 16);
261
+ i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_7_Conditional_2_For_2_Template, 33, 17, "div", 20, _forTrack0);
262
+ i0.ɵɵelementStart(3, "div", 21);
263
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_7_Conditional_2_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenWizard()); });
264
+ i0.ɵɵelementStart(4, "div", 22)(5, "div", 23);
265
+ i0.ɵɵelement(6, "i", 13);
266
+ i0.ɵɵelementEnd();
267
+ i0.ɵɵelementStart(7, "span", 24);
260
268
  i0.ɵɵtext(8, "Add Integration");
261
269
  i0.ɵɵelementEnd()()()();
262
270
  } if (rf & 2) {
@@ -264,100 +272,85 @@ function ConnectionsComponent_Conditional_1_Conditional_11_Template(rf, ctx) { i
264
272
  i0.ɵɵadvance();
265
273
  i0.ɵɵrepeater(ctx_r1.Connections);
266
274
  } }
267
- function ConnectionsComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
268
- const _r1 = i0.ɵɵgetCurrentView();
269
- i0.ɵɵelementStart(0, "div", 7)(1, "div", 8)(2, "h2", 9);
270
- i0.ɵɵtext(3, "Integrations");
271
- i0.ɵɵelementEnd();
272
- i0.ɵɵelementStart(4, "span", 10);
273
- i0.ɵɵtext(5);
274
- i0.ɵɵelementEnd()();
275
- i0.ɵɵelementStart(6, "button", 11);
276
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OpenWizard()); });
277
- i0.ɵɵelement(7, "i", 12);
278
- i0.ɵɵtext(8, " Add Integration ");
279
- i0.ɵɵelementEnd()();
280
- i0.ɵɵconditionalCreate(9, ConnectionsComponent_Conditional_1_Conditional_9_Template, 2, 0, "div", 13);
281
- i0.ɵɵconditionalCreate(10, ConnectionsComponent_Conditional_1_Conditional_10_Template, 9, 0, "div", 14);
282
- i0.ɵɵconditionalCreate(11, ConnectionsComponent_Conditional_1_Conditional_11_Template, 9, 0, "div", 15);
275
+ function ConnectionsComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
276
+ i0.ɵɵconditionalCreate(0, ConnectionsComponent_Conditional_7_Conditional_0_Template, 2, 0, "div", 14);
277
+ i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_7_Conditional_1_Template, 9, 0, "div", 15);
278
+ i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_7_Conditional_2_Template, 9, 0, "div", 16);
283
279
  } if (rf & 2) {
284
280
  const ctx_r1 = i0.ɵɵnextContext();
285
- i0.ɵɵadvance(5);
286
- i0.ɵɵtextInterpolate2("", ctx_r1.Connections.length, " integration", ctx_r1.Connections.length !== 1 ? "s" : "");
287
- i0.ɵɵadvance(4);
288
- i0.ɵɵconditional(ctx_r1.IsLoading ? 9 : -1);
281
+ i0.ɵɵconditional(ctx_r1.IsLoading ? 0 : -1);
289
282
  i0.ɵɵadvance();
290
- i0.ɵɵconditional(!ctx_r1.IsLoading && ctx_r1.Connections.length === 0 ? 10 : -1);
283
+ i0.ɵɵconditional(!ctx_r1.IsLoading && ctx_r1.Connections.length === 0 ? 1 : -1);
291
284
  i0.ɵɵadvance();
292
- i0.ɵɵconditional(!ctx_r1.IsLoading && ctx_r1.Connections.length > 0 ? 11 : -1);
285
+ i0.ɵɵconditional(!ctx_r1.IsLoading && ctx_r1.Connections.length > 0 ? 2 : -1);
293
286
  } }
294
- function ConnectionsComponent_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
287
+ function ConnectionsComponent_Conditional_8_Conditional_1_Template(rf, ctx) { if (rf & 1) {
295
288
  const _r11 = i0.ɵɵgetCurrentView();
296
- i0.ɵɵelementStart(0, "app-visual-field-editor", 64);
297
- i0.ɵɵlistener("Close", function ConnectionsComponent_Conditional_2_Conditional_1_Template_app_visual_field_editor_Close_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.CloseEntityMapEditor()); });
289
+ i0.ɵɵelementStart(0, "app-visual-field-editor", 65);
290
+ i0.ɵɵlistener("Close", function ConnectionsComponent_Conditional_8_Conditional_1_Template_app_visual_field_editor_Close_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.CloseEntityMapEditor()); });
298
291
  i0.ɵɵelementEnd();
299
292
  } if (rf & 2) {
300
293
  const ctx_r1 = i0.ɵɵnextContext(2);
301
294
  i0.ɵɵproperty("EntityMap", ctx_r1.EditorEntityMap)("CompanyIntegrationID", ctx_r1.SelectedSummary.Integration.ID)("RunViewProvider", ctx_r1.RunViewToUse);
302
295
  } }
303
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_2_Template(rf, ctx) { if (rf & 1) {
304
- i0.ɵɵelement(0, "i", 41);
296
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_21_Conditional_2_Template(rf, ctx) { if (rf & 1) {
297
+ i0.ɵɵelement(0, "i", 42);
305
298
  i0.ɵɵtext(1, " Syncing... ");
306
299
  } }
307
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_3_Template(rf, ctx) { if (rf & 1) {
308
- i0.ɵɵelement(0, "i", 36);
300
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_21_Conditional_3_Template(rf, ctx) { if (rf & 1) {
301
+ i0.ɵɵelement(0, "i", 37);
309
302
  i0.ɵɵtext(1, " Sync ");
310
- i0.ɵɵelement(2, "i", 56);
303
+ i0.ɵɵelement(2, "i", 57);
311
304
  } }
312
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_4_Template(rf, ctx) { if (rf & 1) {
305
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_21_Conditional_4_Template(rf, ctx) { if (rf & 1) {
313
306
  const _r14 = i0.ɵɵgetCurrentView();
314
- i0.ɵɵelementStart(0, "div", 96)(1, "div", 57)(2, "span", 58);
307
+ i0.ɵɵelementStart(0, "div", 97)(1, "div", 58)(2, "span", 59);
315
308
  i0.ɵɵtext(3, "Pull (External \u2192 MJ)");
316
309
  i0.ɵɵelementEnd();
317
- i0.ɵɵelementStart(4, "button", 59);
318
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_4_Template_button_click_4_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(ctx_r1.SelectedSummary.Integration.ID, false, "Pull", $event)); });
319
- i0.ɵɵelement(5, "i", 60);
310
+ i0.ɵɵelementStart(4, "button", 60);
311
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_21_Conditional_4_Template_button_click_4_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(ctx_r1.SelectedSummary.Integration.ID, false, "Pull", $event)); });
312
+ i0.ɵɵelement(5, "i", 61);
320
313
  i0.ɵɵtext(6, " Incremental Pull ");
321
314
  i0.ɵɵelementEnd();
322
- i0.ɵɵelementStart(7, "button", 59);
323
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_4_Template_button_click_7_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(ctx_r1.SelectedSummary.Integration.ID, true, "Pull", $event)); });
324
- i0.ɵɵelement(8, "i", 61);
315
+ i0.ɵɵelementStart(7, "button", 60);
316
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_21_Conditional_4_Template_button_click_7_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(ctx_r1.SelectedSummary.Integration.ID, true, "Pull", $event)); });
317
+ i0.ɵɵelement(8, "i", 62);
325
318
  i0.ɵɵtext(9, " Full Pull ");
326
319
  i0.ɵɵelementEnd()();
327
- i0.ɵɵelementStart(10, "div", 57)(11, "span", 58);
320
+ i0.ɵɵelementStart(10, "div", 58)(11, "span", 59);
328
321
  i0.ɵɵtext(12, "Push (MJ \u2192 External)");
329
322
  i0.ɵɵelementEnd();
330
- i0.ɵɵelementStart(13, "button", 59);
331
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_4_Template_button_click_13_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(ctx_r1.SelectedSummary.Integration.ID, false, "Push", $event)); });
332
- i0.ɵɵelement(14, "i", 62);
323
+ i0.ɵɵelementStart(13, "button", 60);
324
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_21_Conditional_4_Template_button_click_13_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(ctx_r1.SelectedSummary.Integration.ID, false, "Push", $event)); });
325
+ i0.ɵɵelement(14, "i", 63);
333
326
  i0.ɵɵtext(15, " Incremental Push ");
334
327
  i0.ɵɵelementEnd();
335
- i0.ɵɵelementStart(16, "button", 59);
336
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_4_Template_button_click_16_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(ctx_r1.SelectedSummary.Integration.ID, true, "Push", $event)); });
337
- i0.ɵɵelement(17, "i", 61);
328
+ i0.ɵɵelementStart(16, "button", 60);
329
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_21_Conditional_4_Template_button_click_16_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(ctx_r1.SelectedSummary.Integration.ID, true, "Push", $event)); });
330
+ i0.ɵɵelement(17, "i", 62);
338
331
  i0.ɵɵtext(18, " Full Push ");
339
332
  i0.ɵɵelementEnd()();
340
- i0.ɵɵelementStart(19, "div", 57)(20, "span", 58);
333
+ i0.ɵɵelementStart(19, "div", 58)(20, "span", 59);
341
334
  i0.ɵɵtext(21, "Bidirectional");
342
335
  i0.ɵɵelementEnd();
343
- i0.ɵɵelementStart(22, "button", 59);
344
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_4_Template_button_click_22_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(ctx_r1.SelectedSummary.Integration.ID, false, "Bidirectional", $event)); });
345
- i0.ɵɵelement(23, "i", 36);
336
+ i0.ɵɵelementStart(22, "button", 60);
337
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_21_Conditional_4_Template_button_click_22_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(ctx_r1.SelectedSummary.Integration.ID, false, "Bidirectional", $event)); });
338
+ i0.ɵɵelement(23, "i", 37);
346
339
  i0.ɵɵtext(24, " Incremental Both ");
347
340
  i0.ɵɵelementEnd();
348
- i0.ɵɵelementStart(25, "button", 59);
349
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_4_Template_button_click_25_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(ctx_r1.SelectedSummary.Integration.ID, true, "Bidirectional", $event)); });
350
- i0.ɵɵelement(26, "i", 61);
341
+ i0.ɵɵelementStart(25, "button", 60);
342
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_21_Conditional_4_Template_button_click_25_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(ctx_r1.SelectedSummary.Integration.ID, true, "Bidirectional", $event)); });
343
+ i0.ɵɵelement(26, "i", 62);
351
344
  i0.ɵɵtext(27, " Full Both ");
352
345
  i0.ɵɵelementEnd()()();
353
346
  } }
354
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
347
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
355
348
  const _r13 = i0.ɵɵgetCurrentView();
356
- i0.ɵɵelementStart(0, "div", 43)(1, "button", 54);
357
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ToggleSyncMenu(ctx_r1.SelectedSummary.Integration.ID, $event)); });
358
- i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_2_Template, 2, 0)(3, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_3_Template, 3, 0);
349
+ i0.ɵɵelementStart(0, "div", 44)(1, "button", 55);
350
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_21_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ToggleSyncMenu(ctx_r1.SelectedSummary.Integration.ID, $event)); });
351
+ i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_21_Conditional_2_Template, 2, 0)(3, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_21_Conditional_3_Template, 3, 0);
359
352
  i0.ɵɵelementEnd();
360
- i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_4_Template, 28, 0, "div", 96);
353
+ i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_21_Conditional_4_Template, 28, 0, "div", 97);
361
354
  i0.ɵɵelementEnd();
362
355
  } if (rf & 2) {
363
356
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -368,35 +361,35 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Templat
368
361
  i0.ɵɵadvance(2);
369
362
  i0.ɵɵconditional(ctx_r1.SyncMenuIntegrationID === ctx_r1.SelectedSummary.Integration.ID ? 4 : -1);
370
363
  } }
371
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_28_Template(rf, ctx) { if (rf & 1) {
364
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_28_Template(rf, ctx) { if (rf & 1) {
372
365
  const _r15 = i0.ɵɵgetCurrentView();
373
- i0.ɵɵelementStart(0, "mj-scheduled-job-summary", 97);
374
- i0.ɵɵlistener("EditRequested", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_28_Template_mj_scheduled_job_summary_EditRequested_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenSchedulePanel()); });
366
+ i0.ɵɵelementStart(0, "mj-scheduled-job-summary", 98);
367
+ i0.ɵɵlistener("EditRequested", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_28_Template_mj_scheduled_job_summary_EditRequested_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenSchedulePanel()); });
375
368
  i0.ɵɵelementEnd();
376
369
  } if (rf & 2) {
377
370
  const ctx_r1 = i0.ɵɵnextContext(3);
378
371
  i0.ɵɵproperty("ScheduledJobID", ctx_r1.ScheduledJobID);
379
372
  } }
380
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_29_Template(rf, ctx) { if (rf & 1) {
373
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_29_Template(rf, ctx) { if (rf & 1) {
381
374
  const _r16 = i0.ɵɵgetCurrentView();
382
- i0.ɵɵelementStart(0, "div", 80)(1, "span", 98);
375
+ i0.ɵɵelementStart(0, "div", 81)(1, "span", 99);
383
376
  i0.ɵɵtext(2, "No sync schedule configured");
384
377
  i0.ɵɵelementEnd();
385
- i0.ɵɵelementStart(3, "button", 99);
386
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_29_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenSchedulePanel()); });
387
- i0.ɵɵelement(4, "i", 12);
378
+ i0.ɵɵelementStart(3, "button", 100);
379
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_29_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenSchedulePanel()); });
380
+ i0.ɵɵelement(4, "i", 13);
388
381
  i0.ɵɵtext(5, " Schedule Sync ");
389
382
  i0.ɵɵelementEnd()();
390
383
  } }
391
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_51_Conditional_1_Template(rf, ctx) { if (rf & 1) {
392
- i0.ɵɵelement(0, "i", 47);
393
- } }
394
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_51_Conditional_2_Template(rf, ctx) { if (rf & 1) {
384
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_51_Conditional_1_Template(rf, ctx) { if (rf & 1) {
395
385
  i0.ɵɵelement(0, "i", 48);
396
386
  } }
397
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_51_Template(rf, ctx) { if (rf & 1) {
398
- i0.ɵɵelementStart(0, "div", 100);
399
- i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_51_Conditional_1_Template, 1, 0, "i", 47)(2, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_51_Conditional_2_Template, 1, 0, "i", 48);
387
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_51_Conditional_2_Template(rf, ctx) { if (rf & 1) {
388
+ i0.ɵɵelement(0, "i", 49);
389
+ } }
390
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_51_Template(rf, ctx) { if (rf & 1) {
391
+ i0.ɵɵelementStart(0, "div", 101);
392
+ i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_51_Conditional_1_Template, 1, 0, "i", 48)(2, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_51_Conditional_2_Template, 1, 0, "i", 49);
400
393
  i0.ɵɵelementStart(3, "span");
401
394
  i0.ɵɵtext(4);
402
395
  i0.ɵɵelementEnd()();
@@ -408,8 +401,8 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_51_Templat
408
401
  i0.ɵɵadvance(3);
409
402
  i0.ɵɵtextInterpolate(ctx_r1.SyncResult.Message || (ctx_r1.SyncResult.Success ? "Sync completed successfully" : "Sync failed"));
410
403
  } }
411
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_For_13_Template(rf, ctx) { if (rf & 1) {
412
- i0.ɵɵelementStart(0, "option", 107);
404
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_For_13_Template(rf, ctx) { if (rf & 1) {
405
+ i0.ɵɵelementStart(0, "option", 108);
413
406
  i0.ɵɵtext(1);
414
407
  i0.ɵɵelementEnd();
415
408
  } if (rf & 2) {
@@ -418,17 +411,17 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_For_13_
418
411
  i0.ɵɵadvance();
419
412
  i0.ɵɵtextInterpolate(schema_r18);
420
413
  } }
421
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_26_Template(rf, ctx) { if (rf & 1) {
422
- i0.ɵɵelement(0, "i", 41);
414
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Conditional_26_Template(rf, ctx) { if (rf & 1) {
415
+ i0.ɵɵelement(0, "i", 42);
423
416
  i0.ɵɵtext(1, " Mapping... ");
424
417
  } }
425
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_27_Template(rf, ctx) { if (rf & 1) {
426
- i0.ɵɵelement(0, "i", 92);
418
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Conditional_27_Template(rf, ctx) { if (rf & 1) {
419
+ i0.ɵɵelement(0, "i", 93);
427
420
  i0.ɵɵtext(1, " Auto-Map ");
428
421
  } }
429
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_30_Conditional_1_Template(rf, ctx) { if (rf & 1) {
430
- i0.ɵɵelementStart(0, "div", 121);
431
- i0.ɵɵelement(1, "i", 47);
422
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Conditional_30_Conditional_1_Template(rf, ctx) { if (rf & 1) {
423
+ i0.ɵɵelementStart(0, "div", 122);
424
+ i0.ɵɵelement(1, "i", 48);
432
425
  i0.ɵɵtext(2);
433
426
  i0.ɵɵelementEnd();
434
427
  } if (rf & 2) {
@@ -436,15 +429,15 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditi
436
429
  i0.ɵɵadvance(2);
437
430
  i0.ɵɵtextInterpolate4(" Created ", ctx_r1.AutoMapResult.EntityMapsCreated, " entity map", ctx_r1.AutoMapResult.EntityMapsCreated !== 1 ? "s" : "", " with ", ctx_r1.AutoMapResult.FieldMapsCreated, " field map", ctx_r1.AutoMapResult.FieldMapsCreated !== 1 ? "s" : "", " ");
438
431
  } }
439
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_30_Conditional_2_Template(rf, ctx) { if (rf & 1) {
440
- i0.ɵɵelementStart(0, "div", 121);
441
- i0.ɵɵelement(1, "i", 123);
432
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Conditional_30_Conditional_2_Template(rf, ctx) { if (rf & 1) {
433
+ i0.ɵɵelementStart(0, "div", 122);
434
+ i0.ɵɵelement(1, "i", 124);
442
435
  i0.ɵɵtext(2, " All entities in this schema are already mapped. ");
443
436
  i0.ɵɵelementEnd();
444
437
  } }
445
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_30_Conditional_3_For_2_Template(rf, ctx) { if (rf & 1) {
446
- i0.ɵɵelementStart(0, "div", 124);
447
- i0.ɵɵelement(1, "i", 125);
438
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Conditional_30_Conditional_3_For_2_Template(rf, ctx) { if (rf & 1) {
439
+ i0.ɵɵelementStart(0, "div", 125);
440
+ i0.ɵɵelement(1, "i", 126);
448
441
  i0.ɵɵtext(2);
449
442
  i0.ɵɵelementEnd();
450
443
  } if (rf & 2) {
@@ -452,19 +445,19 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditi
452
445
  i0.ɵɵadvance(2);
453
446
  i0.ɵɵtextInterpolate1(" ", err_r19);
454
447
  } }
455
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_30_Conditional_3_Template(rf, ctx) { if (rf & 1) {
456
- i0.ɵɵelementStart(0, "div", 122);
457
- i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_30_Conditional_3_For_2_Template, 3, 1, "div", 124, i0.ɵɵrepeaterTrackByIdentity);
448
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Conditional_30_Conditional_3_Template(rf, ctx) { if (rf & 1) {
449
+ i0.ɵɵelementStart(0, "div", 123);
450
+ i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Conditional_30_Conditional_3_For_2_Template, 3, 1, "div", 125, i0.ɵɵrepeaterTrackByIdentity);
458
451
  i0.ɵɵelementEnd();
459
452
  } if (rf & 2) {
460
453
  const ctx_r1 = i0.ɵɵnextContext(5);
461
454
  i0.ɵɵadvance();
462
455
  i0.ɵɵrepeater(ctx_r1.AutoMapResult.Errors);
463
456
  } }
464
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_30_Template(rf, ctx) { if (rf & 1) {
465
- i0.ɵɵelementStart(0, "div", 120);
466
- i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_30_Conditional_1_Template, 3, 4, "div", 121)(2, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_30_Conditional_2_Template, 3, 0, "div", 121);
467
- i0.ɵɵconditionalCreate(3, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_30_Conditional_3_Template, 3, 0, "div", 122);
457
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Conditional_30_Template(rf, ctx) { if (rf & 1) {
458
+ i0.ɵɵelementStart(0, "div", 121);
459
+ i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Conditional_30_Conditional_1_Template, 3, 4, "div", 122)(2, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Conditional_30_Conditional_2_Template, 3, 0, "div", 122);
460
+ i0.ɵɵconditionalCreate(3, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Conditional_30_Conditional_3_Template, 3, 0, "div", 123);
468
461
  i0.ɵɵelementEnd();
469
462
  } if (rf & 2) {
470
463
  const ctx_r1 = i0.ɵɵnextContext(4);
@@ -474,47 +467,47 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditi
474
467
  i0.ɵɵadvance(2);
475
468
  i0.ɵɵconditional(ctx_r1.AutoMapResult.Errors.length > 0 ? 3 : -1);
476
469
  } }
477
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Template(rf, ctx) { if (rf & 1) {
470
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Template(rf, ctx) { if (rf & 1) {
478
471
  const _r17 = i0.ɵɵgetCurrentView();
479
- i0.ɵɵelementStart(0, "div", 94)(1, "div", 101);
480
- i0.ɵɵelement(2, "i", 92);
472
+ i0.ɵɵelementStart(0, "div", 95)(1, "div", 102);
473
+ i0.ɵɵelement(2, "i", 93);
481
474
  i0.ɵɵelementStart(3, "span");
482
475
  i0.ɵɵtext(4, "Auto-map all entities in a schema to this integration with 1:1 field mappings");
483
476
  i0.ɵɵelementEnd()();
484
- i0.ɵɵelementStart(5, "div", 102)(6, "div", 103)(7, "label", 104);
477
+ i0.ɵɵelementStart(5, "div", 103)(6, "div", 104)(7, "label", 105);
485
478
  i0.ɵɵtext(8, "Target Schema");
486
479
  i0.ɵɵelementEnd();
487
- i0.ɵɵelementStart(9, "select", 105);
488
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Template_select_ngModelChange_9_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.AutoMapSelectedSchema, $event) || (ctx_r1.AutoMapSelectedSchema = $event); return i0.ɵɵresetView($event); });
489
- i0.ɵɵelementStart(10, "option", 106);
480
+ i0.ɵɵelementStart(9, "select", 106);
481
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Template_select_ngModelChange_9_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.AutoMapSelectedSchema, $event) || (ctx_r1.AutoMapSelectedSchema = $event); return i0.ɵɵresetView($event); });
482
+ i0.ɵɵelementStart(10, "option", 107);
490
483
  i0.ɵɵtext(11, "Select schema...");
491
484
  i0.ɵɵelementEnd();
492
- i0.ɵɵrepeaterCreate(12, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_For_13_Template, 2, 2, "option", 107, i0.ɵɵrepeaterTrackByIdentity);
485
+ i0.ɵɵrepeaterCreate(12, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_For_13_Template, 2, 2, "option", 108, i0.ɵɵrepeaterTrackByIdentity);
493
486
  i0.ɵɵelementEnd()();
494
- i0.ɵɵelementStart(14, "div", 108)(15, "label", 104);
487
+ i0.ɵɵelementStart(14, "div", 109)(15, "label", 105);
495
488
  i0.ɵɵtext(16, "Direction");
496
489
  i0.ɵɵelementEnd();
497
- i0.ɵɵelementStart(17, "div", 109)(18, "button", 110);
498
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.AutoMapDirection = "Pull"); });
499
- i0.ɵɵelement(19, "i", 111);
490
+ i0.ɵɵelementStart(17, "div", 110)(18, "button", 111);
491
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.AutoMapDirection = "Pull"); });
492
+ i0.ɵɵelement(19, "i", 112);
500
493
  i0.ɵɵelementEnd();
501
- i0.ɵɵelementStart(20, "button", 112);
502
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Template_button_click_20_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.AutoMapDirection = "Bidirectional"); });
503
- i0.ɵɵelement(21, "i", 113);
494
+ i0.ɵɵelementStart(20, "button", 113);
495
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Template_button_click_20_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.AutoMapDirection = "Bidirectional"); });
496
+ i0.ɵɵelement(21, "i", 114);
504
497
  i0.ɵɵelementEnd();
505
- i0.ɵɵelementStart(22, "button", 114);
506
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Template_button_click_22_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.AutoMapDirection = "Push"); });
507
- i0.ɵɵelement(23, "i", 67);
498
+ i0.ɵɵelementStart(22, "button", 115);
499
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Template_button_click_22_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.AutoMapDirection = "Push"); });
500
+ i0.ɵɵelement(23, "i", 68);
508
501
  i0.ɵɵelementEnd()()();
509
- i0.ɵɵelementStart(24, "div", 115)(25, "button", 116);
510
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Template_button_click_25_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunAutoMap()); });
511
- i0.ɵɵconditionalCreate(26, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_26_Template, 2, 0)(27, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_27_Template, 2, 0);
502
+ i0.ɵɵelementStart(24, "div", 116)(25, "button", 117);
503
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Template_button_click_25_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunAutoMap()); });
504
+ i0.ɵɵconditionalCreate(26, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Conditional_26_Template, 2, 0)(27, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Conditional_27_Template, 2, 0);
512
505
  i0.ɵɵelementEnd();
513
- i0.ɵɵelementStart(28, "button", 117);
514
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseAutoMapPanel()); });
515
- i0.ɵɵelement(29, "i", 118);
506
+ i0.ɵɵelementStart(28, "button", 118);
507
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseAutoMapPanel()); });
508
+ i0.ɵɵelement(29, "i", 119);
516
509
  i0.ɵɵelementEnd()()();
517
- i0.ɵɵconditionalCreate(30, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_30_Template, 4, 8, "div", 119);
510
+ i0.ɵɵconditionalCreate(30, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Conditional_30_Template, 4, 8, "div", 120);
518
511
  i0.ɵɵelementEnd();
519
512
  } if (rf & 2) {
520
513
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -537,29 +530,29 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Templat
537
530
  i0.ɵɵadvance(4);
538
531
  i0.ɵɵconditional(ctx_r1.AutoMapResult ? 30 : -1);
539
532
  } }
540
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_8_Template(rf, ctx) { if (rf & 1) {
541
- i0.ɵɵelement(0, "i", 41);
533
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_8_Template(rf, ctx) { if (rf & 1) {
534
+ i0.ɵɵelement(0, "i", 42);
542
535
  i0.ɵɵtext(1, " Creating... ");
543
536
  } }
544
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_9_Template(rf, ctx) { if (rf & 1) {
545
- i0.ɵɵelement(0, "i", 90);
537
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_9_Template(rf, ctx) { if (rf & 1) {
538
+ i0.ɵɵelement(0, "i", 91);
546
539
  i0.ɵɵtext(1);
547
540
  } if (rf & 2) {
548
541
  const ctx_r1 = i0.ɵɵnextContext(4);
549
542
  i0.ɵɵadvance();
550
543
  i0.ɵɵtextInterpolate2(" Create ", ctx_r1.CreateTablesSelectedCount, " Table", ctx_r1.CreateTablesSelectedCount !== 1 ? "s" : "", " ");
551
544
  } }
552
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_12_Template(rf, ctx) { if (rf & 1) {
553
- i0.ɵɵelement(0, "mj-loading", 126);
545
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_12_Template(rf, ctx) { if (rf & 1) {
546
+ i0.ɵɵelement(0, "mj-loading", 127);
554
547
  } }
555
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_13_Template(rf, ctx) { if (rf & 1) {
556
- i0.ɵɵelementStart(0, "div", 127);
557
- i0.ɵɵelement(1, "i", 123);
548
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_13_Template(rf, ctx) { if (rf & 1) {
549
+ i0.ɵɵelementStart(0, "div", 128);
550
+ i0.ɵɵelement(1, "i", 124);
558
551
  i0.ɵɵtext(2, " No source objects available from this connector. ");
559
552
  i0.ɵɵelementEnd();
560
553
  } }
561
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_4_Template(rf, ctx) { if (rf & 1) {
562
- i0.ɵɵelementStart(0, "span", 136);
554
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_4_Template(rf, ctx) { if (rf & 1) {
555
+ i0.ɵɵelementStart(0, "span", 137);
563
556
  i0.ɵɵtext(1);
564
557
  i0.ɵɵelementEnd();
565
558
  } if (rf & 2) {
@@ -567,27 +560,27 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditi
567
560
  i0.ɵɵadvance();
568
561
  i0.ɵɵtextInterpolate(obj_r23.Name);
569
562
  } }
570
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_5_Template(rf, ctx) { if (rf & 1) {
571
- i0.ɵɵelementStart(0, "span", 137);
563
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_5_Template(rf, ctx) { if (rf & 1) {
564
+ i0.ɵɵelementStart(0, "span", 138);
572
565
  i0.ɵɵtext(1, "Custom");
573
566
  i0.ɵɵelementEnd();
574
567
  } }
575
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
576
- i0.ɵɵelementStart(0, "span", 138);
568
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
569
+ i0.ɵɵelementStart(0, "span", 139);
577
570
  i0.ɵɵtext(1, "Registered");
578
571
  i0.ɵɵelementEnd();
579
572
  } }
580
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_For_9_Template(rf, ctx) { if (rf & 1) {
573
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_14_For_9_Template(rf, ctx) { if (rf & 1) {
581
574
  const _r22 = i0.ɵɵgetCurrentView();
582
- i0.ɵɵelementStart(0, "label", 133)(1, "input", 135);
583
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_For_9_Template_input_ngModelChange_1_listener($event) { const obj_r23 = i0.ɵɵrestoreView(_r22).$implicit; i0.ɵɵtwoWayBindingSet(obj_r23.Selected, $event) || (obj_r23.Selected = $event); return i0.ɵɵresetView($event); });
575
+ i0.ɵɵelementStart(0, "label", 134)(1, "input", 136);
576
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_14_For_9_Template_input_ngModelChange_1_listener($event) { const obj_r23 = i0.ɵɵrestoreView(_r22).$implicit; i0.ɵɵtwoWayBindingSet(obj_r23.Selected, $event) || (obj_r23.Selected = $event); return i0.ɵɵresetView($event); });
584
577
  i0.ɵɵelementEnd();
585
578
  i0.ɵɵelementStart(2, "span");
586
579
  i0.ɵɵtext(3);
587
580
  i0.ɵɵelementEnd();
588
- i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_4_Template, 2, 1, "span", 136);
589
- i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_5_Template, 2, 0, "span", 137);
590
- i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_6_Template, 2, 0, "span", 138);
581
+ i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_4_Template, 2, 1, "span", 137);
582
+ i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_5_Template, 2, 0, "span", 138);
583
+ i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_6_Template, 2, 0, "span", 139);
591
584
  i0.ɵɵelementEnd();
592
585
  } if (rf & 2) {
593
586
  const obj_r23 = ctx.$implicit;
@@ -602,18 +595,18 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditi
602
595
  i0.ɵɵadvance();
603
596
  i0.ɵɵconditional(obj_r23.AlreadyPersisted ? 6 : -1);
604
597
  } }
605
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_Template(rf, ctx) { if (rf & 1) {
598
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_14_Template(rf, ctx) { if (rf & 1) {
606
599
  const _r21 = i0.ɵɵgetCurrentView();
607
- i0.ɵɵelementStart(0, "div", 129)(1, "input", 130);
608
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.CreateTablesSearch, $event) || (ctx_r1.CreateTablesSearch = $event); return i0.ɵɵresetView($event); });
600
+ i0.ɵɵelementStart(0, "div", 130)(1, "input", 131);
601
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_14_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.CreateTablesSearch, $event) || (ctx_r1.CreateTablesSearch = $event); return i0.ɵɵresetView($event); });
609
602
  i0.ɵɵelementEnd()();
610
- i0.ɵɵelementStart(2, "div", 131)(3, "div", 132)(4, "label", 133)(5, "input", 134);
611
- i0.ɵɵlistener("change", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_Template_input_change_5_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.ToggleAllCreateTablesObjects($event.target.checked)); });
603
+ i0.ɵɵelementStart(2, "div", 132)(3, "div", 133)(4, "label", 134)(5, "input", 135);
604
+ i0.ɵɵlistener("change", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_14_Template_input_change_5_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.ToggleAllCreateTablesObjects($event.target.checked)); });
612
605
  i0.ɵɵelementEnd();
613
606
  i0.ɵɵelementStart(6, "span");
614
607
  i0.ɵɵtext(7);
615
608
  i0.ɵɵelementEnd()()();
616
- i0.ɵɵrepeaterCreate(8, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_For_9_Template, 7, 5, "label", 133, _forTrack1);
609
+ i0.ɵɵrepeaterCreate(8, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_14_For_9_Template, 7, 5, "label", 134, _forTrack1);
617
610
  i0.ɵɵelementEnd();
618
611
  } if (rf & 2) {
619
612
  const ctx_r1 = i0.ɵɵnextContext(4);
@@ -626,15 +619,15 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditi
626
619
  i0.ɵɵadvance();
627
620
  i0.ɵɵrepeater(ctx_r1.FilteredCreateTablesObjects);
628
621
  } }
629
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_15_Conditional_1_Template(rf, ctx) { if (rf & 1) {
630
- i0.ɵɵelement(0, "i", 47);
631
- } }
632
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_15_Conditional_2_Template(rf, ctx) { if (rf & 1) {
622
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_15_Conditional_1_Template(rf, ctx) { if (rf & 1) {
633
623
  i0.ɵɵelement(0, "i", 48);
634
624
  } }
635
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_15_Template(rf, ctx) { if (rf & 1) {
636
- i0.ɵɵelementStart(0, "div", 120);
637
- i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_15_Conditional_1_Template, 1, 0, "i", 47)(2, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_15_Conditional_2_Template, 1, 0, "i", 48);
625
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_15_Conditional_2_Template(rf, ctx) { if (rf & 1) {
626
+ i0.ɵɵelement(0, "i", 49);
627
+ } }
628
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_15_Template(rf, ctx) { if (rf & 1) {
629
+ i0.ɵɵelementStart(0, "div", 121);
630
+ i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_15_Conditional_1_Template, 1, 0, "i", 48)(2, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_15_Conditional_2_Template, 1, 0, "i", 49);
638
631
  i0.ɵɵelementStart(3, "span");
639
632
  i0.ɵɵtext(4);
640
633
  i0.ɵɵelementEnd()();
@@ -646,23 +639,23 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditi
646
639
  i0.ɵɵadvance(3);
647
640
  i0.ɵɵtextInterpolate(ctx_r1.CreateTablesResult.Message);
648
641
  } }
649
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Template(rf, ctx) { if (rf & 1) {
642
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Template(rf, ctx) { if (rf & 1) {
650
643
  const _r20 = i0.ɵɵgetCurrentView();
651
- i0.ɵɵelementStart(0, "div", 94)(1, "div", 101);
652
- i0.ɵɵelement(2, "i", 90);
644
+ i0.ɵɵelementStart(0, "div", 95)(1, "div", 102);
645
+ i0.ɵɵelement(2, "i", 91);
653
646
  i0.ɵɵelementStart(3, "span");
654
647
  i0.ɵɵtext(4, "Select source objects to create as entity tables in your database");
655
648
  i0.ɵɵelementEnd()();
656
- i0.ɵɵelementStart(5, "div", 102)(6, "div", 115)(7, "button", 116);
657
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunCreateTables()); });
658
- i0.ɵɵconditionalCreate(8, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_8_Template, 2, 0)(9, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_9_Template, 2, 2);
649
+ i0.ɵɵelementStart(5, "div", 103)(6, "div", 116)(7, "button", 117);
650
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunCreateTables()); });
651
+ i0.ɵɵconditionalCreate(8, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_8_Template, 2, 0)(9, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_9_Template, 2, 2);
659
652
  i0.ɵɵelementEnd();
660
- i0.ɵɵelementStart(10, "button", 117);
661
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseCreateTablesPanel()); });
662
- i0.ɵɵelement(11, "i", 118);
653
+ i0.ɵɵelementStart(10, "button", 118);
654
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseCreateTablesPanel()); });
655
+ i0.ɵɵelement(11, "i", 119);
663
656
  i0.ɵɵelementEnd()()();
664
- i0.ɵɵconditionalCreate(12, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_12_Template, 1, 0, "mj-loading", 126)(13, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_13_Template, 3, 0, "div", 127)(14, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_Template, 10, 4);
665
- i0.ɵɵconditionalCreate(15, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_15_Template, 5, 6, "div", 128);
657
+ i0.ɵɵconditionalCreate(12, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_12_Template, 1, 0, "mj-loading", 127)(13, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_13_Template, 3, 0, "div", 128)(14, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_14_Template, 10, 4);
658
+ i0.ɵɵconditionalCreate(15, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_15_Template, 5, 6, "div", 129);
666
659
  i0.ɵɵelementEnd();
667
660
  } if (rf & 2) {
668
661
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -675,19 +668,19 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Templat
675
668
  i0.ɵɵadvance(3);
676
669
  i0.ɵɵconditional(ctx_r1.CreateTablesResult ? 15 : -1);
677
670
  } }
678
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_5_Template(rf, ctx) { if (rf & 1) {
679
- i0.ɵɵelementStart(0, "div", 139);
680
- i0.ɵɵelement(1, "i", 41);
671
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Conditional_5_Template(rf, ctx) { if (rf & 1) {
672
+ i0.ɵɵelementStart(0, "div", 140);
673
+ i0.ɵɵelement(1, "i", 42);
681
674
  i0.ɵɵtext(2, " Loading...");
682
675
  i0.ɵɵelementEnd();
683
676
  } }
684
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_6_Template(rf, ctx) { if (rf & 1) {
685
- i0.ɵɵelementStart(0, "div", 140);
677
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Conditional_6_Template(rf, ctx) { if (rf & 1) {
678
+ i0.ɵɵelementStart(0, "div", 141);
686
679
  i0.ɵɵtext(1, "No source objects found in metadata");
687
680
  i0.ɵɵelementEnd();
688
681
  } }
689
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_7_For_4_Template(rf, ctx) { if (rf & 1) {
690
- i0.ɵɵelementStart(0, "option", 107);
682
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Conditional_7_For_4_Template(rf, ctx) { if (rf & 1) {
683
+ i0.ɵɵelementStart(0, "option", 108);
691
684
  i0.ɵɵtext(1);
692
685
  i0.ɵɵelementEnd();
693
686
  } if (rf & 2) {
@@ -696,14 +689,14 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditi
696
689
  i0.ɵɵadvance();
697
690
  i0.ɵɵtextInterpolate(obj_r26.Label || obj_r26.Name);
698
691
  } }
699
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_7_Template(rf, ctx) { if (rf & 1) {
692
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Conditional_7_Template(rf, ctx) { if (rf & 1) {
700
693
  const _r25 = i0.ɵɵgetCurrentView();
701
- i0.ɵɵelementStart(0, "select", 105);
702
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_7_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.AddMapSourceObjectName, $event) || (ctx_r1.AddMapSourceObjectName = $event); return i0.ɵɵresetView($event); });
703
- i0.ɵɵelementStart(1, "option", 106);
694
+ i0.ɵɵelementStart(0, "select", 106);
695
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Conditional_7_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.AddMapSourceObjectName, $event) || (ctx_r1.AddMapSourceObjectName = $event); return i0.ɵɵresetView($event); });
696
+ i0.ɵɵelementStart(1, "option", 107);
704
697
  i0.ɵɵtext(2, "Select source object...");
705
698
  i0.ɵɵelementEnd();
706
- i0.ɵɵrepeaterCreate(3, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_7_For_4_Template, 2, 2, "option", 107, _forTrack1);
699
+ i0.ɵɵrepeaterCreate(3, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Conditional_7_For_4_Template, 2, 2, "option", 108, _forTrack1);
707
700
  i0.ɵɵelementEnd();
708
701
  } if (rf & 2) {
709
702
  const ctx_r1 = i0.ɵɵnextContext(4);
@@ -713,53 +706,53 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditi
713
706
  i0.ɵɵadvance(2);
714
707
  i0.ɵɵrepeater(ctx_r1.AvailableSourceObjects);
715
708
  } }
716
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_29_Template(rf, ctx) { if (rf & 1) {
717
- i0.ɵɵelement(0, "i", 41);
709
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Conditional_29_Template(rf, ctx) { if (rf & 1) {
710
+ i0.ɵɵelement(0, "i", 42);
718
711
  } }
719
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_30_Template(rf, ctx) { if (rf & 1) {
720
- i0.ɵɵelement(0, "i", 146);
712
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Conditional_30_Template(rf, ctx) { if (rf & 1) {
713
+ i0.ɵɵelement(0, "i", 147);
721
714
  i0.ɵɵtext(1, " Add ");
722
715
  } }
723
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Template(rf, ctx) { if (rf & 1) {
716
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Template(rf, ctx) { if (rf & 1) {
724
717
  const _r24 = i0.ɵɵgetCurrentView();
725
- i0.ɵɵelementStart(0, "div", 94)(1, "div", 102)(2, "div", 103)(3, "label", 104);
718
+ i0.ɵɵelementStart(0, "div", 95)(1, "div", 103)(2, "div", 104)(3, "label", 105);
726
719
  i0.ɵɵtext(4, "Source Object");
727
720
  i0.ɵɵelementEnd();
728
- i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_5_Template, 3, 0, "div", 139)(6, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_6_Template, 2, 0, "div", 140)(7, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_7_Template, 5, 2, "select", 141);
721
+ i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Conditional_5_Template, 3, 0, "div", 140)(6, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Conditional_6_Template, 2, 0, "div", 141)(7, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Conditional_7_Template, 5, 2, "select", 142);
729
722
  i0.ɵɵelementEnd();
730
- i0.ɵɵelementStart(8, "div", 108)(9, "label", 104);
723
+ i0.ɵɵelementStart(8, "div", 109)(9, "label", 105);
731
724
  i0.ɵɵtext(10, "Direction");
732
725
  i0.ɵɵelementEnd();
733
- i0.ɵɵelementStart(11, "div", 109)(12, "button", 110);
734
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.AddMapDirection = "Pull"); });
735
- i0.ɵɵelement(13, "i", 111);
726
+ i0.ɵɵelementStart(11, "div", 110)(12, "button", 111);
727
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.AddMapDirection = "Pull"); });
728
+ i0.ɵɵelement(13, "i", 112);
736
729
  i0.ɵɵelementEnd();
737
- i0.ɵɵelementStart(14, "button", 112);
738
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.AddMapDirection = "Bidirectional"); });
739
- i0.ɵɵelement(15, "i", 113);
730
+ i0.ɵɵelementStart(14, "button", 113);
731
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.AddMapDirection = "Bidirectional"); });
732
+ i0.ɵɵelement(15, "i", 114);
740
733
  i0.ɵɵelementEnd();
741
- i0.ɵɵelementStart(16, "button", 114);
742
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.AddMapDirection = "Push"); });
743
- i0.ɵɵelement(17, "i", 67);
734
+ i0.ɵɵelementStart(16, "button", 115);
735
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.AddMapDirection = "Push"); });
736
+ i0.ɵɵelement(17, "i", 68);
744
737
  i0.ɵɵelementEnd()()();
745
- i0.ɵɵelementStart(18, "div", 142)(19, "label", 104);
738
+ i0.ɵɵelementStart(18, "div", 143)(19, "label", 105);
746
739
  i0.ɵɵtext(20, "MJ Entity");
747
740
  i0.ɵɵelementEnd();
748
- i0.ɵɵelementStart(21, "div", 143)(22, "mj-tree-dropdown", 144, 0);
749
- i0.ɵɵlistener("SelectionChange", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Template_mj_tree_dropdown_SelectionChange_22_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnEntityTreeSelection($event)); });
741
+ i0.ɵɵelementStart(21, "div", 144)(22, "mj-tree-dropdown", 145, 0);
742
+ i0.ɵɵlistener("SelectionChange", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Template_mj_tree_dropdown_SelectionChange_22_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnEntityTreeSelection($event)); });
750
743
  i0.ɵɵelementEnd();
751
- i0.ɵɵelementStart(24, "button", 145);
752
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Template_button_click_24_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenNewEntityDialog()); });
753
- i0.ɵɵelement(25, "i", 12);
744
+ i0.ɵɵelementStart(24, "button", 146);
745
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Template_button_click_24_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenNewEntityDialog()); });
746
+ i0.ɵɵelement(25, "i", 13);
754
747
  i0.ɵɵtext(26, " New ");
755
748
  i0.ɵɵelementEnd()()();
756
- i0.ɵɵelementStart(27, "div", 115)(28, "button", 116);
757
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SaveAddMap()); });
758
- i0.ɵɵconditionalCreate(29, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_29_Template, 1, 0, "i", 41)(30, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_30_Template, 2, 0);
749
+ i0.ɵɵelementStart(27, "div", 116)(28, "button", 117);
750
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SaveAddMap()); });
751
+ i0.ɵɵconditionalCreate(29, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Conditional_29_Template, 1, 0, "i", 42)(30, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Conditional_30_Template, 2, 0);
759
752
  i0.ɵɵelementEnd();
760
- i0.ɵɵelementStart(31, "button", 117);
761
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Template_button_click_31_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseAddMapPanel()); });
762
- i0.ɵɵelement(32, "i", 118);
753
+ i0.ɵɵelementStart(31, "button", 118);
754
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Template_button_click_31_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseAddMapPanel()); });
755
+ i0.ɵɵelement(32, "i", 119);
763
756
  i0.ɵɵelementEnd()()()();
764
757
  } if (rf & 2) {
765
758
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -778,62 +771,62 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Templat
778
771
  i0.ɵɵadvance();
779
772
  i0.ɵɵconditional(ctx_r1.IsSavingAddMap ? 29 : 30);
780
773
  } }
781
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_55_Template(rf, ctx) { if (rf & 1) {
782
- i0.ɵɵelementStart(0, "div", 13);
783
- i0.ɵɵelement(1, "mj-loading", 147);
774
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_55_Template(rf, ctx) { if (rf & 1) {
775
+ i0.ɵɵelementStart(0, "div", 14);
776
+ i0.ɵɵelement(1, "mj-loading", 148);
784
777
  i0.ɵɵelementEnd();
785
778
  } }
786
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_56_Template(rf, ctx) { if (rf & 1) {
779
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_56_Template(rf, ctx) { if (rf & 1) {
787
780
  const _r27 = i0.ɵɵgetCurrentView();
788
- i0.ɵɵelementStart(0, "div", 95);
789
- i0.ɵɵelement(1, "i", 148);
781
+ i0.ɵɵelementStart(0, "div", 96);
782
+ i0.ɵɵelement(1, "i", 149);
790
783
  i0.ɵɵelementStart(2, "h3");
791
784
  i0.ɵɵtext(3, "No entity maps configured");
792
785
  i0.ɵɵelementEnd();
793
786
  i0.ɵɵelementStart(4, "p");
794
787
  i0.ɵɵtext(5, "Entity maps define how external objects sync to MJ entities.");
795
788
  i0.ɵɵelementEnd();
796
- i0.ɵɵelementStart(6, "button", 149);
797
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_56_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r27); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ToggleAddMapPanel()); });
798
- i0.ɵɵelement(7, "i", 12);
789
+ i0.ɵɵelementStart(6, "button", 150);
790
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_56_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r27); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ToggleAddMapPanel()); });
791
+ i0.ɵɵelement(7, "i", 13);
799
792
  i0.ɵɵtext(8, " Add Your First Entity Map ");
800
793
  i0.ɵɵelementEnd()();
801
794
  } }
802
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_For_12_Conditional_13_Template(rf, ctx) { if (rf & 1) {
803
- i0.ɵɵelementStart(0, "span", 167);
804
- i0.ɵɵelement(1, "i", 171);
795
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_57_For_12_Conditional_13_Template(rf, ctx) { if (rf & 1) {
796
+ i0.ɵɵelementStart(0, "span", 168);
797
+ i0.ɵɵelement(1, "i", 172);
805
798
  i0.ɵɵelementEnd();
806
799
  } }
807
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_For_12_Template(rf, ctx) { if (rf & 1) {
800
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_57_For_12_Template(rf, ctx) { if (rf & 1) {
808
801
  const _r28 = i0.ɵɵgetCurrentView();
809
- i0.ɵɵelementStart(0, "div", 159);
810
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_For_12_Template_div_click_0_listener() { const em_r29 = i0.ɵɵrestoreView(_r28).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnEntityMapClick(em_r29)); });
811
- i0.ɵɵelementStart(1, "span", 160);
812
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_For_12_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r28); return i0.ɵɵresetView($event.stopPropagation()); });
813
- i0.ɵɵelementStart(2, "label", 161)(3, "input", 134);
814
- i0.ɵɵlistener("change", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_For_12_Template_input_change_3_listener($event) { const em_r29 = i0.ɵɵrestoreView(_r28).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnToggleMapEnabled(em_r29, $event)); });
815
- i0.ɵɵelementEnd();
816
- i0.ɵɵelement(4, "span", 162);
802
+ i0.ɵɵelementStart(0, "div", 160);
803
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_57_For_12_Template_div_click_0_listener() { const em_r29 = i0.ɵɵrestoreView(_r28).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnEntityMapClick(em_r29)); });
804
+ i0.ɵɵelementStart(1, "span", 161);
805
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_57_For_12_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r28); return i0.ɵɵresetView($event.stopPropagation()); });
806
+ i0.ɵɵelementStart(2, "label", 162)(3, "input", 135);
807
+ i0.ɵɵlistener("change", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_57_For_12_Template_input_change_3_listener($event) { const em_r29 = i0.ɵɵrestoreView(_r28).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnToggleMapEnabled(em_r29, $event)); });
808
+ i0.ɵɵelementEnd();
809
+ i0.ɵɵelement(4, "span", 163);
817
810
  i0.ɵɵelementEnd()();
818
- i0.ɵɵelementStart(5, "span", 163);
811
+ i0.ɵɵelementStart(5, "span", 164);
819
812
  i0.ɵɵtext(6);
820
813
  i0.ɵɵelementEnd();
821
- i0.ɵɵelementStart(7, "span", 164);
822
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_For_12_Template_span_click_7_listener($event) { i0.ɵɵrestoreView(_r28); return i0.ɵɵresetView($event.stopPropagation()); });
823
- i0.ɵɵelementStart(8, "button", 165);
824
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_For_12_Template_button_click_8_listener() { const em_r29 = i0.ɵɵrestoreView(_r28).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.CycleSyncDirection(em_r29)); });
814
+ i0.ɵɵelementStart(7, "span", 165);
815
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_57_For_12_Template_span_click_7_listener($event) { i0.ɵɵrestoreView(_r28); return i0.ɵɵresetView($event.stopPropagation()); });
816
+ i0.ɵɵelementStart(8, "button", 166);
817
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_57_For_12_Template_button_click_8_listener() { const em_r29 = i0.ɵɵrestoreView(_r28).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.CycleSyncDirection(em_r29)); });
825
818
  i0.ɵɵtext(9);
826
819
  i0.ɵɵelementEnd()();
827
- i0.ɵɵelementStart(10, "span", 166);
820
+ i0.ɵɵelementStart(10, "span", 167);
828
821
  i0.ɵɵtext(11);
829
822
  i0.ɵɵelementEnd();
830
- i0.ɵɵelementStart(12, "span", 155);
831
- i0.ɵɵconditionalCreate(13, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_For_12_Conditional_13_Template, 2, 0, "span", 167);
832
- i0.ɵɵelementStart(14, "span", 168);
833
- i0.ɵɵelement(15, "i", 36);
823
+ i0.ɵɵelementStart(12, "span", 156);
824
+ i0.ɵɵconditionalCreate(13, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_57_For_12_Conditional_13_Template, 2, 0, "span", 168);
825
+ i0.ɵɵelementStart(14, "span", 169);
826
+ i0.ɵɵelement(15, "i", 37);
834
827
  i0.ɵɵelementEnd();
835
- i0.ɵɵelementStart(16, "span", 169);
836
- i0.ɵɵelement(17, "i", 170);
828
+ i0.ɵɵelementStart(16, "span", 170);
829
+ i0.ɵɵelement(17, "i", 171);
837
830
  i0.ɵɵelementEnd()()();
838
831
  } if (rf & 2) {
839
832
  const em_r29 = ctx.$implicit;
@@ -861,105 +854,105 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_For_12_
861
854
  i0.ɵɵadvance();
862
855
  i0.ɵɵproperty("title", "Conflict: " + em_r29.ConflictResolution);
863
856
  } }
864
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_ForEmpty_13_Template(rf, ctx) { if (rf & 1) {
865
- i0.ɵɵelementStart(0, "div", 158);
857
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_57_ForEmpty_13_Template(rf, ctx) { if (rf & 1) {
858
+ i0.ɵɵelementStart(0, "div", 159);
866
859
  i0.ɵɵtext(1, " No entity maps match your filter. ");
867
860
  i0.ɵɵelementEnd();
868
861
  } }
869
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_Template(rf, ctx) { if (rf & 1) {
870
- i0.ɵɵelementStart(0, "div", 150)(1, "span", 151);
862
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_57_Template(rf, ctx) { if (rf & 1) {
863
+ i0.ɵɵelementStart(0, "div", 151)(1, "span", 152);
871
864
  i0.ɵɵtext(2, "Sync");
872
865
  i0.ɵɵelementEnd();
873
- i0.ɵɵelementStart(3, "span", 152);
866
+ i0.ɵɵelementStart(3, "span", 153);
874
867
  i0.ɵɵtext(4, "External Object");
875
868
  i0.ɵɵelementEnd();
876
- i0.ɵɵelement(5, "span", 153);
877
- i0.ɵɵelementStart(6, "span", 154);
869
+ i0.ɵɵelement(5, "span", 154);
870
+ i0.ɵɵelementStart(6, "span", 155);
878
871
  i0.ɵɵtext(7, "MJ Entity");
879
872
  i0.ɵɵelementEnd();
880
- i0.ɵɵelementStart(8, "span", 155);
873
+ i0.ɵɵelementStart(8, "span", 156);
881
874
  i0.ɵɵtext(9, "Config");
882
875
  i0.ɵɵelementEnd()();
883
- i0.ɵɵelementStart(10, "div", 156);
884
- i0.ɵɵrepeaterCreate(11, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_For_12_Template, 18, 14, "div", 157, _forTrack2, false, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_ForEmpty_13_Template, 2, 0, "div", 158);
876
+ i0.ɵɵelementStart(10, "div", 157);
877
+ i0.ɵɵrepeaterCreate(11, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_57_For_12_Template, 18, 14, "div", 158, _forTrack2, false, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_57_ForEmpty_13_Template, 2, 0, "div", 159);
885
878
  i0.ɵɵelementEnd();
886
879
  } if (rf & 2) {
887
880
  const ctx_r1 = i0.ɵɵnextContext(3);
888
881
  i0.ɵɵadvance(11);
889
882
  i0.ɵɵrepeater(ctx_r1.DetailFilteredMaps);
890
883
  } }
891
- function ConnectionsComponent_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
884
+ function ConnectionsComponent_Conditional_8_Conditional_2_Template(rf, ctx) { if (rf & 1) {
892
885
  const _r12 = i0.ɵɵgetCurrentView();
893
- i0.ɵɵelementStart(0, "div", 65)(1, "button", 66);
894
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.CloseDetailView()); });
895
- i0.ɵɵelement(2, "i", 67);
886
+ i0.ɵɵelementStart(0, "div", 66)(1, "button", 67);
887
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.CloseDetailView()); });
888
+ i0.ɵɵelement(2, "i", 68);
896
889
  i0.ɵɵelementEnd();
897
- i0.ɵɵelementStart(3, "div", 68)(4, "div", 26);
898
- i0.ɵɵelement(5, "i", 27);
890
+ i0.ɵɵelementStart(3, "div", 69)(4, "div", 27);
891
+ i0.ɵɵelement(5, "i", 28);
899
892
  i0.ɵɵelementEnd();
900
- i0.ɵɵelementStart(6, "div", 69)(7, "h2", 70);
893
+ i0.ɵɵelementStart(6, "div", 70)(7, "h2", 71);
901
894
  i0.ɵɵtext(8);
902
895
  i0.ɵɵelementEnd();
903
- i0.ɵɵelementStart(9, "span", 71);
896
+ i0.ɵɵelementStart(9, "span", 72);
904
897
  i0.ɵɵtext(10);
905
- i0.ɵɵelementStart(11, "span", 33);
898
+ i0.ɵɵelementStart(11, "span", 34);
906
899
  i0.ɵɵtext(12, "\u00B7");
907
900
  i0.ɵɵelementEnd();
908
901
  i0.ɵɵtext(13);
909
- i0.ɵɵelementStart(14, "span", 33);
902
+ i0.ɵɵelementStart(14, "span", 34);
910
903
  i0.ɵɵtext(15, "\u00B7");
911
904
  i0.ɵɵelementEnd();
912
905
  i0.ɵɵelementStart(16, "span");
913
906
  i0.ɵɵtext(17);
914
907
  i0.ɵɵelementEnd()()()();
915
- i0.ɵɵelementStart(18, "div", 72)(19, "button", 73);
916
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Template_button_click_19_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenEditPanel(ctx_r1.SelectedSummary)); });
917
- i0.ɵɵelement(20, "i", 74);
908
+ i0.ɵɵelementStart(18, "div", 73)(19, "button", 74);
909
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Template_button_click_19_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenEditPanel(ctx_r1.SelectedSummary)); });
910
+ i0.ɵɵelement(20, "i", 75);
918
911
  i0.ɵɵelementEnd();
919
- i0.ɵɵconditionalCreate(21, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Template, 5, 3, "div", 43);
912
+ i0.ɵɵconditionalCreate(21, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_21_Template, 5, 3, "div", 44);
920
913
  i0.ɵɵelementEnd()();
921
- i0.ɵɵelementStart(22, "div", 75)(23, "div", 76)(24, "div", 77);
922
- i0.ɵɵelement(25, "i", 78);
914
+ i0.ɵɵelementStart(22, "div", 76)(23, "div", 77)(24, "div", 78);
915
+ i0.ɵɵelement(25, "i", 79);
923
916
  i0.ɵɵelementStart(26, "span");
924
917
  i0.ɵɵtext(27, "Sync Schedule");
925
918
  i0.ɵɵelementEnd()()();
926
- i0.ɵɵconditionalCreate(28, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_28_Template, 1, 1, "mj-scheduled-job-summary", 79)(29, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_29_Template, 6, 0, "div", 80);
919
+ i0.ɵɵconditionalCreate(28, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_28_Template, 1, 1, "mj-scheduled-job-summary", 80)(29, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_29_Template, 6, 0, "div", 81);
927
920
  i0.ɵɵelementEnd();
928
- i0.ɵɵelementStart(30, "mj-scheduled-job-slide-panel", 81);
929
- i0.ɵɵlistener("Close", function ConnectionsComponent_Conditional_2_Conditional_2_Template_mj_scheduled_job_slide_panel_Close_30_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.CloseSchedulePanel()); })("Saved", function ConnectionsComponent_Conditional_2_Conditional_2_Template_mj_scheduled_job_slide_panel_Saved_30_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnScheduleSaved()); })("Deleted", function ConnectionsComponent_Conditional_2_Conditional_2_Template_mj_scheduled_job_slide_panel_Deleted_30_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnScheduleDeleted()); });
921
+ i0.ɵɵelementStart(30, "mj-scheduled-job-slide-panel", 82);
922
+ i0.ɵɵlistener("Close", function ConnectionsComponent_Conditional_8_Conditional_2_Template_mj_scheduled_job_slide_panel_Close_30_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.CloseSchedulePanel()); })("Saved", function ConnectionsComponent_Conditional_8_Conditional_2_Template_mj_scheduled_job_slide_panel_Saved_30_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnScheduleSaved()); })("Deleted", function ConnectionsComponent_Conditional_8_Conditional_2_Template_mj_scheduled_job_slide_panel_Deleted_30_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnScheduleDeleted()); });
930
923
  i0.ɵɵelementEnd();
931
- i0.ɵɵelementStart(31, "div", 82)(32, "div", 83)(33, "span", 84);
924
+ i0.ɵɵelementStart(31, "div", 83)(32, "div", 84)(33, "span", 85);
932
925
  i0.ɵɵtext(34);
933
- i0.ɵɵelementStart(35, "span", 33);
926
+ i0.ɵɵelementStart(35, "span", 34);
934
927
  i0.ɵɵtext(36, "\u00B7");
935
928
  i0.ɵɵelementEnd();
936
929
  i0.ɵɵtext(37);
937
930
  i0.ɵɵelementEnd()();
938
- i0.ɵɵelementStart(38, "div", 85)(39, "div", 86);
939
- i0.ɵɵelement(40, "i", 87);
940
- i0.ɵɵelementStart(41, "input", 88);
941
- i0.ɵɵlistener("input", function ConnectionsComponent_Conditional_2_Conditional_2_Template_input_input_41_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnDetailSearch($event)); });
931
+ i0.ɵɵelementStart(38, "div", 86)(39, "div", 87);
932
+ i0.ɵɵelement(40, "i", 88);
933
+ i0.ɵɵelementStart(41, "input", 89);
934
+ i0.ɵɵlistener("input", function ConnectionsComponent_Conditional_8_Conditional_2_Template_input_input_41_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnDetailSearch($event)); });
942
935
  i0.ɵɵelementEnd()();
943
- i0.ɵɵelementStart(42, "button", 89);
944
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Template_button_click_42_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleCreateTablesPanel()); });
945
- i0.ɵɵelement(43, "i", 90);
936
+ i0.ɵɵelementStart(42, "button", 90);
937
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Template_button_click_42_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleCreateTablesPanel()); });
938
+ i0.ɵɵelement(43, "i", 91);
946
939
  i0.ɵɵtext(44, " Create Tables ");
947
940
  i0.ɵɵelementEnd();
948
- i0.ɵɵelementStart(45, "button", 91);
949
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Template_button_click_45_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleAutoMapPanel()); });
950
- i0.ɵɵelement(46, "i", 92);
941
+ i0.ɵɵelementStart(45, "button", 92);
942
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Template_button_click_45_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleAutoMapPanel()); });
943
+ i0.ɵɵelement(46, "i", 93);
951
944
  i0.ɵɵtext(47, " Auto-Map Schema ");
952
945
  i0.ɵɵelementEnd();
953
- i0.ɵɵelementStart(48, "button", 91);
954
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Template_button_click_48_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleAddMapPanel()); });
955
- i0.ɵɵelement(49, "i", 12);
946
+ i0.ɵɵelementStart(48, "button", 92);
947
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Template_button_click_48_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleAddMapPanel()); });
948
+ i0.ɵɵelement(49, "i", 13);
956
949
  i0.ɵɵtext(50, " Add Map ");
957
950
  i0.ɵɵelementEnd()()();
958
- i0.ɵɵconditionalCreate(51, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_51_Template, 5, 6, "div", 93);
959
- i0.ɵɵconditionalCreate(52, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Template, 31, 11, "div", 94);
960
- i0.ɵɵconditionalCreate(53, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Template, 16, 4, "div", 94);
961
- i0.ɵɵconditionalCreate(54, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Template, 33, 16, "div", 94);
962
- i0.ɵɵconditionalCreate(55, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_55_Template, 2, 0, "div", 13)(56, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_56_Template, 9, 0, "div", 95)(57, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_Template, 14, 1);
951
+ i0.ɵɵconditionalCreate(51, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_51_Template, 5, 6, "div", 94);
952
+ i0.ɵɵconditionalCreate(52, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Template, 31, 11, "div", 95);
953
+ i0.ɵɵconditionalCreate(53, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Template, 16, 4, "div", 95);
954
+ i0.ɵɵconditionalCreate(54, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Template, 33, 16, "div", 95);
955
+ i0.ɵɵconditionalCreate(55, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_55_Template, 2, 0, "div", 14)(56, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_56_Template, 9, 0, "div", 96)(57, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_57_Template, 14, 1);
963
956
  } if (rf & 2) {
964
957
  const ctx_r1 = i0.ɵɵnextContext(2);
965
958
  i0.ɵɵadvance(4);
@@ -1005,39 +998,39 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Template(rf, ctx) { if
1005
998
  i0.ɵɵadvance();
1006
999
  i0.ɵɵconditional(ctx_r1.IsDetailLoading ? 55 : ctx_r1.DetailEntityMaps.length === 0 && !ctx_r1.ShowAddMapPanel ? 56 : ctx_r1.DetailEntityMaps.length > 0 ? 57 : -1);
1007
1000
  } }
1008
- function ConnectionsComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1009
- i0.ɵɵelementStart(0, "div", 2);
1010
- i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_2_Conditional_1_Template, 1, 3, "app-visual-field-editor", 63)(2, ConnectionsComponent_Conditional_2_Conditional_2_Template, 58, 32);
1001
+ function ConnectionsComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1002
+ i0.ɵɵelementStart(0, "div", 7);
1003
+ i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_8_Conditional_1_Template, 1, 3, "app-visual-field-editor", 64)(2, ConnectionsComponent_Conditional_8_Conditional_2_Template, 58, 32);
1011
1004
  i0.ɵɵelementEnd();
1012
1005
  } if (rf & 2) {
1013
1006
  const ctx_r1 = i0.ɵɵnextContext();
1014
1007
  i0.ɵɵadvance();
1015
1008
  i0.ɵɵconditional(ctx_r1.EditorEntityMap ? 1 : 2);
1016
1009
  } }
1017
- function ConnectionsComponent_Conditional_3_For_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1018
- i0.ɵɵelement(0, "i", 146);
1010
+ function ConnectionsComponent_Conditional_9_For_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1011
+ i0.ɵɵelement(0, "i", 147);
1019
1012
  } }
1020
- function ConnectionsComponent_Conditional_3_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1013
+ function ConnectionsComponent_Conditional_9_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1021
1014
  i0.ɵɵtext(0);
1022
1015
  } if (rf & 2) {
1023
1016
  const step_r31 = i0.ɵɵnextContext().$implicit;
1024
1017
  i0.ɵɵtextInterpolate1(" ", step_r31.Number, " ");
1025
1018
  } }
1026
- function ConnectionsComponent_Conditional_3_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1027
- i0.ɵɵelement(0, "div", 187);
1019
+ function ConnectionsComponent_Conditional_9_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1020
+ i0.ɵɵelement(0, "div", 188);
1028
1021
  } if (rf & 2) {
1029
1022
  const step_r31 = i0.ɵɵnextContext().$implicit;
1030
1023
  const ctx_r1 = i0.ɵɵnextContext(2);
1031
1024
  i0.ɵɵclassProp("step-line-active", ctx_r1.IsStepCompleted(step_r31.Number));
1032
1025
  } }
1033
- function ConnectionsComponent_Conditional_3_For_9_Template(rf, ctx) { if (rf & 1) {
1034
- i0.ɵɵelementStart(0, "div", 183)(1, "div", 184);
1035
- i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_3_For_9_Conditional_2_Template, 1, 0, "i", 146)(3, ConnectionsComponent_Conditional_3_For_9_Conditional_3_Template, 1, 1);
1026
+ function ConnectionsComponent_Conditional_9_For_9_Template(rf, ctx) { if (rf & 1) {
1027
+ i0.ɵɵelementStart(0, "div", 184)(1, "div", 185);
1028
+ i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_9_For_9_Conditional_2_Template, 1, 0, "i", 147)(3, ConnectionsComponent_Conditional_9_For_9_Conditional_3_Template, 1, 1);
1036
1029
  i0.ɵɵelementEnd();
1037
- i0.ɵɵelementStart(4, "span", 185);
1030
+ i0.ɵɵelementStart(4, "span", 186);
1038
1031
  i0.ɵɵtext(5);
1039
1032
  i0.ɵɵelementEnd()();
1040
- i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_3_For_9_Conditional_6_Template, 1, 2, "div", 186);
1033
+ i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_9_For_9_Conditional_6_Template, 1, 2, "div", 187);
1041
1034
  } if (rf & 2) {
1042
1035
  const step_r31 = ctx.$implicit;
1043
1036
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -1049,25 +1042,25 @@ function ConnectionsComponent_Conditional_3_For_9_Template(rf, ctx) { if (rf & 1
1049
1042
  i0.ɵɵadvance();
1050
1043
  i0.ɵɵconditional(step_r31.Number < ctx_r1.WizardSteps.length ? 6 : -1);
1051
1044
  } }
1052
- function ConnectionsComponent_Conditional_3_Conditional_11_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1053
- i0.ɵɵelementStart(0, "div", 192);
1054
- i0.ɵɵelement(1, "i", 194);
1045
+ function ConnectionsComponent_Conditional_9_Conditional_11_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1046
+ i0.ɵɵelementStart(0, "div", 193);
1047
+ i0.ɵɵelement(1, "i", 195);
1055
1048
  i0.ɵɵelementStart(2, "p");
1056
1049
  i0.ɵɵtext(3, "No integrations configured");
1057
1050
  i0.ɵɵelementEnd();
1058
- i0.ɵɵelementStart(4, "span", 195);
1051
+ i0.ɵɵelementStart(4, "span", 196);
1059
1052
  i0.ɵɵtext(5, "Configure integration definitions in the admin area first.");
1060
1053
  i0.ɵɵelementEnd()();
1061
1054
  } }
1062
- function ConnectionsComponent_Conditional_3_Conditional_11_Conditional_7_Template(rf, ctx) { if (rf & 1) {
1063
- i0.ɵɵelementStart(0, "div", 192);
1064
- i0.ɵɵelement(1, "i", 196);
1055
+ function ConnectionsComponent_Conditional_9_Conditional_11_Conditional_7_Template(rf, ctx) { if (rf & 1) {
1056
+ i0.ɵɵelementStart(0, "div", 193);
1057
+ i0.ɵɵelement(1, "i", 197);
1065
1058
  i0.ɵɵelementStart(2, "p");
1066
1059
  i0.ɵɵtext(3, "No matching integrations");
1067
1060
  i0.ɵɵelementEnd()();
1068
1061
  } }
1069
- function ConnectionsComponent_Conditional_3_Conditional_11_Conditional_8_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1070
- i0.ɵɵelementStart(0, "div", 201);
1062
+ function ConnectionsComponent_Conditional_9_Conditional_11_Conditional_8_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1063
+ i0.ɵɵelementStart(0, "div", 202);
1071
1064
  i0.ɵɵtext(1);
1072
1065
  i0.ɵɵelementEnd();
1073
1066
  } if (rf & 2) {
@@ -1075,17 +1068,17 @@ function ConnectionsComponent_Conditional_3_Conditional_11_Conditional_8_For_2_C
1075
1068
  i0.ɵɵadvance();
1076
1069
  i0.ɵɵtextInterpolate(def_r34.Description);
1077
1070
  } }
1078
- function ConnectionsComponent_Conditional_3_Conditional_11_Conditional_8_For_2_Template(rf, ctx) { if (rf & 1) {
1071
+ function ConnectionsComponent_Conditional_9_Conditional_11_Conditional_8_For_2_Template(rf, ctx) { if (rf & 1) {
1079
1072
  const _r33 = i0.ɵɵgetCurrentView();
1080
- i0.ɵɵelementStart(0, "div", 198);
1081
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_3_Conditional_11_Conditional_8_For_2_Template_div_click_0_listener() { const def_r34 = i0.ɵɵrestoreView(_r33).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.SelectIntegration(def_r34)); });
1082
- i0.ɵɵelementStart(1, "div", 199);
1073
+ i0.ɵɵelementStart(0, "div", 199);
1074
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_11_Conditional_8_For_2_Template_div_click_0_listener() { const def_r34 = i0.ɵɵrestoreView(_r33).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.SelectIntegration(def_r34)); });
1075
+ i0.ɵɵelementStart(1, "div", 200);
1083
1076
  i0.ɵɵelement(2, "i");
1084
1077
  i0.ɵɵelementEnd();
1085
- i0.ɵɵelementStart(3, "div", 200);
1078
+ i0.ɵɵelementStart(3, "div", 201);
1086
1079
  i0.ɵɵtext(4);
1087
1080
  i0.ɵɵelementEnd();
1088
- i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_3_Conditional_11_Conditional_8_For_2_Conditional_5_Template, 2, 1, "div", 201);
1081
+ i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_9_Conditional_11_Conditional_8_For_2_Conditional_5_Template, 2, 1, "div", 202);
1089
1082
  i0.ɵɵelementEnd();
1090
1083
  } if (rf & 2) {
1091
1084
  const def_r34 = ctx.$implicit;
@@ -1100,26 +1093,26 @@ function ConnectionsComponent_Conditional_3_Conditional_11_Conditional_8_For_2_T
1100
1093
  i0.ɵɵadvance();
1101
1094
  i0.ɵɵconditional(def_r34.Description ? 5 : -1);
1102
1095
  } }
1103
- function ConnectionsComponent_Conditional_3_Conditional_11_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1104
- i0.ɵɵelementStart(0, "div", 193);
1105
- i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_3_Conditional_11_Conditional_8_For_2_Template, 6, 8, "div", 197, _forTrack2);
1096
+ function ConnectionsComponent_Conditional_9_Conditional_11_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1097
+ i0.ɵɵelementStart(0, "div", 194);
1098
+ i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_9_Conditional_11_Conditional_8_For_2_Template, 6, 8, "div", 198, _forTrack2);
1106
1099
  i0.ɵɵelementEnd();
1107
1100
  } if (rf & 2) {
1108
1101
  const ctx_r1 = i0.ɵɵnextContext(3);
1109
1102
  i0.ɵɵadvance();
1110
1103
  i0.ɵɵrepeater(ctx_r1.FilteredIntegrations);
1111
1104
  } }
1112
- function ConnectionsComponent_Conditional_3_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1105
+ function ConnectionsComponent_Conditional_9_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1113
1106
  const _r32 = i0.ɵɵgetCurrentView();
1114
- i0.ɵɵelementStart(0, "div", 177)(1, "h3", 188);
1107
+ i0.ɵɵelementStart(0, "div", 178)(1, "h3", 189);
1115
1108
  i0.ɵɵtext(2, "What system do you want to connect?");
1116
1109
  i0.ɵɵelementEnd();
1117
- i0.ɵɵelementStart(3, "div", 189);
1118
- i0.ɵɵelement(4, "i", 190);
1119
- i0.ɵɵelementStart(5, "input", 191);
1120
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_3_Conditional_11_Template_input_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r32); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.SearchQuery, $event) || (ctx_r1.SearchQuery = $event); return i0.ɵɵresetView($event); });
1110
+ i0.ɵɵelementStart(3, "div", 190);
1111
+ i0.ɵɵelement(4, "i", 191);
1112
+ i0.ɵɵelementStart(5, "input", 192);
1113
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_9_Conditional_11_Template_input_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r32); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.SearchQuery, $event) || (ctx_r1.SearchQuery = $event); return i0.ɵɵresetView($event); });
1121
1114
  i0.ɵɵelementEnd()();
1122
- i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_3_Conditional_11_Conditional_6_Template, 6, 0, "div", 192)(7, ConnectionsComponent_Conditional_3_Conditional_11_Conditional_7_Template, 4, 0, "div", 192)(8, ConnectionsComponent_Conditional_3_Conditional_11_Conditional_8_Template, 3, 0, "div", 193);
1115
+ i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_9_Conditional_11_Conditional_6_Template, 6, 0, "div", 193)(7, ConnectionsComponent_Conditional_9_Conditional_11_Conditional_7_Template, 4, 0, "div", 193)(8, ConnectionsComponent_Conditional_9_Conditional_11_Conditional_8_Template, 3, 0, "div", 194);
1123
1116
  i0.ɵɵelementEnd();
1124
1117
  } if (rf & 2) {
1125
1118
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -1128,8 +1121,8 @@ function ConnectionsComponent_Conditional_3_Conditional_11_Template(rf, ctx) { i
1128
1121
  i0.ɵɵadvance();
1129
1122
  i0.ɵɵconditional(ctx_r1.FilteredIntegrations.length === 0 && ctx_r1.AvailableIntegrations.length === 0 ? 6 : ctx_r1.FilteredIntegrations.length === 0 ? 7 : 8);
1130
1123
  } }
1131
- function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_10_For_4_Template(rf, ctx) { if (rf & 1) {
1132
- i0.ɵɵelementStart(0, "option", 107);
1124
+ function ConnectionsComponent_Conditional_9_Conditional_12_Conditional_10_For_4_Template(rf, ctx) { if (rf & 1) {
1125
+ i0.ɵɵelementStart(0, "option", 108);
1133
1126
  i0.ɵɵtext(1);
1134
1127
  i0.ɵɵelementEnd();
1135
1128
  } if (rf & 2) {
@@ -1138,14 +1131,14 @@ function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_10_For_4_
1138
1131
  i0.ɵɵadvance();
1139
1132
  i0.ɵɵtextInterpolate(company_r37.Name);
1140
1133
  } }
1141
- function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1134
+ function ConnectionsComponent_Conditional_9_Conditional_12_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1142
1135
  const _r36 = i0.ɵɵgetCurrentView();
1143
- i0.ɵɵelementStart(0, "select", 217);
1144
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_10_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r36); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.SelectedCompanyID, $event) || (ctx_r1.SelectedCompanyID = $event); return i0.ɵɵresetView($event); });
1145
- i0.ɵɵelementStart(1, "option", 106);
1136
+ i0.ɵɵelementStart(0, "select", 218);
1137
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_9_Conditional_12_Conditional_10_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r36); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.SelectedCompanyID, $event) || (ctx_r1.SelectedCompanyID = $event); return i0.ɵɵresetView($event); });
1138
+ i0.ɵɵelementStart(1, "option", 107);
1146
1139
  i0.ɵɵtext(2, "Select a company...");
1147
1140
  i0.ɵɵelementEnd();
1148
- i0.ɵɵrepeaterCreate(3, ConnectionsComponent_Conditional_3_Conditional_12_Conditional_10_For_4_Template, 2, 2, "option", 107, _forTrack2);
1141
+ i0.ɵɵrepeaterCreate(3, ConnectionsComponent_Conditional_9_Conditional_12_Conditional_10_For_4_Template, 2, 2, "option", 108, _forTrack2);
1149
1142
  i0.ɵɵelementEnd();
1150
1143
  } if (rf & 2) {
1151
1144
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -1155,56 +1148,56 @@ function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_10_Templa
1155
1148
  i0.ɵɵadvance(2);
1156
1149
  i0.ɵɵrepeater(ctx_r1.Companies);
1157
1150
  } }
1158
- function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1159
- i0.ɵɵelement(0, "input", 207);
1151
+ function ConnectionsComponent_Conditional_9_Conditional_12_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1152
+ i0.ɵɵelement(0, "input", 208);
1160
1153
  } if (rf & 2) {
1161
1154
  const ctx_r1 = i0.ɵɵnextContext(3);
1162
1155
  i0.ɵɵproperty("value", ctx_r1.Companies[0].Name);
1163
1156
  } }
1164
- function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1165
- i0.ɵɵelementStart(0, "div", 208);
1157
+ function ConnectionsComponent_Conditional_9_Conditional_12_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1158
+ i0.ɵɵelementStart(0, "div", 209);
1166
1159
  i0.ɵɵtext(1, "No companies available. Create one in the admin area.");
1167
1160
  i0.ɵɵelementEnd();
1168
1161
  } }
1169
- function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_22_Template(rf, ctx) { if (rf & 1) {
1162
+ function ConnectionsComponent_Conditional_9_Conditional_12_Conditional_22_Template(rf, ctx) { if (rf & 1) {
1170
1163
  const _r38 = i0.ɵɵgetCurrentView();
1171
- i0.ɵɵelementStart(0, "div", 213)(1, "div", 218);
1172
- i0.ɵɵelement(2, "i", 219);
1164
+ i0.ɵɵelementStart(0, "div", 214)(1, "div", 219);
1165
+ i0.ɵɵelement(2, "i", 220);
1173
1166
  i0.ɵɵelementStart(3, "span");
1174
1167
  i0.ɵɵtext(4);
1175
1168
  i0.ɵɵelementEnd()();
1176
- i0.ɵɵelementStart(5, "button", 220);
1177
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_22_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r38); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ClearCredential()); });
1178
- i0.ɵɵelement(6, "i", 118);
1169
+ i0.ɵɵelementStart(5, "button", 221);
1170
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_12_Conditional_22_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r38); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ClearCredential()); });
1171
+ i0.ɵɵelement(6, "i", 119);
1179
1172
  i0.ɵɵelementEnd()();
1180
1173
  } if (rf & 2) {
1181
1174
  const ctx_r1 = i0.ɵɵnextContext(3);
1182
1175
  i0.ɵɵadvance(4);
1183
1176
  i0.ɵɵtextInterpolate(ctx_r1.SelectedCredential.Name);
1184
1177
  } }
1185
- function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_23_Template(rf, ctx) { if (rf & 1) {
1178
+ function ConnectionsComponent_Conditional_9_Conditional_12_Conditional_23_Template(rf, ctx) { if (rf & 1) {
1186
1179
  const _r39 = i0.ɵɵgetCurrentView();
1187
- i0.ɵɵelementStart(0, "div", 214)(1, "button", 42);
1188
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_23_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r39); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ShowExistingCredentials()); });
1189
- i0.ɵɵelement(2, "i", 219);
1180
+ i0.ɵɵelementStart(0, "div", 215)(1, "button", 43);
1181
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_12_Conditional_23_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r39); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ShowExistingCredentials()); });
1182
+ i0.ɵɵelement(2, "i", 220);
1190
1183
  i0.ɵɵtext(3, " Choose Existing Credential ");
1191
1184
  i0.ɵɵelementEnd();
1192
- i0.ɵɵelementStart(4, "button", 42);
1193
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_23_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r39); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenCredentialDialog()); });
1194
- i0.ɵɵelement(5, "i", 12);
1185
+ i0.ɵɵelementStart(4, "button", 43);
1186
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_12_Conditional_23_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r39); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenCredentialDialog()); });
1187
+ i0.ɵɵelement(5, "i", 13);
1195
1188
  i0.ɵɵtext(6, " Create New Credential ");
1196
1189
  i0.ɵɵelementEnd()();
1197
1190
  } }
1198
- function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_24_Template(rf, ctx) { if (rf & 1) {
1199
- i0.ɵɵelementStart(0, "div", 215);
1200
- i0.ɵɵelement(1, "mj-loading", 221);
1191
+ function ConnectionsComponent_Conditional_9_Conditional_12_Conditional_24_Template(rf, ctx) { if (rf & 1) {
1192
+ i0.ɵɵelementStart(0, "div", 216);
1193
+ i0.ɵɵelement(1, "mj-loading", 222);
1201
1194
  i0.ɵɵelementEnd();
1202
1195
  } }
1203
- function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_25_For_2_Template(rf, ctx) { if (rf & 1) {
1196
+ function ConnectionsComponent_Conditional_9_Conditional_12_Conditional_25_For_2_Template(rf, ctx) { if (rf & 1) {
1204
1197
  const _r40 = i0.ɵɵgetCurrentView();
1205
- i0.ɵɵelementStart(0, "div", 223);
1206
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_25_For_2_Template_div_click_0_listener() { const cred_r41 = i0.ɵɵrestoreView(_r40).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.SelectExistingCredential(cred_r41)); });
1207
- i0.ɵɵelement(1, "i", 219);
1198
+ i0.ɵɵelementStart(0, "div", 224);
1199
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_12_Conditional_25_For_2_Template_div_click_0_listener() { const cred_r41 = i0.ɵɵrestoreView(_r40).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.SelectExistingCredential(cred_r41)); });
1200
+ i0.ɵɵelement(1, "i", 220);
1208
1201
  i0.ɵɵelementStart(2, "span");
1209
1202
  i0.ɵɵtext(3);
1210
1203
  i0.ɵɵelementEnd()();
@@ -1213,45 +1206,45 @@ function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_25_For_2_
1213
1206
  i0.ɵɵadvance(3);
1214
1207
  i0.ɵɵtextInterpolate(cred_r41.Name);
1215
1208
  } }
1216
- function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_25_Template(rf, ctx) { if (rf & 1) {
1217
- i0.ɵɵelementStart(0, "div", 216);
1218
- i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_3_Conditional_12_Conditional_25_For_2_Template, 4, 1, "div", 222, _forTrack2);
1209
+ function ConnectionsComponent_Conditional_9_Conditional_12_Conditional_25_Template(rf, ctx) { if (rf & 1) {
1210
+ i0.ɵɵelementStart(0, "div", 217);
1211
+ i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_9_Conditional_12_Conditional_25_For_2_Template, 4, 1, "div", 223, _forTrack2);
1219
1212
  i0.ɵɵelementEnd();
1220
1213
  } if (rf & 2) {
1221
1214
  const ctx_r1 = i0.ɵɵnextContext(3);
1222
1215
  i0.ɵɵadvance();
1223
1216
  i0.ɵɵrepeater(ctx_r1.ExistingCredentials);
1224
1217
  } }
1225
- function ConnectionsComponent_Conditional_3_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1218
+ function ConnectionsComponent_Conditional_9_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1226
1219
  const _r35 = i0.ɵɵgetCurrentView();
1227
- i0.ɵɵelementStart(0, "div", 177)(1, "h3", 188);
1220
+ i0.ɵɵelementStart(0, "div", 178)(1, "h3", 189);
1228
1221
  i0.ɵɵtext(2, "Set up your connection");
1229
1222
  i0.ɵɵelementEnd();
1230
- i0.ɵɵelementStart(3, "div", 202)(4, "label", 203);
1223
+ i0.ɵɵelementStart(3, "div", 203)(4, "label", 204);
1231
1224
  i0.ɵɵtext(5, "Connection Name");
1232
1225
  i0.ɵɵelementEnd();
1233
- i0.ɵɵelementStart(6, "input", 204);
1234
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_3_Conditional_12_Template_input_ngModelChange_6_listener($event) { i0.ɵɵrestoreView(_r35); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.ConnectionName, $event) || (ctx_r1.ConnectionName = $event); return i0.ɵɵresetView($event); });
1226
+ i0.ɵɵelementStart(6, "input", 205);
1227
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_9_Conditional_12_Template_input_ngModelChange_6_listener($event) { i0.ɵɵrestoreView(_r35); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.ConnectionName, $event) || (ctx_r1.ConnectionName = $event); return i0.ɵɵresetView($event); });
1235
1228
  i0.ɵɵelementEnd()();
1236
- i0.ɵɵelementStart(7, "div", 202)(8, "label", 205);
1229
+ i0.ɵɵelementStart(7, "div", 203)(8, "label", 206);
1237
1230
  i0.ɵɵtext(9, "Company");
1238
1231
  i0.ɵɵelementEnd();
1239
- i0.ɵɵconditionalCreate(10, ConnectionsComponent_Conditional_3_Conditional_12_Conditional_10_Template, 5, 2, "select", 206)(11, ConnectionsComponent_Conditional_3_Conditional_12_Conditional_11_Template, 1, 1, "input", 207)(12, ConnectionsComponent_Conditional_3_Conditional_12_Conditional_12_Template, 2, 0, "div", 208);
1232
+ i0.ɵɵconditionalCreate(10, ConnectionsComponent_Conditional_9_Conditional_12_Conditional_10_Template, 5, 2, "select", 207)(11, ConnectionsComponent_Conditional_9_Conditional_12_Conditional_11_Template, 1, 1, "input", 208)(12, ConnectionsComponent_Conditional_9_Conditional_12_Conditional_12_Template, 2, 0, "div", 209);
1240
1233
  i0.ɵɵelementEnd();
1241
- i0.ɵɵelementStart(13, "div", 202)(14, "label", 209);
1234
+ i0.ɵɵelementStart(13, "div", 203)(14, "label", 210);
1242
1235
  i0.ɵɵtext(15, "Description ");
1243
- i0.ɵɵelementStart(16, "span", 210);
1236
+ i0.ɵɵelementStart(16, "span", 211);
1244
1237
  i0.ɵɵtext(17, "(optional)");
1245
1238
  i0.ɵɵelementEnd()();
1246
- i0.ɵɵelementStart(18, "textarea", 211);
1247
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_3_Conditional_12_Template_textarea_ngModelChange_18_listener($event) { i0.ɵɵrestoreView(_r35); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.ConnectionDescription, $event) || (ctx_r1.ConnectionDescription = $event); return i0.ɵɵresetView($event); });
1239
+ i0.ɵɵelementStart(18, "textarea", 212);
1240
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_9_Conditional_12_Template_textarea_ngModelChange_18_listener($event) { i0.ɵɵrestoreView(_r35); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.ConnectionDescription, $event) || (ctx_r1.ConnectionDescription = $event); return i0.ɵɵresetView($event); });
1248
1241
  i0.ɵɵelementEnd()();
1249
- i0.ɵɵelementStart(19, "div", 202)(20, "label", 212);
1242
+ i0.ɵɵelementStart(19, "div", 203)(20, "label", 213);
1250
1243
  i0.ɵɵtext(21, "Credential");
1251
1244
  i0.ɵɵelementEnd();
1252
- i0.ɵɵconditionalCreate(22, ConnectionsComponent_Conditional_3_Conditional_12_Conditional_22_Template, 7, 1, "div", 213)(23, ConnectionsComponent_Conditional_3_Conditional_12_Conditional_23_Template, 7, 0, "div", 214);
1253
- i0.ɵɵconditionalCreate(24, ConnectionsComponent_Conditional_3_Conditional_12_Conditional_24_Template, 2, 0, "div", 215);
1254
- i0.ɵɵconditionalCreate(25, ConnectionsComponent_Conditional_3_Conditional_12_Conditional_25_Template, 3, 0, "div", 216);
1245
+ i0.ɵɵconditionalCreate(22, ConnectionsComponent_Conditional_9_Conditional_12_Conditional_22_Template, 7, 1, "div", 214)(23, ConnectionsComponent_Conditional_9_Conditional_12_Conditional_23_Template, 7, 0, "div", 215);
1246
+ i0.ɵɵconditionalCreate(24, ConnectionsComponent_Conditional_9_Conditional_12_Conditional_24_Template, 2, 0, "div", 216);
1247
+ i0.ɵɵconditionalCreate(25, ConnectionsComponent_Conditional_9_Conditional_12_Conditional_25_Template, 3, 0, "div", 217);
1255
1248
  i0.ɵɵelementEnd()();
1256
1249
  } if (rf & 2) {
1257
1250
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -1268,33 +1261,33 @@ function ConnectionsComponent_Conditional_3_Conditional_12_Template(rf, ctx) { i
1268
1261
  i0.ɵɵadvance();
1269
1262
  i0.ɵɵconditional(!ctx_r1.IsLoadingCredentials && ctx_r1.ExistingCredentials.length > 0 && !ctx_r1.SelectedCredential ? 25 : -1);
1270
1263
  } }
1271
- function ConnectionsComponent_Conditional_3_Conditional_13_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1264
+ function ConnectionsComponent_Conditional_9_Conditional_13_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1272
1265
  const _r42 = i0.ɵɵgetCurrentView();
1273
- i0.ɵɵelementStart(0, "div", 224)(1, "button", 227);
1274
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_3_Conditional_13_Conditional_3_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r42); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.TestNewConnection()); });
1275
- i0.ɵɵelement(2, "i", 228);
1266
+ i0.ɵɵelementStart(0, "div", 225)(1, "button", 228);
1267
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_13_Conditional_3_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r42); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.TestNewConnection()); });
1268
+ i0.ɵɵelement(2, "i", 229);
1276
1269
  i0.ɵɵtext(3, " Test Connection ");
1277
1270
  i0.ɵɵelementEnd();
1278
- i0.ɵɵelementStart(4, "p", 229);
1271
+ i0.ɵɵelementStart(4, "p", 230);
1279
1272
  i0.ɵɵtext(5, "We'll verify we can reach your system and authenticate.");
1280
1273
  i0.ɵɵelementEnd()();
1281
1274
  } }
1282
- function ConnectionsComponent_Conditional_3_Conditional_13_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1283
- i0.ɵɵelementStart(0, "div", 225)(1, "div", 230);
1284
- i0.ɵɵelement(2, "i", 231);
1275
+ function ConnectionsComponent_Conditional_9_Conditional_13_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1276
+ i0.ɵɵelementStart(0, "div", 226)(1, "div", 231);
1277
+ i0.ɵɵelement(2, "i", 232);
1285
1278
  i0.ɵɵelementEnd();
1286
1279
  i0.ɵɵelementStart(3, "p");
1287
1280
  i0.ɵɵtext(4, "Testing connection...");
1288
1281
  i0.ɵɵelementEnd()();
1289
1282
  } }
1290
- function ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1291
- i0.ɵɵelement(0, "i", 47);
1292
- } }
1293
- function ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1283
+ function ConnectionsComponent_Conditional_9_Conditional_13_Conditional_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1294
1284
  i0.ɵɵelement(0, "i", 48);
1295
1285
  } }
1296
- function ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1297
- i0.ɵɵelementStart(0, "div", 235);
1286
+ function ConnectionsComponent_Conditional_9_Conditional_13_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1287
+ i0.ɵɵelement(0, "i", 49);
1288
+ } }
1289
+ function ConnectionsComponent_Conditional_9_Conditional_13_Conditional_5_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1290
+ i0.ɵɵelementStart(0, "div", 236);
1298
1291
  i0.ɵɵtext(1);
1299
1292
  i0.ɵɵelementEnd();
1300
1293
  } if (rf & 2) {
@@ -1302,23 +1295,23 @@ function ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Conditi
1302
1295
  i0.ɵɵadvance();
1303
1296
  i0.ɵɵtextInterpolate1(" Server version: ", ctx_r1.TestResult.ServerVersion, " ");
1304
1297
  } }
1305
- function ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Conditional_7_Template(rf, ctx) { if (rf & 1) {
1298
+ function ConnectionsComponent_Conditional_9_Conditional_13_Conditional_5_Conditional_7_Template(rf, ctx) { if (rf & 1) {
1306
1299
  const _r43 = i0.ɵɵgetCurrentView();
1307
- i0.ɵɵelementStart(0, "button", 237);
1308
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r43); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.TestNewConnection()); });
1309
- i0.ɵɵelement(1, "i", 238);
1300
+ i0.ɵɵelementStart(0, "button", 238);
1301
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_13_Conditional_5_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r43); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.TestNewConnection()); });
1302
+ i0.ɵɵelement(1, "i", 239);
1310
1303
  i0.ɵɵtext(2, " Retry ");
1311
1304
  i0.ɵɵelementEnd();
1312
1305
  } }
1313
- function ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1314
- i0.ɵɵelementStart(0, "div", 232)(1, "div", 233);
1315
- i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Conditional_2_Template, 1, 0, "i", 47)(3, ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Conditional_3_Template, 1, 0, "i", 48);
1306
+ function ConnectionsComponent_Conditional_9_Conditional_13_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1307
+ i0.ɵɵelementStart(0, "div", 233)(1, "div", 234);
1308
+ i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_9_Conditional_13_Conditional_5_Conditional_2_Template, 1, 0, "i", 48)(3, ConnectionsComponent_Conditional_9_Conditional_13_Conditional_5_Conditional_3_Template, 1, 0, "i", 49);
1316
1309
  i0.ɵɵelementEnd();
1317
- i0.ɵɵelementStart(4, "div", 234);
1310
+ i0.ɵɵelementStart(4, "div", 235);
1318
1311
  i0.ɵɵtext(5);
1319
1312
  i0.ɵɵelementEnd();
1320
- i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Conditional_6_Template, 2, 1, "div", 235);
1321
- i0.ɵɵconditionalCreate(7, ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Conditional_7_Template, 3, 0, "button", 236);
1313
+ i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_9_Conditional_13_Conditional_5_Conditional_6_Template, 2, 1, "div", 236);
1314
+ i0.ɵɵconditionalCreate(7, ConnectionsComponent_Conditional_9_Conditional_13_Conditional_5_Conditional_7_Template, 3, 0, "button", 237);
1322
1315
  i0.ɵɵelementEnd();
1323
1316
  } if (rf & 2) {
1324
1317
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -1332,13 +1325,13 @@ function ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Templat
1332
1325
  i0.ɵɵadvance();
1333
1326
  i0.ɵɵconditional(!ctx_r1.TestResult.Success ? 7 : -1);
1334
1327
  } }
1335
- function ConnectionsComponent_Conditional_3_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1336
- i0.ɵɵelementStart(0, "div", 178)(1, "h3", 188);
1328
+ function ConnectionsComponent_Conditional_9_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1329
+ i0.ɵɵelementStart(0, "div", 179)(1, "h3", 189);
1337
1330
  i0.ɵɵtext(2, "Let's verify everything works");
1338
1331
  i0.ɵɵelementEnd();
1339
- i0.ɵɵconditionalCreate(3, ConnectionsComponent_Conditional_3_Conditional_13_Conditional_3_Template, 6, 0, "div", 224);
1340
- i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_3_Conditional_13_Conditional_4_Template, 5, 0, "div", 225);
1341
- i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Template, 8, 8, "div", 226);
1332
+ i0.ɵɵconditionalCreate(3, ConnectionsComponent_Conditional_9_Conditional_13_Conditional_3_Template, 6, 0, "div", 225);
1333
+ i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_9_Conditional_13_Conditional_4_Template, 5, 0, "div", 226);
1334
+ i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_9_Conditional_13_Conditional_5_Template, 8, 8, "div", 227);
1342
1335
  i0.ɵɵelementEnd();
1343
1336
  } if (rf & 2) {
1344
1337
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -1349,48 +1342,48 @@ function ConnectionsComponent_Conditional_3_Conditional_13_Template(rf, ctx) { i
1349
1342
  i0.ɵɵadvance();
1350
1343
  i0.ɵɵconditional(ctx_r1.TestResult ? 5 : -1);
1351
1344
  } }
1352
- function ConnectionsComponent_Conditional_3_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1345
+ function ConnectionsComponent_Conditional_9_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1353
1346
  const _r44 = i0.ɵɵgetCurrentView();
1354
- i0.ɵɵelementStart(0, "button", 42);
1355
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_3_Conditional_17_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r44); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.PreviousStep()); });
1347
+ i0.ɵɵelementStart(0, "button", 43);
1348
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_17_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r44); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.PreviousStep()); });
1356
1349
  i0.ɵɵtext(1, " Back ");
1357
1350
  i0.ɵɵelementEnd();
1358
1351
  } }
1359
- function ConnectionsComponent_Conditional_3_Conditional_19_Template(rf, ctx) { if (rf & 1) {
1360
- i0.ɵɵelement(0, "i", 41);
1352
+ function ConnectionsComponent_Conditional_9_Conditional_19_Template(rf, ctx) { if (rf & 1) {
1353
+ i0.ɵɵelement(0, "i", 42);
1361
1354
  i0.ɵɵtext(1, " Saving... ");
1362
1355
  } }
1363
- function ConnectionsComponent_Conditional_3_Conditional_20_Template(rf, ctx) { if (rf & 1) {
1356
+ function ConnectionsComponent_Conditional_9_Conditional_20_Template(rf, ctx) { if (rf & 1) {
1364
1357
  i0.ɵɵtext(0);
1365
1358
  } if (rf & 2) {
1366
1359
  const ctx_r1 = i0.ɵɵnextContext(2);
1367
1360
  i0.ɵɵtextInterpolate1(" ", ctx_r1.NextButtonLabel, " ");
1368
1361
  } }
1369
- function ConnectionsComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1362
+ function ConnectionsComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1370
1363
  const _r30 = i0.ɵɵgetCurrentView();
1371
- i0.ɵɵelementStart(0, "div", 3)(1, "div", 172)(2, "button", 173);
1372
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_3_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r30); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseWizard()); });
1373
- i0.ɵɵelement(3, "i", 67);
1364
+ i0.ɵɵelementStart(0, "div", 8)(1, "div", 173)(2, "button", 174);
1365
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r30); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseWizard()); });
1366
+ i0.ɵɵelement(3, "i", 68);
1374
1367
  i0.ɵɵtext(4, " Back to Integrations ");
1375
1368
  i0.ɵɵelementEnd();
1376
- i0.ɵɵelementStart(5, "h2", 174);
1369
+ i0.ɵɵelementStart(5, "h2", 175);
1377
1370
  i0.ɵɵtext(6, "New Integration");
1378
1371
  i0.ɵɵelementEnd()();
1379
- i0.ɵɵelementStart(7, "div", 175);
1380
- i0.ɵɵrepeaterCreate(8, ConnectionsComponent_Conditional_3_For_9_Template, 7, 7, null, null, _forTrack3);
1381
- i0.ɵɵelementEnd();
1382
- i0.ɵɵelementStart(10, "div", 176);
1383
- i0.ɵɵconditionalCreate(11, ConnectionsComponent_Conditional_3_Conditional_11_Template, 9, 2, "div", 177);
1384
- i0.ɵɵconditionalCreate(12, ConnectionsComponent_Conditional_3_Conditional_12_Template, 26, 6, "div", 177);
1385
- i0.ɵɵconditionalCreate(13, ConnectionsComponent_Conditional_3_Conditional_13_Template, 6, 3, "div", 178);
1386
- i0.ɵɵelementEnd();
1387
- i0.ɵɵelementStart(14, "div", 179);
1388
- i0.ɵɵelement(15, "div", 180);
1389
- i0.ɵɵelementStart(16, "div", 181);
1390
- i0.ɵɵconditionalCreate(17, ConnectionsComponent_Conditional_3_Conditional_17_Template, 2, 0, "button", 182);
1391
- i0.ɵɵelementStart(18, "button", 54);
1392
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_3_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r30); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.FinishWizard()); });
1393
- i0.ɵɵconditionalCreate(19, ConnectionsComponent_Conditional_3_Conditional_19_Template, 2, 0)(20, ConnectionsComponent_Conditional_3_Conditional_20_Template, 1, 1);
1372
+ i0.ɵɵelementStart(7, "div", 176);
1373
+ i0.ɵɵrepeaterCreate(8, ConnectionsComponent_Conditional_9_For_9_Template, 7, 7, null, null, _forTrack3);
1374
+ i0.ɵɵelementEnd();
1375
+ i0.ɵɵelementStart(10, "div", 177);
1376
+ i0.ɵɵconditionalCreate(11, ConnectionsComponent_Conditional_9_Conditional_11_Template, 9, 2, "div", 178);
1377
+ i0.ɵɵconditionalCreate(12, ConnectionsComponent_Conditional_9_Conditional_12_Template, 26, 6, "div", 178);
1378
+ i0.ɵɵconditionalCreate(13, ConnectionsComponent_Conditional_9_Conditional_13_Template, 6, 3, "div", 179);
1379
+ i0.ɵɵelementEnd();
1380
+ i0.ɵɵelementStart(14, "div", 180);
1381
+ i0.ɵɵelement(15, "div", 181);
1382
+ i0.ɵɵelementStart(16, "div", 182);
1383
+ i0.ɵɵconditionalCreate(17, ConnectionsComponent_Conditional_9_Conditional_17_Template, 2, 0, "button", 183);
1384
+ i0.ɵɵelementStart(18, "button", 55);
1385
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r30); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.FinishWizard()); });
1386
+ i0.ɵɵconditionalCreate(19, ConnectionsComponent_Conditional_9_Conditional_19_Template, 2, 0)(20, ConnectionsComponent_Conditional_9_Conditional_20_Template, 1, 1);
1394
1387
  i0.ɵɵelementEnd()()()();
1395
1388
  } if (rf & 2) {
1396
1389
  const ctx_r1 = i0.ɵɵnextContext();
@@ -1409,32 +1402,32 @@ function ConnectionsComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1409
1402
  i0.ɵɵadvance();
1410
1403
  i0.ɵɵconditional(ctx_r1.IsSaving ? 19 : 20);
1411
1404
  } }
1412
- function ConnectionsComponent_Conditional_6_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1413
- i0.ɵɵelementStart(0, "div", 243);
1414
- i0.ɵɵelement(1, "mj-loading", 244);
1405
+ function ConnectionsComponent_Conditional_12_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1406
+ i0.ɵɵelementStart(0, "div", 244);
1407
+ i0.ɵɵelement(1, "mj-loading", 245);
1415
1408
  i0.ɵɵelementEnd();
1416
1409
  } }
1417
- function ConnectionsComponent_Conditional_6_Conditional_9_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1410
+ function ConnectionsComponent_Conditional_12_Conditional_9_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1418
1411
  const _r47 = i0.ɵɵgetCurrentView();
1419
- i0.ɵɵelementStart(0, "div", 252)(1, "div", 255);
1420
- i0.ɵɵelement(2, "i", 219);
1412
+ i0.ɵɵelementStart(0, "div", 253)(1, "div", 256);
1413
+ i0.ɵɵelement(2, "i", 220);
1421
1414
  i0.ɵɵelementStart(3, "span");
1422
1415
  i0.ɵɵtext(4);
1423
1416
  i0.ɵɵelementEnd()();
1424
- i0.ɵɵelementStart(5, "button", 256);
1425
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_6_Conditional_9_Conditional_17_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r47); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ClearEditCredential()); });
1426
- i0.ɵɵelement(6, "i", 118);
1417
+ i0.ɵɵelementStart(5, "button", 257);
1418
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_12_Conditional_9_Conditional_17_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r47); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ClearEditCredential()); });
1419
+ i0.ɵɵelement(6, "i", 119);
1427
1420
  i0.ɵɵelementEnd()();
1428
1421
  } if (rf & 2) {
1429
1422
  const ctx_r1 = i0.ɵɵnextContext(3);
1430
1423
  i0.ɵɵadvance(4);
1431
1424
  i0.ɵɵtextInterpolate(ctx_r1.EditCredential.Name);
1432
1425
  } }
1433
- function ConnectionsComponent_Conditional_6_Conditional_9_Conditional_18_Conditional_4_For_2_Template(rf, ctx) { if (rf & 1) {
1426
+ function ConnectionsComponent_Conditional_12_Conditional_9_Conditional_18_Conditional_4_For_2_Template(rf, ctx) { if (rf & 1) {
1434
1427
  const _r49 = i0.ɵɵgetCurrentView();
1435
- i0.ɵɵelementStart(0, "div", 261);
1436
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_6_Conditional_9_Conditional_18_Conditional_4_For_2_Template_div_click_0_listener() { const cred_r50 = i0.ɵɵrestoreView(_r49).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.SelectEditCredential(cred_r50)); });
1437
- i0.ɵɵelement(1, "i", 219);
1428
+ i0.ɵɵelementStart(0, "div", 262);
1429
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_12_Conditional_9_Conditional_18_Conditional_4_For_2_Template_div_click_0_listener() { const cred_r50 = i0.ɵɵrestoreView(_r49).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.SelectEditCredential(cred_r50)); });
1430
+ i0.ɵɵelement(1, "i", 220);
1438
1431
  i0.ɵɵelementStart(2, "span");
1439
1432
  i0.ɵɵtext(3);
1440
1433
  i0.ɵɵelementEnd()();
@@ -1443,77 +1436,77 @@ function ConnectionsComponent_Conditional_6_Conditional_9_Conditional_18_Conditi
1443
1436
  i0.ɵɵadvance(3);
1444
1437
  i0.ɵɵtextInterpolate(cred_r50.Name);
1445
1438
  } }
1446
- function ConnectionsComponent_Conditional_6_Conditional_9_Conditional_18_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1447
- i0.ɵɵelementStart(0, "div", 259);
1448
- i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_6_Conditional_9_Conditional_18_Conditional_4_For_2_Template, 4, 1, "div", 260, _forTrack2);
1439
+ function ConnectionsComponent_Conditional_12_Conditional_9_Conditional_18_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1440
+ i0.ɵɵelementStart(0, "div", 260);
1441
+ i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_12_Conditional_9_Conditional_18_Conditional_4_For_2_Template, 4, 1, "div", 261, _forTrack2);
1449
1442
  i0.ɵɵelementEnd();
1450
1443
  } if (rf & 2) {
1451
1444
  const ctx_r1 = i0.ɵɵnextContext(4);
1452
1445
  i0.ɵɵadvance();
1453
1446
  i0.ɵɵrepeater(ctx_r1.EditCredentials);
1454
1447
  } }
1455
- function ConnectionsComponent_Conditional_6_Conditional_9_Conditional_18_Template(rf, ctx) { if (rf & 1) {
1448
+ function ConnectionsComponent_Conditional_12_Conditional_9_Conditional_18_Template(rf, ctx) { if (rf & 1) {
1456
1449
  const _r48 = i0.ɵɵgetCurrentView();
1457
- i0.ɵɵelementStart(0, "div", 257)(1, "button", 258);
1458
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_6_Conditional_9_Conditional_18_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r48); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenEditCredentialDialog()); });
1459
- i0.ɵɵelement(2, "i", 12);
1450
+ i0.ɵɵelementStart(0, "div", 258)(1, "button", 259);
1451
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_12_Conditional_9_Conditional_18_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r48); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenEditCredentialDialog()); });
1452
+ i0.ɵɵelement(2, "i", 13);
1460
1453
  i0.ɵɵtext(3, " New Credential ");
1461
1454
  i0.ɵɵelementEnd()();
1462
- i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_6_Conditional_9_Conditional_18_Conditional_4_Template, 3, 0, "div", 259);
1455
+ i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_12_Conditional_9_Conditional_18_Conditional_4_Template, 3, 0, "div", 260);
1463
1456
  } if (rf & 2) {
1464
1457
  const ctx_r1 = i0.ɵɵnextContext(3);
1465
1458
  i0.ɵɵadvance(4);
1466
1459
  i0.ɵɵconditional(ctx_r1.EditCredentials.length > 0 ? 4 : -1);
1467
1460
  } }
1468
- function ConnectionsComponent_Conditional_6_Conditional_9_Conditional_31_Template(rf, ctx) { if (rf & 1) {
1469
- i0.ɵɵelement(0, "i", 41);
1461
+ function ConnectionsComponent_Conditional_12_Conditional_9_Conditional_31_Template(rf, ctx) { if (rf & 1) {
1462
+ i0.ɵɵelement(0, "i", 42);
1470
1463
  i0.ɵɵtext(1, " Saving... ");
1471
1464
  } }
1472
- function ConnectionsComponent_Conditional_6_Conditional_9_Conditional_32_Template(rf, ctx) { if (rf & 1) {
1465
+ function ConnectionsComponent_Conditional_12_Conditional_9_Conditional_32_Template(rf, ctx) { if (rf & 1) {
1473
1466
  i0.ɵɵtext(0, " Save Changes ");
1474
1467
  } }
1475
- function ConnectionsComponent_Conditional_6_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1468
+ function ConnectionsComponent_Conditional_12_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1476
1469
  const _r46 = i0.ɵɵgetCurrentView();
1477
- i0.ɵɵelementStart(0, "div", 245)(1, "div", 246)(2, "label", 247);
1470
+ i0.ɵɵelementStart(0, "div", 246)(1, "div", 247)(2, "label", 248);
1478
1471
  i0.ɵɵtext(3, "Connection Name");
1479
1472
  i0.ɵɵelementEnd();
1480
- i0.ɵɵelementStart(4, "input", 248);
1481
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_6_Conditional_9_Template_input_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r46); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.EditName, $event) || (ctx_r1.EditName = $event); return i0.ɵɵresetView($event); });
1473
+ i0.ɵɵelementStart(4, "input", 249);
1474
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_12_Conditional_9_Template_input_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r46); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.EditName, $event) || (ctx_r1.EditName = $event); return i0.ɵɵresetView($event); });
1482
1475
  i0.ɵɵelementEnd()();
1483
- i0.ɵɵelementStart(5, "div", 246)(6, "label", 247);
1476
+ i0.ɵɵelementStart(5, "div", 247)(6, "label", 248);
1484
1477
  i0.ɵɵtext(7, "Status");
1485
1478
  i0.ɵɵelementEnd();
1486
- i0.ɵɵelementStart(8, "div", 249)(9, "label", 250)(10, "input", 135);
1487
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_6_Conditional_9_Template_input_ngModelChange_10_listener($event) { i0.ɵɵrestoreView(_r46); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.EditIsActive, $event) || (ctx_r1.EditIsActive = $event); return i0.ɵɵresetView($event); });
1479
+ i0.ɵɵelementStart(8, "div", 250)(9, "label", 251)(10, "input", 136);
1480
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_12_Conditional_9_Template_input_ngModelChange_10_listener($event) { i0.ɵɵrestoreView(_r46); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.EditIsActive, $event) || (ctx_r1.EditIsActive = $event); return i0.ɵɵresetView($event); });
1488
1481
  i0.ɵɵelementEnd();
1489
- i0.ɵɵelement(11, "span", 162);
1482
+ i0.ɵɵelement(11, "span", 163);
1490
1483
  i0.ɵɵelementEnd();
1491
- i0.ɵɵelementStart(12, "span", 251);
1484
+ i0.ɵɵelementStart(12, "span", 252);
1492
1485
  i0.ɵɵtext(13);
1493
1486
  i0.ɵɵelementEnd()()();
1494
- i0.ɵɵelementStart(14, "div", 246)(15, "label", 247);
1487
+ i0.ɵɵelementStart(14, "div", 247)(15, "label", 248);
1495
1488
  i0.ɵɵtext(16, "Credential");
1496
1489
  i0.ɵɵelementEnd();
1497
- i0.ɵɵconditionalCreate(17, ConnectionsComponent_Conditional_6_Conditional_9_Conditional_17_Template, 7, 1, "div", 252)(18, ConnectionsComponent_Conditional_6_Conditional_9_Conditional_18_Template, 5, 1);
1490
+ i0.ɵɵconditionalCreate(17, ConnectionsComponent_Conditional_12_Conditional_9_Conditional_17_Template, 7, 1, "div", 253)(18, ConnectionsComponent_Conditional_12_Conditional_9_Conditional_18_Template, 5, 1);
1498
1491
  i0.ɵɵelementEnd();
1499
- i0.ɵɵelementStart(19, "div", 246)(20, "label", 247);
1492
+ i0.ɵɵelementStart(19, "div", 247)(20, "label", 248);
1500
1493
  i0.ɵɵtext(21, "Integration");
1501
1494
  i0.ɵɵelementEnd();
1502
- i0.ɵɵelementStart(22, "div", 253);
1495
+ i0.ɵɵelementStart(22, "div", 254);
1503
1496
  i0.ɵɵtext(23);
1504
1497
  i0.ɵɵelementEnd()();
1505
- i0.ɵɵelementStart(24, "div", 246)(25, "label", 247);
1498
+ i0.ɵɵelementStart(24, "div", 247)(25, "label", 248);
1506
1499
  i0.ɵɵtext(26, "Company");
1507
1500
  i0.ɵɵelementEnd();
1508
- i0.ɵɵelementStart(27, "div", 253);
1501
+ i0.ɵɵelementStart(27, "div", 254);
1509
1502
  i0.ɵɵtext(28);
1510
1503
  i0.ɵɵelementEnd()()();
1511
- i0.ɵɵelementStart(29, "div", 254)(30, "button", 54);
1512
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_6_Conditional_9_Template_button_click_30_listener() { i0.ɵɵrestoreView(_r46); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SaveEditChanges()); });
1513
- i0.ɵɵconditionalCreate(31, ConnectionsComponent_Conditional_6_Conditional_9_Conditional_31_Template, 2, 0)(32, ConnectionsComponent_Conditional_6_Conditional_9_Conditional_32_Template, 1, 0);
1504
+ i0.ɵɵelementStart(29, "div", 255)(30, "button", 55);
1505
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_12_Conditional_9_Template_button_click_30_listener() { i0.ɵɵrestoreView(_r46); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SaveEditChanges()); });
1506
+ i0.ɵɵconditionalCreate(31, ConnectionsComponent_Conditional_12_Conditional_9_Conditional_31_Template, 2, 0)(32, ConnectionsComponent_Conditional_12_Conditional_9_Conditional_32_Template, 1, 0);
1514
1507
  i0.ɵɵelementEnd();
1515
- i0.ɵɵelementStart(33, "button", 42);
1516
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_6_Conditional_9_Template_button_click_33_listener() { i0.ɵɵrestoreView(_r46); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.CloseEditPanel()); });
1508
+ i0.ɵɵelementStart(33, "button", 43);
1509
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_12_Conditional_9_Template_button_click_33_listener() { i0.ɵɵrestoreView(_r46); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.CloseEditPanel()); });
1517
1510
  i0.ɵɵtext(34, " Cancel ");
1518
1511
  i0.ɵɵelementEnd()();
1519
1512
  } if (rf & 2) {
@@ -1537,19 +1530,19 @@ function ConnectionsComponent_Conditional_6_Conditional_9_Template(rf, ctx) { if
1537
1530
  i0.ɵɵadvance();
1538
1531
  i0.ɵɵconditional(ctx_r1.IsEditSaving ? 31 : 32);
1539
1532
  } }
1540
- function ConnectionsComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1533
+ function ConnectionsComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1541
1534
  const _r45 = i0.ɵɵgetCurrentView();
1542
- i0.ɵɵelementStart(0, "div", 239)(1, "div", 240)(2, "div", 241);
1535
+ i0.ɵɵelementStart(0, "div", 240)(1, "div", 241)(2, "div", 242);
1543
1536
  i0.ɵɵelement(3, "i");
1544
1537
  i0.ɵɵelementEnd();
1545
1538
  i0.ɵɵelementStart(4, "span");
1546
1539
  i0.ɵɵtext(5, "Configure Integration");
1547
1540
  i0.ɵɵelementEnd()();
1548
- i0.ɵɵelementStart(6, "button", 242);
1549
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_6_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r45); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseEditPanel()); });
1550
- i0.ɵɵelement(7, "i", 118);
1541
+ i0.ɵɵelementStart(6, "button", 243);
1542
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_12_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r45); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseEditPanel()); });
1543
+ i0.ɵɵelement(7, "i", 119);
1551
1544
  i0.ɵɵelementEnd()();
1552
- i0.ɵɵconditionalCreate(8, ConnectionsComponent_Conditional_6_Conditional_8_Template, 2, 0, "div", 243)(9, ConnectionsComponent_Conditional_6_Conditional_9_Template, 35, 10);
1545
+ i0.ɵɵconditionalCreate(8, ConnectionsComponent_Conditional_12_Conditional_8_Template, 2, 0, "div", 244)(9, ConnectionsComponent_Conditional_12_Conditional_9_Template, 35, 10);
1553
1546
  } if (rf & 2) {
1554
1547
  const ctx_r1 = i0.ɵɵnextContext();
1555
1548
  i0.ɵɵadvance(2);
@@ -1559,29 +1552,29 @@ function ConnectionsComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1559
1552
  i0.ɵɵadvance(5);
1560
1553
  i0.ɵɵconditional(ctx_r1.IsEditLoading ? 8 : 9);
1561
1554
  } }
1562
- function ConnectionsComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
1555
+ function ConnectionsComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1563
1556
  const _r51 = i0.ɵɵgetCurrentView();
1564
- i0.ɵɵelementStart(0, "mj-credential-dialog", 262);
1565
- i0.ɵɵlistener("close", function ConnectionsComponent_Conditional_7_Template_mj_credential_dialog_close_0_listener($event) { i0.ɵɵrestoreView(_r51); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.EditPanelOpen ? ctx_r1.OnEditCredentialDialogClose($event) : ctx_r1.OnCredentialDialogClose($event)); });
1557
+ i0.ɵɵelementStart(0, "mj-credential-dialog", 263);
1558
+ i0.ɵɵlistener("close", function ConnectionsComponent_Conditional_13_Template_mj_credential_dialog_close_0_listener($event) { i0.ɵɵrestoreView(_r51); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.EditPanelOpen ? ctx_r1.OnEditCredentialDialogClose($event) : ctx_r1.OnCredentialDialogClose($event)); });
1566
1559
  i0.ɵɵelementEnd();
1567
1560
  } if (rf & 2) {
1568
1561
  const ctx_r1 = i0.ɵɵnextContext();
1569
1562
  i0.ɵɵproperty("Visible", true)("PreselectedTypeId", ctx_r1.PreselectedCredentialTypeId);
1570
1563
  } }
1571
- function ConnectionsComponent_Conditional_8_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1564
+ function ConnectionsComponent_Conditional_14_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1572
1565
  i0.ɵɵtext(0);
1573
1566
  } if (rf & 2) {
1574
1567
  const ctx_r1 = i0.ɵɵnextContext(2);
1575
1568
  i0.ɵɵtextInterpolate1(" ", ctx_r1.AddMapSourceObjectName, " ");
1576
1569
  } }
1577
- function ConnectionsComponent_Conditional_8_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1578
- i0.ɵɵelementStart(0, "span", 274);
1570
+ function ConnectionsComponent_Conditional_14_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1571
+ i0.ɵɵelementStart(0, "span", 275);
1579
1572
  i0.ɵɵtext(1, "Select a source object in the Add Map form first");
1580
1573
  i0.ɵɵelementEnd();
1581
1574
  } }
1582
- function ConnectionsComponent_Conditional_8_Conditional_29_For_2_Template(rf, ctx) { if (rf & 1) {
1583
- i0.ɵɵelementStart(0, "div", 285);
1584
- i0.ɵɵelement(1, "i", 125);
1575
+ function ConnectionsComponent_Conditional_14_Conditional_29_For_2_Template(rf, ctx) { if (rf & 1) {
1576
+ i0.ɵɵelementStart(0, "div", 286);
1577
+ i0.ɵɵelement(1, "i", 126);
1585
1578
  i0.ɵɵtext(2);
1586
1579
  i0.ɵɵelementEnd();
1587
1580
  } if (rf & 2) {
@@ -1589,33 +1582,33 @@ function ConnectionsComponent_Conditional_8_Conditional_29_For_2_Template(rf, ct
1589
1582
  i0.ɵɵadvance(2);
1590
1583
  i0.ɵɵtextInterpolate1(" ", warn_r53);
1591
1584
  } }
1592
- function ConnectionsComponent_Conditional_8_Conditional_29_Template(rf, ctx) { if (rf & 1) {
1593
- i0.ɵɵelementStart(0, "div", 279);
1594
- i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_8_Conditional_29_For_2_Template, 3, 1, "div", 285, i0.ɵɵrepeaterTrackByIdentity);
1585
+ function ConnectionsComponent_Conditional_14_Conditional_29_Template(rf, ctx) { if (rf & 1) {
1586
+ i0.ɵɵelementStart(0, "div", 280);
1587
+ i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_14_Conditional_29_For_2_Template, 3, 1, "div", 286, i0.ɵɵrepeaterTrackByIdentity);
1595
1588
  i0.ɵɵelementEnd();
1596
1589
  } if (rf & 2) {
1597
1590
  const ctx_r1 = i0.ɵɵnextContext(2);
1598
1591
  i0.ɵɵadvance();
1599
1592
  i0.ɵɵrepeater(ctx_r1.DDLPreviewWarnings);
1600
1593
  } }
1601
- function ConnectionsComponent_Conditional_8_Conditional_30_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1602
- i0.ɵɵelement(0, "i", 146);
1594
+ function ConnectionsComponent_Conditional_14_Conditional_30_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1595
+ i0.ɵɵelement(0, "i", 147);
1603
1596
  i0.ɵɵtext(1, " Copied ");
1604
1597
  } }
1605
- function ConnectionsComponent_Conditional_8_Conditional_30_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1606
- i0.ɵɵelement(0, "i", 289);
1598
+ function ConnectionsComponent_Conditional_14_Conditional_30_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1599
+ i0.ɵɵelement(0, "i", 290);
1607
1600
  i0.ɵɵtext(1, " Copy ");
1608
1601
  } }
1609
- function ConnectionsComponent_Conditional_8_Conditional_30_Template(rf, ctx) { if (rf & 1) {
1602
+ function ConnectionsComponent_Conditional_14_Conditional_30_Template(rf, ctx) { if (rf & 1) {
1610
1603
  const _r54 = i0.ɵɵgetCurrentView();
1611
- i0.ɵɵelementStart(0, "div", 280)(1, "div", 286)(2, "span");
1604
+ i0.ɵɵelementStart(0, "div", 281)(1, "div", 287)(2, "span");
1612
1605
  i0.ɵɵtext(3, "SQL Preview");
1613
1606
  i0.ɵɵelementEnd();
1614
- i0.ɵɵelementStart(4, "button", 287);
1615
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_30_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r54); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.CopyDDLToClipboard()); });
1616
- i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_8_Conditional_30_Conditional_5_Template, 2, 0)(6, ConnectionsComponent_Conditional_8_Conditional_30_Conditional_6_Template, 2, 0);
1607
+ i0.ɵɵelementStart(4, "button", 288);
1608
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_14_Conditional_30_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r54); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.CopyDDLToClipboard()); });
1609
+ i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_14_Conditional_30_Conditional_5_Template, 2, 0)(6, ConnectionsComponent_Conditional_14_Conditional_30_Conditional_6_Template, 2, 0);
1617
1610
  i0.ɵɵelementEnd()();
1618
- i0.ɵɵelementStart(7, "pre", 288);
1611
+ i0.ɵɵelementStart(7, "pre", 289);
1619
1612
  i0.ɵɵtext(8);
1620
1613
  i0.ɵɵelementEnd()();
1621
1614
  } if (rf & 2) {
@@ -1625,9 +1618,9 @@ function ConnectionsComponent_Conditional_8_Conditional_30_Template(rf, ctx) { i
1625
1618
  i0.ɵɵadvance(3);
1626
1619
  i0.ɵɵtextInterpolate(ctx_r1.DDLPreview);
1627
1620
  } }
1628
- function ConnectionsComponent_Conditional_8_Conditional_31_Template(rf, ctx) { if (rf & 1) {
1629
- i0.ɵɵelementStart(0, "div", 281)(1, "h4");
1630
- i0.ɵɵelement(2, "i", 290);
1621
+ function ConnectionsComponent_Conditional_14_Conditional_31_Template(rf, ctx) { if (rf & 1) {
1622
+ i0.ɵɵelementStart(0, "div", 282)(1, "h4");
1623
+ i0.ɵɵelement(2, "i", 291);
1631
1624
  i0.ɵɵtext(3, " Next Steps");
1632
1625
  i0.ɵɵelementEnd();
1633
1626
  i0.ɵɵelementStart(4, "ol")(5, "li");
@@ -1643,60 +1636,60 @@ function ConnectionsComponent_Conditional_8_Conditional_31_Template(rf, ctx) { i
1643
1636
  i0.ɵɵtext(12, "Refresh the page \u2014 the new entity will appear in the entity picker");
1644
1637
  i0.ɵɵelementEnd()()();
1645
1638
  } }
1646
- function ConnectionsComponent_Conditional_8_Conditional_34_Template(rf, ctx) { if (rf & 1) {
1647
- i0.ɵɵelement(0, "i", 41);
1639
+ function ConnectionsComponent_Conditional_14_Conditional_34_Template(rf, ctx) { if (rf & 1) {
1640
+ i0.ɵɵelement(0, "i", 42);
1648
1641
  i0.ɵɵtext(1, " Generating... ");
1649
1642
  } }
1650
- function ConnectionsComponent_Conditional_8_Conditional_35_Template(rf, ctx) { if (rf & 1) {
1651
- i0.ɵɵelement(0, "i", 291);
1643
+ function ConnectionsComponent_Conditional_14_Conditional_35_Template(rf, ctx) { if (rf & 1) {
1644
+ i0.ɵɵelement(0, "i", 292);
1652
1645
  i0.ɵɵtext(1, " Generate SQL ");
1653
1646
  } }
1654
- function ConnectionsComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1647
+ function ConnectionsComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
1655
1648
  const _r52 = i0.ɵɵgetCurrentView();
1656
- i0.ɵɵelementStart(0, "div", 263);
1657
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r52); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseNewEntityDialog()); });
1649
+ i0.ɵɵelementStart(0, "div", 264);
1650
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_14_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r52); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseNewEntityDialog()); });
1658
1651
  i0.ɵɵelementEnd();
1659
- i0.ɵɵelementStart(1, "div", 264)(2, "div", 265)(3, "h3");
1652
+ i0.ɵɵelementStart(1, "div", 265)(2, "div", 266)(3, "h3");
1660
1653
  i0.ɵɵtext(4, "Create New Entity Table");
1661
1654
  i0.ɵɵelementEnd();
1662
- i0.ɵɵelementStart(5, "button", 266);
1663
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r52); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseNewEntityDialog()); });
1664
- i0.ɵɵelement(6, "i", 118);
1655
+ i0.ɵɵelementStart(5, "button", 267);
1656
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_14_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r52); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseNewEntityDialog()); });
1657
+ i0.ɵɵelement(6, "i", 119);
1665
1658
  i0.ɵɵelementEnd()();
1666
- i0.ɵɵelementStart(7, "div", 267)(8, "p", 268);
1659
+ i0.ɵɵelementStart(7, "div", 268)(8, "p", 269);
1667
1660
  i0.ɵɵtext(9, " Generate a SQL migration to create a new database table for this integration's data. After running the migration and CodeGen, the new entity will appear in the entity picker. ");
1668
1661
  i0.ɵɵelementEnd();
1669
- i0.ɵɵelementStart(10, "div", 269)(11, "div", 270)(12, "div", 271)(13, "label", 272);
1662
+ i0.ɵɵelementStart(10, "div", 270)(11, "div", 271)(12, "div", 272)(13, "label", 273);
1670
1663
  i0.ɵɵtext(14, "Source Object");
1671
1664
  i0.ɵɵelementEnd();
1672
- i0.ɵɵelementStart(15, "div", 273);
1673
- i0.ɵɵconditionalCreate(16, ConnectionsComponent_Conditional_8_Conditional_16_Template, 1, 1)(17, ConnectionsComponent_Conditional_8_Conditional_17_Template, 2, 0, "span", 274);
1665
+ i0.ɵɵelementStart(15, "div", 274);
1666
+ i0.ɵɵconditionalCreate(16, ConnectionsComponent_Conditional_14_Conditional_16_Template, 1, 1)(17, ConnectionsComponent_Conditional_14_Conditional_17_Template, 2, 0, "span", 275);
1674
1667
  i0.ɵɵelementEnd()()();
1675
- i0.ɵɵelementStart(18, "div", 270)(19, "div", 271)(20, "label", 272);
1668
+ i0.ɵɵelementStart(18, "div", 271)(19, "div", 272)(20, "label", 273);
1676
1669
  i0.ɵɵtext(21, "Schema");
1677
1670
  i0.ɵɵelementEnd();
1678
- i0.ɵɵelementStart(22, "input", 275);
1679
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_8_Template_input_ngModelChange_22_listener($event) { i0.ɵɵrestoreView(_r52); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.NewEntitySchema, $event) || (ctx_r1.NewEntitySchema = $event); return i0.ɵɵresetView($event); });
1671
+ i0.ɵɵelementStart(22, "input", 276);
1672
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_14_Template_input_ngModelChange_22_listener($event) { i0.ɵɵrestoreView(_r52); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.NewEntitySchema, $event) || (ctx_r1.NewEntitySchema = $event); return i0.ɵɵresetView($event); });
1680
1673
  i0.ɵɵelementEnd()();
1681
- i0.ɵɵelementStart(23, "span", 276);
1674
+ i0.ɵɵelementStart(23, "span", 277);
1682
1675
  i0.ɵɵtext(24, ".");
1683
1676
  i0.ɵɵelementEnd();
1684
- i0.ɵɵelementStart(25, "div", 277)(26, "label", 272);
1677
+ i0.ɵɵelementStart(25, "div", 278)(26, "label", 273);
1685
1678
  i0.ɵɵtext(27, "Table Name");
1686
1679
  i0.ɵɵelementEnd();
1687
- i0.ɵɵelementStart(28, "input", 278);
1688
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_8_Template_input_ngModelChange_28_listener($event) { i0.ɵɵrestoreView(_r52); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.NewEntityTable, $event) || (ctx_r1.NewEntityTable = $event); return i0.ɵɵresetView($event); });
1680
+ i0.ɵɵelementStart(28, "input", 279);
1681
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_14_Template_input_ngModelChange_28_listener($event) { i0.ɵɵrestoreView(_r52); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.NewEntityTable, $event) || (ctx_r1.NewEntityTable = $event); return i0.ɵɵresetView($event); });
1689
1682
  i0.ɵɵelementEnd()()()();
1690
- i0.ɵɵconditionalCreate(29, ConnectionsComponent_Conditional_8_Conditional_29_Template, 3, 0, "div", 279);
1691
- i0.ɵɵconditionalCreate(30, ConnectionsComponent_Conditional_8_Conditional_30_Template, 9, 2, "div", 280);
1692
- i0.ɵɵconditionalCreate(31, ConnectionsComponent_Conditional_8_Conditional_31_Template, 13, 0, "div", 281);
1683
+ i0.ɵɵconditionalCreate(29, ConnectionsComponent_Conditional_14_Conditional_29_Template, 3, 0, "div", 280);
1684
+ i0.ɵɵconditionalCreate(30, ConnectionsComponent_Conditional_14_Conditional_30_Template, 9, 2, "div", 281);
1685
+ i0.ɵɵconditionalCreate(31, ConnectionsComponent_Conditional_14_Conditional_31_Template, 13, 0, "div", 282);
1693
1686
  i0.ɵɵelementEnd();
1694
- i0.ɵɵelementStart(32, "div", 282)(33, "button", 283);
1695
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Template_button_click_33_listener() { i0.ɵɵrestoreView(_r52); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.PreviewDDL()); });
1696
- i0.ɵɵconditionalCreate(34, ConnectionsComponent_Conditional_8_Conditional_34_Template, 2, 0)(35, ConnectionsComponent_Conditional_8_Conditional_35_Template, 2, 0);
1687
+ i0.ɵɵelementStart(32, "div", 283)(33, "button", 284);
1688
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_14_Template_button_click_33_listener() { i0.ɵɵrestoreView(_r52); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.PreviewDDL()); });
1689
+ i0.ɵɵconditionalCreate(34, ConnectionsComponent_Conditional_14_Conditional_34_Template, 2, 0)(35, ConnectionsComponent_Conditional_14_Conditional_35_Template, 2, 0);
1697
1690
  i0.ɵɵelementEnd();
1698
- i0.ɵɵelementStart(36, "button", 284);
1699
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Template_button_click_36_listener() { i0.ɵɵrestoreView(_r52); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseNewEntityDialog()); });
1691
+ i0.ɵɵelementStart(36, "button", 285);
1692
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_14_Template_button_click_36_listener() { i0.ɵɵrestoreView(_r52); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseNewEntityDialog()); });
1700
1693
  i0.ɵɵtext(37, " Done ");
1701
1694
  i0.ɵɵelementEnd()()();
1702
1695
  } if (rf & 2) {
@@ -3086,39 +3079,52 @@ let ConnectionsComponent = class ConnectionsComponent extends BaseResourceCompon
3086
3079
  } if (rf & 2) {
3087
3080
  let _t;
3088
3081
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.entityTreeDropdown = _t.first);
3089
- } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 9, vars: 14, consts: [["entityTreeDropdown", ""], [1, "connections-container"], [1, "detail-view"], [1, "wizard-inline"], [1, "edit-panel-backdrop", 3, "click"], [1, "edit-panel"], [3, "Visible", "PreselectedTypeId"], [1, "connections-header"], [1, "header-left"], [1, "header-title"], [1, "header-count"], ["mjButton", "", "variant", "primary", 1, "add-connection-btn", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "loading-container"], [1, "empty-state"], [1, "card-grid"], ["text", "Loading integrations..."], [1, "fa-solid", "fa-plug", "empty-icon"], ["mjButton", "", "variant", "primary", 3, "click"], [1, "connection-card"], [1, "connection-card", "new-connection-card", 3, "click"], [1, "new-card-content"], [1, "new-card-icon"], [1, "new-card-label"], [1, "card-clickable", 3, "click"], [1, "card-header"], [1, "icon-circle"], [1, "icon-large"], [1, "card-body"], [1, "card-name"], [1, "card-company"], [1, "card-meta"], [1, "meta-label"], [1, "meta-separator"], [1, "meta-value"], [1, "card-sync-info"], [1, "fa-solid", "fa-arrows-rotate"], [1, "card-test-result", 3, "test-success", "test-failure"], [1, "delete-confirm-overlay"], [1, "card-footer"], ["mjButton", "", "variant", "outline", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["mjButton", "", "variant", "outline", 3, "click"], [1, "sync-menu-wrapper"], ["title", "Delete integration", 1, "card-delete-btn", 3, "click"], [1, "fa-solid", "fa-trash-can"], [1, "card-test-result"], [1, "fa-solid", "fa-circle-check"], [1, "fa-solid", "fa-circle-xmark"], [1, "delete-confirm-content"], [1, "fa-solid", "fa-triangle-exclamation", "delete-warn-icon"], [1, "delete-confirm-text"], [1, "delete-confirm-actions"], ["mjButton", "", "variant", "danger", 3, "click", "disabled"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "sync-dropdown"], [1, "fa-solid", "fa-chevron-down", "sync-caret"], [1, "sync-dropdown-group"], [1, "sync-dropdown-label"], [1, "sync-dropdown-item", 3, "click"], [1, "fa-solid", "fa-arrow-down-to-line"], [1, "fa-solid", "fa-rotate"], [1, "fa-solid", "fa-arrow-up-from-line"], [3, "EntityMap", "CompanyIntegrationID", "RunViewProvider"], [3, "Close", "EntityMap", "CompanyIntegrationID", "RunViewProvider"], [1, "detail-header"], ["title", "Back to Integrations", 1, "detail-back-btn", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "detail-header-info"], [1, "detail-header-text"], [1, "detail-title"], [1, "detail-subtitle"], [1, "detail-header-actions"], ["title", "Configure", 1, "detail-edit-btn", 3, "click"], [1, "fa-solid", "fa-pen-to-square"], [1, "schedule-section"], [1, "schedule-section-header"], [1, "schedule-section-title"], [1, "fa-solid", "fa-calendar-check"], [3, "ScheduledJobID"], [1, "schedule-empty"], [3, "Close", "Saved", "Deleted", "IsOpen", "ScheduledJobID", "JobTypeID", "DefaultConfiguration", "HideJobType"], [1, "detail-toolbar"], [1, "detail-toolbar-left"], [1, "detail-map-count"], [1, "detail-toolbar-right"], [1, "detail-search"], [1, "fa-solid", "fa-filter"], ["type", "text", "placeholder", "Filter entity maps...", 3, "input", "value"], ["title", "Select source objects and create entity tables", 1, "add-map-btn", 3, "click"], [1, "fa-solid", "fa-table"], [1, "add-map-btn", 3, "click"], [1, "fa-solid", "fa-wand-magic-sparkles"], [1, "sync-result-banner", 3, "sync-success", "sync-failure"], [1, "add-map-panel"], [1, "detail-empty"], [1, "sync-dropdown", "sync-dropdown-left"], [3, "EditRequested", "ScheduledJobID"], [1, "schedule-empty-text"], [1, "schedule-create-btn", 3, "click"], [1, "sync-result-banner"], [1, "auto-map-header"], [1, "add-map-row"], [1, "add-map-field"], [1, "add-map-label"], [1, "add-map-select", 3, "ngModelChange", "ngModel"], ["disabled", "", 3, "ngValue"], [3, "value"], [1, "add-map-direction-col"], [1, "add-map-direction-btns"], ["title", "Pull from source", 3, "click"], [1, "fa-solid", "fa-arrow-right"], ["title", "Bidirectional sync", 3, "click"], [1, "fa-solid", "fa-right-left"], ["title", "Push to source", 3, "click"], [1, "add-map-actions"], [1, "add-map-save-btn", 3, "click", "disabled"], [1, "add-map-cancel-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "auto-map-result", 3, "auto-map-success", "auto-map-partial", "auto-map-failure"], [1, "auto-map-result"], [1, "auto-map-result-summary"], [1, "auto-map-errors"], [1, "fa-solid", "fa-circle-info"], [1, "auto-map-error"], [1, "fa-solid", "fa-triangle-exclamation"], ["text", "Loading source objects...", "size", "small"], [1, "auto-map-result", "auto-map-success"], [1, "auto-map-result", 3, "auto-map-success", "auto-map-failure"], [1, "create-tables-filters"], ["type", "text", "placeholder", "Search by name or label...", 1, "create-tables-search", "mj-input", 3, "ngModelChange", "ngModel"], [1, "create-tables-list"], [1, "create-tables-select-all"], [1, "create-tables-checkbox"], ["type", "checkbox", 3, "change", "checked"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], [1, "create-tables-name-hint"], [1, "create-tables-badge", "create-tables-badge-custom"], [1, "create-tables-badge", "create-tables-badge-registered"], [1, "add-map-loading"], [1, "add-map-hint"], [1, "add-map-select", 3, "ngModel"], [1, "add-map-field", "add-map-entity-field"], [1, "entity-picker-row"], [3, "SelectionChange", "BranchConfig", "LeafConfig", "Value", "SelectableTypes", "SelectionMode", "Placeholder", "EnableSearch"], ["title", "Create new entity table", 1, "new-entity-btn", 3, "click"], [1, "fa-solid", "fa-check"], ["text", "Loading entity maps..."], [1, "fa-solid", "fa-cube"], [1, "add-map-btn", "add-map-btn-lg", 3, "click"], [1, "detail-table-head"], [1, "dt-col-toggle"], [1, "dt-col-source"], [1, "dt-col-direction"], [1, "dt-col-dest"], [1, "dt-col-meta"], [1, "detail-table-body"], [1, "detail-map-row", 3, "sync-disabled"], [1, "detail-table-empty"], [1, "detail-map-row", 3, "click"], [1, "dt-col-toggle", 3, "click"], [1, "toggle-switch", 3, "title"], [1, "toggle-slider"], [1, "dt-col-source", 3, "title"], [1, "dt-col-direction", 3, "click"], [1, "direction-toggle", 3, "click", "title"], [1, "dt-col-dest", 3, "title"], ["title", "Match strategy configured", 1, "detail-config-badge"], [1, "detail-config-badge", 3, "title"], [1, "map-edit-hint"], [1, "fa-solid", "fa-chevron-right"], [1, "fa-solid", "fa-link"], [1, "wizard-header"], [1, "wizard-back-btn", 3, "click"], [1, "wizard-title"], [1, "step-indicator"], [1, "wizard-body"], [1, "step-content"], [1, "step-content", "step-content-centered"], [1, "wizard-footer"], [1, "footer-left"], [1, "footer-right"], ["mjButton", "", "variant", "outline"], [1, "step-item"], [1, "step-circle"], [1, "step-label"], [1, "step-line", 3, "step-line-active"], [1, "step-line"], [1, "step-title"], [1, "search-bar"], [1, "fa-solid", "fa-search", "search-icon"], ["type", "text", "placeholder", "Search integrations...", 1, "search-input", 3, "ngModelChange", "ngModel"], [1, "no-integrations"], [1, "integration-picker-grid"], [1, "fa-solid", "fa-puzzle-piece"], [1, "no-integrations-hint"], [1, "fa-solid", "fa-search"], [1, "integration-picker-card", 3, "picker-selected"], [1, "integration-picker-card", 3, "click"], [1, "picker-icon-circle"], [1, "picker-name"], [1, "picker-description"], [1, "form-group"], ["for", "connectionName", 1, "form-label"], ["id", "connectionName", "type", "text", "placeholder", "e.g. Production HubSpot", 1, "form-input", 3, "ngModelChange", "ngModel"], ["for", "companySelect", 1, "form-label"], ["id", "companySelect", 1, "form-input", 3, "ngModel"], ["type", "text", "disabled", "", 1, "form-input", 3, "value"], [1, "form-hint"], ["for", "connectionDescription", 1, "form-label"], [1, "optional-label"], ["id", "connectionDescription", "placeholder", "Notes about this connection...", "rows", "3", 1, "form-input", "form-textarea", 3, "ngModelChange", "ngModel"], [1, "form-label"], [1, "credential-selected"], [1, "credential-actions"], [1, "credential-loading"], [1, "credential-list"], ["id", "companySelect", 1, "form-input", 3, "ngModelChange", "ngModel"], [1, "credential-info"], [1, "fa-solid", "fa-key"], [1, "credential-clear", 3, "click"], ["text", "Loading credentials...", "size", "small"], [1, "credential-list-item"], [1, "credential-list-item", 3, "click"], [1, "test-prompt"], [1, "test-running"], [1, "test-result", 3, "test-result-success", "test-result-failure"], ["mjButton", "", "variant", "primary", "size", "lg", 3, "click"], [1, "fa-solid", "fa-vial"], [1, "test-hint"], [1, "test-spinner"], [1, "fa-solid", "fa-spinner", "fa-spin", "fa-3x"], [1, "test-result"], [1, "test-result-icon"], [1, "test-result-message"], [1, "test-result-detail"], ["mjButton", "", "variant", "outline", 1, "test-retry-btn"], ["mjButton", "", "variant", "outline", 1, "test-retry-btn", 3, "click"], [1, "fa-solid", "fa-rotate-right"], [1, "edit-panel-header"], [1, "edit-panel-title"], [1, "edit-icon-circle"], [1, "edit-close-btn", 3, "click"], [1, "edit-panel-loading"], ["text", "Loading...", "size", "small"], [1, "edit-panel-body"], [1, "edit-form-group"], [1, "edit-form-label"], ["type", "text", "placeholder", "Connection name...", 1, "edit-form-input", 3, "ngModelChange", "ngModel"], [1, "edit-toggle-row"], [1, "toggle-switch"], [1, "edit-toggle-label"], [1, "edit-credential-selected"], [1, "edit-readonly-field"], [1, "edit-panel-footer"], [1, "edit-credential-info"], [1, "edit-credential-clear", 3, "click"], [1, "edit-credential-actions"], ["mjButton", "", "variant", "outline", "size", "sm", 3, "click"], [1, "edit-credential-list"], [1, "edit-credential-item"], [1, "edit-credential-item", 3, "click"], [3, "close", "Visible", "PreselectedTypeId"], [1, "new-entity-backdrop", 3, "click"], [1, "new-entity-dialog"], [1, "new-entity-dialog-header"], [1, "new-entity-dialog-close", 3, "click"], [1, "new-entity-dialog-body"], [1, "new-entity-dialog-desc"], [1, "new-entity-dialog-form"], [1, "new-entity-dialog-row"], [1, "new-entity-dialog-field"], [1, "new-entity-dialog-label"], [1, "new-entity-dialog-value"], [1, "new-entity-dialog-hint"], ["type", "text", "placeholder", "e.g. hubspot", 1, "new-entity-dialog-input", 3, "ngModelChange", "ngModel"], [1, "new-entity-dialog-dot"], [1, "new-entity-dialog-field", "new-entity-dialog-field-wide"], ["type", "text", "placeholder", "e.g. Contact", 1, "new-entity-dialog-input", 3, "ngModelChange", "ngModel"], [1, "ddl-warnings"], [1, "ddl-preview-block"], [1, "new-entity-next-steps"], [1, "new-entity-dialog-footer"], [1, "new-entity-preview-btn", 3, "click", "disabled"], [1, "new-entity-dialog-done-btn", 3, "click"], [1, "ddl-warning"], [1, "ddl-preview-header"], ["title", "Copy to clipboard", 1, "ddl-copy-btn", 3, "click"], [1, "ddl-preview-code"], [1, "fa-regular", "fa-copy"], [1, "fa-solid", "fa-list-check"], [1, "fa-solid", "fa-code"]], template: function ConnectionsComponent_Template(rf, ctx) { if (rf & 1) {
3090
- i0.ɵɵelementStart(0, "div", 1);
3091
- i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_1_Template, 12, 5);
3092
- i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_2_Template, 3, 1, "div", 2);
3093
- i0.ɵɵconditionalCreate(3, ConnectionsComponent_Conditional_3_Template, 21, 6, "div", 3);
3082
+ } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 15, vars: 18, consts: [["entityTreeDropdown", ""], ["Title", "Integrations", "Icon", "fa-solid fa-plug", "Subtitle", "Connected systems and data sources"], ["actions", ""], [3, "Clicked", "Loading"], ["mjButton", "", "variant", "primary", "size", "sm"], [3, "Flex", "Padding"], [1, "connections-container"], [1, "detail-view"], [1, "wizard-inline"], [1, "edit-panel-backdrop", 3, "click"], [1, "edit-panel"], [3, "Visible", "PreselectedTypeId"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "loading-container"], [1, "empty-state"], [1, "card-grid"], ["text", "Loading integrations..."], [1, "fa-solid", "fa-plug", "empty-icon"], ["mjButton", "", "variant", "primary", 3, "click"], [1, "connection-card"], [1, "connection-card", "new-connection-card", 3, "click"], [1, "new-card-content"], [1, "new-card-icon"], [1, "new-card-label"], [1, "card-clickable", 3, "click"], [1, "card-header"], [1, "icon-circle"], [1, "icon-large"], [1, "card-body"], [1, "card-name"], [1, "card-company"], [1, "card-meta"], [1, "meta-label"], [1, "meta-separator"], [1, "meta-value"], [1, "card-sync-info"], [1, "fa-solid", "fa-arrows-rotate"], [1, "card-test-result", 3, "test-success", "test-failure"], [1, "delete-confirm-overlay"], [1, "card-footer"], ["mjButton", "", "variant", "outline", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["mjButton", "", "variant", "outline", 3, "click"], [1, "sync-menu-wrapper"], ["title", "Delete integration", 1, "card-delete-btn", 3, "click"], [1, "fa-solid", "fa-trash-can"], [1, "card-test-result"], [1, "fa-solid", "fa-circle-check"], [1, "fa-solid", "fa-circle-xmark"], [1, "delete-confirm-content"], [1, "fa-solid", "fa-triangle-exclamation", "delete-warn-icon"], [1, "delete-confirm-text"], [1, "delete-confirm-actions"], ["mjButton", "", "variant", "danger", 3, "click", "disabled"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "sync-dropdown"], [1, "fa-solid", "fa-chevron-down", "sync-caret"], [1, "sync-dropdown-group"], [1, "sync-dropdown-label"], [1, "sync-dropdown-item", 3, "click"], [1, "fa-solid", "fa-arrow-down-to-line"], [1, "fa-solid", "fa-rotate"], [1, "fa-solid", "fa-arrow-up-from-line"], [3, "EntityMap", "CompanyIntegrationID", "RunViewProvider"], [3, "Close", "EntityMap", "CompanyIntegrationID", "RunViewProvider"], [1, "detail-header"], ["title", "Back to Integrations", 1, "detail-back-btn", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "detail-header-info"], [1, "detail-header-text"], [1, "detail-title"], [1, "detail-subtitle"], [1, "detail-header-actions"], ["title", "Configure", 1, "detail-edit-btn", 3, "click"], [1, "fa-solid", "fa-pen-to-square"], [1, "schedule-section"], [1, "schedule-section-header"], [1, "schedule-section-title"], [1, "fa-solid", "fa-calendar-check"], [3, "ScheduledJobID"], [1, "schedule-empty"], [3, "Close", "Saved", "Deleted", "IsOpen", "ScheduledJobID", "JobTypeID", "DefaultConfiguration", "HideJobType"], [1, "detail-toolbar"], [1, "detail-toolbar-left"], [1, "detail-map-count"], [1, "detail-toolbar-right"], [1, "detail-search"], [1, "fa-solid", "fa-filter"], ["type", "text", "placeholder", "Filter entity maps...", 3, "input", "value"], ["title", "Select source objects and create entity tables", 1, "add-map-btn", 3, "click"], [1, "fa-solid", "fa-table"], [1, "add-map-btn", 3, "click"], [1, "fa-solid", "fa-wand-magic-sparkles"], [1, "sync-result-banner", 3, "sync-success", "sync-failure"], [1, "add-map-panel"], [1, "detail-empty"], [1, "sync-dropdown", "sync-dropdown-left"], [3, "EditRequested", "ScheduledJobID"], [1, "schedule-empty-text"], [1, "schedule-create-btn", 3, "click"], [1, "sync-result-banner"], [1, "auto-map-header"], [1, "add-map-row"], [1, "add-map-field"], [1, "add-map-label"], [1, "add-map-select", 3, "ngModelChange", "ngModel"], ["disabled", "", 3, "ngValue"], [3, "value"], [1, "add-map-direction-col"], [1, "add-map-direction-btns"], ["title", "Pull from source", 3, "click"], [1, "fa-solid", "fa-arrow-right"], ["title", "Bidirectional sync", 3, "click"], [1, "fa-solid", "fa-right-left"], ["title", "Push to source", 3, "click"], [1, "add-map-actions"], [1, "add-map-save-btn", 3, "click", "disabled"], [1, "add-map-cancel-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "auto-map-result", 3, "auto-map-success", "auto-map-partial", "auto-map-failure"], [1, "auto-map-result"], [1, "auto-map-result-summary"], [1, "auto-map-errors"], [1, "fa-solid", "fa-circle-info"], [1, "auto-map-error"], [1, "fa-solid", "fa-triangle-exclamation"], ["text", "Loading source objects...", "size", "small"], [1, "auto-map-result", "auto-map-success"], [1, "auto-map-result", 3, "auto-map-success", "auto-map-failure"], [1, "create-tables-filters"], ["type", "text", "placeholder", "Search by name or label...", 1, "create-tables-search", "mj-input", 3, "ngModelChange", "ngModel"], [1, "create-tables-list"], [1, "create-tables-select-all"], [1, "create-tables-checkbox"], ["type", "checkbox", 3, "change", "checked"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], [1, "create-tables-name-hint"], [1, "create-tables-badge", "create-tables-badge-custom"], [1, "create-tables-badge", "create-tables-badge-registered"], [1, "add-map-loading"], [1, "add-map-hint"], [1, "add-map-select", 3, "ngModel"], [1, "add-map-field", "add-map-entity-field"], [1, "entity-picker-row"], [3, "SelectionChange", "BranchConfig", "LeafConfig", "Value", "SelectableTypes", "SelectionMode", "Placeholder", "EnableSearch"], ["title", "Create new entity table", 1, "new-entity-btn", 3, "click"], [1, "fa-solid", "fa-check"], ["text", "Loading entity maps..."], [1, "fa-solid", "fa-cube"], [1, "add-map-btn", "add-map-btn-lg", 3, "click"], [1, "detail-table-head"], [1, "dt-col-toggle"], [1, "dt-col-source"], [1, "dt-col-direction"], [1, "dt-col-dest"], [1, "dt-col-meta"], [1, "detail-table-body"], [1, "detail-map-row", 3, "sync-disabled"], [1, "detail-table-empty"], [1, "detail-map-row", 3, "click"], [1, "dt-col-toggle", 3, "click"], [1, "toggle-switch", 3, "title"], [1, "toggle-slider"], [1, "dt-col-source", 3, "title"], [1, "dt-col-direction", 3, "click"], [1, "direction-toggle", 3, "click", "title"], [1, "dt-col-dest", 3, "title"], ["title", "Match strategy configured", 1, "detail-config-badge"], [1, "detail-config-badge", 3, "title"], [1, "map-edit-hint"], [1, "fa-solid", "fa-chevron-right"], [1, "fa-solid", "fa-link"], [1, "wizard-header"], [1, "wizard-back-btn", 3, "click"], [1, "wizard-title"], [1, "step-indicator"], [1, "wizard-body"], [1, "step-content"], [1, "step-content", "step-content-centered"], [1, "wizard-footer"], [1, "footer-left"], [1, "footer-right"], ["mjButton", "", "variant", "outline"], [1, "step-item"], [1, "step-circle"], [1, "step-label"], [1, "step-line", 3, "step-line-active"], [1, "step-line"], [1, "step-title"], [1, "search-bar"], [1, "fa-solid", "fa-search", "search-icon"], ["type", "text", "placeholder", "Search integrations...", 1, "search-input", 3, "ngModelChange", "ngModel"], [1, "no-integrations"], [1, "integration-picker-grid"], [1, "fa-solid", "fa-puzzle-piece"], [1, "no-integrations-hint"], [1, "fa-solid", "fa-search"], [1, "integration-picker-card", 3, "picker-selected"], [1, "integration-picker-card", 3, "click"], [1, "picker-icon-circle"], [1, "picker-name"], [1, "picker-description"], [1, "form-group"], ["for", "connectionName", 1, "form-label"], ["id", "connectionName", "type", "text", "placeholder", "e.g. Production HubSpot", 1, "form-input", 3, "ngModelChange", "ngModel"], ["for", "companySelect", 1, "form-label"], ["id", "companySelect", 1, "form-input", 3, "ngModel"], ["type", "text", "disabled", "", 1, "form-input", 3, "value"], [1, "form-hint"], ["for", "connectionDescription", 1, "form-label"], [1, "optional-label"], ["id", "connectionDescription", "placeholder", "Notes about this connection...", "rows", "3", 1, "form-input", "form-textarea", 3, "ngModelChange", "ngModel"], [1, "form-label"], [1, "credential-selected"], [1, "credential-actions"], [1, "credential-loading"], [1, "credential-list"], ["id", "companySelect", 1, "form-input", 3, "ngModelChange", "ngModel"], [1, "credential-info"], [1, "fa-solid", "fa-key"], [1, "credential-clear", 3, "click"], ["text", "Loading credentials...", "size", "small"], [1, "credential-list-item"], [1, "credential-list-item", 3, "click"], [1, "test-prompt"], [1, "test-running"], [1, "test-result", 3, "test-result-success", "test-result-failure"], ["mjButton", "", "variant", "primary", "size", "lg", 3, "click"], [1, "fa-solid", "fa-vial"], [1, "test-hint"], [1, "test-spinner"], [1, "fa-solid", "fa-spinner", "fa-spin", "fa-3x"], [1, "test-result"], [1, "test-result-icon"], [1, "test-result-message"], [1, "test-result-detail"], ["mjButton", "", "variant", "outline", 1, "test-retry-btn"], ["mjButton", "", "variant", "outline", 1, "test-retry-btn", 3, "click"], [1, "fa-solid", "fa-rotate-right"], [1, "edit-panel-header"], [1, "edit-panel-title"], [1, "edit-icon-circle"], [1, "edit-close-btn", 3, "click"], [1, "edit-panel-loading"], ["text", "Loading...", "size", "small"], [1, "edit-panel-body"], [1, "edit-form-group"], [1, "edit-form-label"], ["type", "text", "placeholder", "Connection name...", 1, "edit-form-input", 3, "ngModelChange", "ngModel"], [1, "edit-toggle-row"], [1, "toggle-switch"], [1, "edit-toggle-label"], [1, "edit-credential-selected"], [1, "edit-readonly-field"], [1, "edit-panel-footer"], [1, "edit-credential-info"], [1, "edit-credential-clear", 3, "click"], [1, "edit-credential-actions"], ["mjButton", "", "variant", "outline", "size", "sm", 3, "click"], [1, "edit-credential-list"], [1, "edit-credential-item"], [1, "edit-credential-item", 3, "click"], [3, "close", "Visible", "PreselectedTypeId"], [1, "new-entity-backdrop", 3, "click"], [1, "new-entity-dialog"], [1, "new-entity-dialog-header"], [1, "new-entity-dialog-close", 3, "click"], [1, "new-entity-dialog-body"], [1, "new-entity-dialog-desc"], [1, "new-entity-dialog-form"], [1, "new-entity-dialog-row"], [1, "new-entity-dialog-field"], [1, "new-entity-dialog-label"], [1, "new-entity-dialog-value"], [1, "new-entity-dialog-hint"], ["type", "text", "placeholder", "e.g. hubspot", 1, "new-entity-dialog-input", 3, "ngModelChange", "ngModel"], [1, "new-entity-dialog-dot"], [1, "new-entity-dialog-field", "new-entity-dialog-field-wide"], ["type", "text", "placeholder", "e.g. Contact", 1, "new-entity-dialog-input", 3, "ngModelChange", "ngModel"], [1, "ddl-warnings"], [1, "ddl-preview-block"], [1, "new-entity-next-steps"], [1, "new-entity-dialog-footer"], [1, "new-entity-preview-btn", 3, "click", "disabled"], [1, "new-entity-dialog-done-btn", 3, "click"], [1, "ddl-warning"], [1, "ddl-preview-header"], ["title", "Copy to clipboard", 1, "ddl-copy-btn", 3, "click"], [1, "ddl-preview-code"], [1, "fa-regular", "fa-copy"], [1, "fa-solid", "fa-list-check"], [1, "fa-solid", "fa-code"]], template: function ConnectionsComponent_Template(rf, ctx) { if (rf & 1) {
3083
+ i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 1)(2, "div", 2)(3, "mj-refresh-button", 3);
3084
+ i0.ɵɵlistener("Clicked", function ConnectionsComponent_Template_mj_refresh_button_Clicked_3_listener() { return ctx.LoadData(); });
3085
+ i0.ɵɵelementEnd();
3086
+ i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_4_Template, 3, 0, "button", 4);
3087
+ i0.ɵɵelementEnd()();
3088
+ i0.ɵɵelementStart(5, "mj-page-body", 5)(6, "div", 6);
3089
+ i0.ɵɵconditionalCreate(7, ConnectionsComponent_Conditional_7_Template, 3, 3);
3090
+ i0.ɵɵconditionalCreate(8, ConnectionsComponent_Conditional_8_Template, 3, 1, "div", 7);
3091
+ i0.ɵɵconditionalCreate(9, ConnectionsComponent_Conditional_9_Template, 21, 6, "div", 8);
3094
3092
  i0.ɵɵelementEnd();
3095
- i0.ɵɵelementStart(4, "div", 4);
3096
- i0.ɵɵlistener("click", function ConnectionsComponent_Template_div_click_4_listener() { return ctx.CloseEditPanel(); });
3093
+ i0.ɵɵelementStart(10, "div", 9);
3094
+ i0.ɵɵlistener("click", function ConnectionsComponent_Template_div_click_10_listener() { return ctx.CloseEditPanel(); });
3097
3095
  i0.ɵɵelementEnd();
3098
- i0.ɵɵelementStart(5, "div", 5);
3099
- i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_6_Template, 10, 5);
3096
+ i0.ɵɵelementStart(11, "div", 10);
3097
+ i0.ɵɵconditionalCreate(12, ConnectionsComponent_Conditional_12_Template, 10, 5);
3100
3098
  i0.ɵɵelementEnd();
3101
- i0.ɵɵconditionalCreate(7, ConnectionsComponent_Conditional_7_Template, 1, 2, "mj-credential-dialog", 6);
3102
- i0.ɵɵconditionalCreate(8, ConnectionsComponent_Conditional_8_Template, 38, 8);
3099
+ i0.ɵɵconditionalCreate(13, ConnectionsComponent_Conditional_13_Template, 1, 2, "mj-credential-dialog", 11);
3100
+ i0.ɵɵconditionalCreate(14, ConnectionsComponent_Conditional_14_Template, 38, 8);
3101
+ i0.ɵɵelementEnd()();
3103
3102
  } if (rf & 2) {
3103
+ i0.ɵɵadvance(3);
3104
+ i0.ɵɵproperty("Loading", ctx.IsLoading);
3105
+ i0.ɵɵadvance();
3106
+ i0.ɵɵconditional(!ctx.WizardOpen && !ctx.SelectedSummary ? 4 : -1);
3107
+ i0.ɵɵadvance();
3108
+ i0.ɵɵproperty("Flex", true)("Padding", false);
3109
+ i0.ɵɵadvance();
3104
3110
  i0.ɵɵclassProp("detail-active", !!ctx.SelectedSummary)("editor-active", !!ctx.EditorEntityMap);
3105
3111
  i0.ɵɵadvance();
3106
- i0.ɵɵconditional(!ctx.WizardOpen && !ctx.SelectedSummary ? 1 : -1);
3112
+ i0.ɵɵconditional(!ctx.WizardOpen && !ctx.SelectedSummary ? 7 : -1);
3107
3113
  i0.ɵɵadvance();
3108
- i0.ɵɵconditional(!ctx.WizardOpen && ctx.SelectedSummary ? 2 : -1);
3114
+ i0.ɵɵconditional(!ctx.WizardOpen && ctx.SelectedSummary ? 8 : -1);
3109
3115
  i0.ɵɵadvance();
3110
- i0.ɵɵconditional(ctx.WizardOpen ? 3 : -1);
3116
+ i0.ɵɵconditional(ctx.WizardOpen ? 9 : -1);
3111
3117
  i0.ɵɵadvance();
3112
3118
  i0.ɵɵclassProp("open", ctx.EditPanelOpen);
3113
3119
  i0.ɵɵadvance();
3114
3120
  i0.ɵɵclassProp("open", ctx.EditPanelOpen);
3115
3121
  i0.ɵɵadvance();
3116
- i0.ɵɵconditional(ctx.EditingSummary ? 6 : -1);
3122
+ i0.ɵɵconditional(ctx.EditingSummary ? 12 : -1);
3117
3123
  i0.ɵɵadvance();
3118
- i0.ɵɵconditional(ctx.ShowCredentialDialog ? 7 : -1);
3124
+ i0.ɵɵconditional(ctx.ShowCredentialDialog ? 13 : -1);
3119
3125
  i0.ɵɵadvance();
3120
- i0.ɵɵconditional(ctx.ShowCreateEntity ? 8 : -1);
3121
- } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.CheckboxControlValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.MJButtonDirective, i3.LoadingComponent, i4.CredentialDialogComponent, i5.TreeDropdownComponent, i6.ScheduledJobSummaryComponent, i6.ScheduledJobSlidePanelComponent, i7.VisualFieldEditorComponent], styles: ["\n\n\n\n\n[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.connections-container[_ngcontent-%COMP%] {\n padding: 24px;\n max-width: 1400px;\n width: 100%;\n margin: 0 auto;\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow-y: auto;\n box-sizing: border-box;\n}\n\n\n\n\n.connections-container.detail-active[_ngcontent-%COMP%], \n.connections-container.editor-active[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.connections-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 24px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: baseline;\n gap: 12px;\n}\n\n.header-title[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n margin: 0;\n color: var(--mj-text-primary);\n}\n\n.header-count[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-disabled);\n}\n\n.add-connection-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n\n\n\n\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 300px;\n}\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 400px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-text-disabled);\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin: 0 0 8px;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n margin: 0 0 24px;\n}\n\n\n\n\n\n\n.card-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 20px;\n}\n\n\n\n\n\n\n.connection-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);\n transition: box-shadow 0.2s ease, transform 0.2s ease;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n}\n\n.connection-card[_ngcontent-%COMP%]:hover {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n transform: translateY(-2px);\n}\n\n\n\n.card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 16px 0;\n}\n\n.icon-circle[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n flex-shrink: 0;\n}\n\n.icon-large[_ngcontent-%COMP%] {\n font-size: 22px;\n}\n\n\n\n.status-badge[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n padding: 4px 10px;\n border-radius: 20px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-badge-connected[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.status-badge-error[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.status-badge-inactive[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-muted);\n}\n\n.status-badge-syncing[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n\n\n.card-body[_ngcontent-%COMP%] {\n padding: 12px 16px;\n flex: 1;\n}\n\n.card-name[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin-bottom: 2px;\n}\n\n.card-company[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-disabled);\n margin-bottom: 10px;\n}\n\n.card-meta[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 6px;\n}\n\n.meta-separator[_ngcontent-%COMP%] {\n margin: 0 6px;\n}\n\n.meta-label[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.card-sync-info[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n}\n\n.card-sync-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 4px;\n color: var(--mj-text-disabled);\n}\n\n\n\n.card-test-result[_ngcontent-%COMP%] {\n font-size: 12px;\n padding: 6px 10px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 8px;\n}\n\n.card-test-result.test-success[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.card-test-result.test-failure[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.card-test-result[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n\n\n.card-footer[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.card-footer[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n\n\n.sync-menu-wrapper[_ngcontent-%COMP%] {\n position: relative;\n display: inline-flex;\n}\n\n.sync-caret[_ngcontent-%COMP%] {\n font-size: 10px;\n margin-left: 4px;\n opacity: 0.8;\n}\n\n.sync-dropdown[_ngcontent-%COMP%] {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n z-index: 1000;\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n min-width: 220px;\n overflow: hidden;\n}\n\n.sync-dropdown-left[_ngcontent-%COMP%] {\n left: auto;\n right: 0;\n}\n\n.sync-dropdown-group[_ngcontent-%COMP%] {\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.sync-dropdown-group[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.sync-dropdown-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--mj-text-muted);\n padding: 0 12px 4px;\n}\n\n.sync-dropdown-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 7px 12px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-primary);\n text-align: left;\n transition: background 0.12s;\n}\n\n.sync-dropdown-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.sync-dropdown-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n text-align: center;\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n}\n\n\n\n.card-delete-btn[_ngcontent-%COMP%] {\n margin-left: auto;\n background: none;\n border: 1px solid transparent;\n cursor: pointer;\n padding: 4px 8px;\n border-radius: 6px;\n color: var(--mj-text-disabled);\n font-size: 14px;\n transition: all 0.15s;\n}\n\n.card-delete-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-error-bg);\n border-color: var(--mj-status-error-border);\n color: var(--mj-status-error);\n}\n\n.menu-trigger[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.card-menu-dropdown[_ngcontent-%COMP%] {\n position: absolute;\n right: 0;\n top: 100%;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);\n min-width: 160px;\n z-index: 50;\n padding: 4px;\n}\n\n.menu-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 8px 12px;\n border: none;\n background: none;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-secondary);\n border-radius: 6px;\n transition: background 0.15s;\n text-align: left;\n}\n\n.menu-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.menu-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.menu-item-danger[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.menu-item-danger[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.menu-item-danger[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-error-bg);\n}\n\n\n\n\n\n\n.new-connection-card[_ngcontent-%COMP%] {\n border: 2px dashed var(--mj-border-strong);\n background: var(--mj-bg-page);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 200px;\n transition: background 0.2s, border-color 0.2s;\n}\n\n.new-connection-card[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-brand-primary);\n box-shadow: none;\n transform: none;\n}\n\n.new-card-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n}\n\n.new-card-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: var(--mj-bg-surface-active);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 24px;\n color: var(--mj-text-muted);\n transition: background 0.2s, color 0.2s;\n}\n\n.new-connection-card[_ngcontent-%COMP%]:hover .new-card-icon[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.new-card-label[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-muted);\n}\n\n.new-connection-card[_ngcontent-%COMP%]:hover .new-card-label[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n\n\n\n\n.wizard-inline[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n max-width: 720px;\n margin: 0 auto;\n}\n\n\n\n.wizard-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 0 0 20px;\n}\n\n.wizard-back-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n padding: 6px 10px;\n border-radius: 6px;\n transition: background 0.15s, color 0.15s;\n}\n\n.wizard-back-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.wizard-title[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n}\n\n\n\n\n\n\n.step-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px 32px;\n gap: 0;\n}\n\n.step-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n position: relative;\n}\n\n.step-circle[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n font-weight: 600;\n background: var(--mj-bg-surface-active);\n color: var(--mj-text-disabled);\n border: 2px solid var(--mj-border-default);\n transition: all 0.2s;\n}\n\n.step-active[_ngcontent-%COMP%] .step-circle[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n\n.step-completed[_ngcontent-%COMP%] .step-circle[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n border-color: var(--mj-status-success);\n}\n\n.step-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.step-active[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.step-completed[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.step-line[_ngcontent-%COMP%] {\n width: 48px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 8px;\n margin-bottom: 20px;\n transition: background 0.2s;\n}\n\n.step-line-active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n\n\n\n\n\n.wizard-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 0 24px 24px;\n}\n\n.step-content[_ngcontent-%COMP%] {\n min-height: 300px;\n}\n\n.step-content-centered[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n}\n\n.step-title[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 20px;\n}\n\n.step-content-centered[_ngcontent-%COMP%] .step-title[_ngcontent-%COMP%] {\n margin-bottom: 32px;\n}\n\n\n\n.search-bar[_ngcontent-%COMP%] {\n position: relative;\n margin-bottom: 20px;\n}\n\n.search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 14px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n.search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 14px 10px 40px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n}\n\n.search-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.search-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n\n\n.no-integrations[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n color: var(--mj-text-disabled);\n text-align: center;\n}\n\n.no-integrations[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n margin-bottom: 12px;\n}\n\n.no-integrations[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 500;\n color: var(--mj-text-muted);\n margin: 0 0 4px;\n}\n\n.no-integrations-hint[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n\n\n.integration-picker-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n}\n\n.integration-picker-card[_ngcontent-%COMP%] {\n border: 2px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 16px;\n cursor: pointer;\n text-align: center;\n transition: border-color 0.2s, background 0.15s;\n}\n\n.integration-picker-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-page);\n}\n\n.integration-picker-card.picker-selected[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n background: var(--mj-status-info-bg);\n}\n\n.picker-icon-circle[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n margin: 0 auto 10px;\n font-size: 18px;\n}\n\n.picker-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n}\n\n.picker-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n line-height: 1.3;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n\n\n\n\n\n.form-group[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.form-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.optional-label[_ngcontent-%COMP%] {\n font-weight: 400;\n color: var(--mj-text-disabled);\n}\n\n.form-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n}\n\n.form-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.form-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.form-input[_ngcontent-%COMP%]:disabled {\n background: var(--mj-bg-page);\n color: var(--mj-text-muted);\n}\n\n.form-textarea[_ngcontent-%COMP%] {\n resize: vertical;\n min-height: 72px;\n}\n\n.form-hint[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n}\n\n\n\n.credential-selected[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n border-radius: 8px;\n}\n\n.credential-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-status-success-text);\n font-size: 14px;\n font-weight: 500;\n}\n\n.credential-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.credential-clear[_ngcontent-%COMP%] {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--mj-text-disabled);\n font-size: 14px;\n padding: 4px;\n border-radius: 4px;\n transition: color 0.15s;\n}\n\n.credential-clear[_ngcontent-%COMP%]:hover {\n color: var(--mj-status-error);\n}\n\n.credential-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.credential-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n.credential-loading[_ngcontent-%COMP%] {\n padding: 16px 0;\n}\n\n.credential-list[_ngcontent-%COMP%] {\n margin-top: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.credential-list-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n cursor: pointer;\n font-size: 14px;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n}\n\n.credential-list-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.credential-list-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-page);\n}\n\n.credential-list-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n\n\n\n\n\n.test-prompt[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.test-hint[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-disabled);\n margin: 0;\n}\n\n.test-running[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n color: var(--mj-brand-primary);\n}\n\n.test-spinner[_ngcontent-%COMP%] {\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.test-running[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 500;\n margin: 0;\n}\n\n\n\n.test-result[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n padding: 24px;\n border-radius: 12px;\n max-width: 400px;\n}\n\n.test-result-success[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n}\n\n.test-result-failure[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n}\n\n.test-result-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n animation: _ngcontent-%COMP%_scaleIn 0.3s ease-out;\n}\n\n.test-result-success[_ngcontent-%COMP%] .test-result-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.test-result-failure[_ngcontent-%COMP%] .test-result-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n@keyframes _ngcontent-%COMP%_scaleIn {\n from {\n transform: scale(0.5);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n.test-result-message[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n text-align: center;\n}\n\n.test-result-detail[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.test-retry-btn[_ngcontent-%COMP%] {\n margin-top: 4px;\n}\n\n\n\n.toggle-switch[_ngcontent-%COMP%] {\n position: relative;\n display: inline-block;\n width: 44px;\n height: 24px;\n flex-shrink: 0;\n}\n\n.toggle-switch[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n opacity: 0;\n width: 0;\n height: 0;\n}\n\n.toggle-slider[_ngcontent-%COMP%] {\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-border-strong);\n border-radius: 24px;\n transition: background 0.2s;\n}\n\n.toggle-slider[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n height: 18px;\n width: 18px;\n left: 3px;\n bottom: 3px;\n background: var(--mj-bg-surface);\n border-radius: 50%;\n transition: transform 0.2s;\n}\n\n.toggle-switch[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:checked + .toggle-slider[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n}\n\n.toggle-switch[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:checked + .toggle-slider[_ngcontent-%COMP%]::before {\n transform: translateX(20px);\n}\n\n\n\n\n\n\n.wizard-footer[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 24px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.footer-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n}\n\n.footer-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n\n\n\n\n\n@media (max-width: 768px) {\n .connections-container[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .card-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .integration-picker-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .step-indicator[_ngcontent-%COMP%] {\n padding: 16px;\n overflow-x: auto;\n }\n\n .step-line[_ngcontent-%COMP%] {\n width: 24px;\n }\n\n .credential-actions[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n}\n\n@media (max-width: 480px) {\n .integration-picker-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .card-footer[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n}\n\n\n\n\n\n\n.delete-confirm-overlay[_ngcontent-%COMP%] {\n position: absolute;\n inset: 0;\n background: rgba(255, 255, 255, 0.95);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 5;\n border-radius: 12px;\n animation: _ngcontent-%COMP%_fadeIn 150ms ease;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.delete-confirm-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 10px;\n padding: 20px;\n text-align: center;\n}\n\n.delete-warn-icon[_ngcontent-%COMP%] {\n font-size: 28px;\n color: var(--mj-status-error);\n}\n\n.delete-confirm-text[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n max-width: 220px;\n}\n\n.delete-confirm-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-top: 4px;\n}\n\n\n\n\n\n\n.edit-panel-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.1);\n z-index: 99;\n opacity: 0;\n pointer-events: none;\n transition: opacity 300ms ease;\n}\n\n.edit-panel-backdrop.open[_ngcontent-%COMP%] {\n opacity: 1;\n pointer-events: auto;\n}\n\n.edit-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n width: 400px;\n max-width: 100%;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n box-shadow: -8px 0 24px rgba(0, 0, 0, 0.08);\n z-index: 100;\n transform: translateX(100%);\n transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.edit-panel.open[_ngcontent-%COMP%] {\n transform: translateX(0);\n}\n\n.edit-panel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.edit-panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.edit-icon-circle[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 14px;\n}\n\n.edit-close-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-disabled);\n cursor: pointer;\n font-size: 14px;\n transition: all 150ms ease;\n}\n\n.edit-close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.edit-panel-loading[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n}\n\n.edit-panel-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.edit-form-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.edit-form-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.edit-form-input[_ngcontent-%COMP%] {\n height: 36px;\n padding: 0 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n transition: border-color 150ms ease;\n}\n\n.edit-form-input[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.edit-readonly-field[_ngcontent-%COMP%] {\n padding: 8px 12px;\n background: var(--mj-bg-page);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.edit-toggle-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.edit-toggle-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n}\n\n.edit-toggle-label.active[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.edit-credential-selected[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-page);\n}\n\n.edit-credential-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.edit-credential-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.edit-credential-clear[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--mj-text-disabled);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n transition: all 150ms ease;\n}\n\n.edit-credential-clear[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.edit-credential-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.edit-credential-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n margin-top: 6px;\n max-height: 180px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n}\n\n.edit-credential-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: background 150ms ease;\n}\n\n.edit-credential-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.edit-credential-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.edit-panel-footer[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n padding: 16px 20px;\n border-top: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n\n\n\n\n\n.card-clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n\n\n\n\n\n.detail-view[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.detail-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding-bottom: 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.detail-header-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.detail-header-text[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.detail-title[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.detail-subtitle[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.detail-header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n\n\n.schedule-section[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 16px 20px;\n margin-bottom: 16px;\n}\n\n.schedule-section-header[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.schedule-section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.8rem;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.schedule-section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.schedule-empty[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 0;\n}\n\n.schedule-empty-text[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n color: var(--mj-text-disabled);\n}\n\n.schedule-create-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: linear-gradient(135deg, var(--mj-brand-primary) 0%, var(--mj-brand-primary-active) 100%);\n color: white;\n border: none;\n border-radius: 8px;\n cursor: pointer;\n font-size: 0.8rem;\n font-weight: 600;\n transition: all 0.2s ease;\n}\n\n.schedule-create-btn[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n\n\n.detail-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n}\n\n.detail-toolbar-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-map-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.detail-search[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n}\n\n.detail-search[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.detail-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n border: none;\n outline: none;\n background: transparent;\n font-size: 13px;\n color: var(--mj-text-primary);\n width: 200px;\n}\n\n.detail-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n\n\n.add-map-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-brand-primary-hover);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n white-space: nowrap;\n}\n\n.add-map-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n}\n\n.add-map-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n border-color: var(--mj-brand-primary);\n}\n\n.apply-all-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n\n.apply-all-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n border-color: var(--mj-brand-primary-hover);\n}\n\n.apply-all-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.add-map-btn-lg[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding: 10px 20px;\n font-size: 14px;\n}\n\n\n\n.add-map-panel[_ngcontent-%COMP%] {\n padding: 16px;\n margin-bottom: 12px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n animation: _ngcontent-%COMP%_fadeIn 200ms ease;\n}\n\n.add-map-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 12px;\n}\n\n.add-map-field[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.add-map-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n margin-bottom: 6px;\n}\n\n.add-map-select[_ngcontent-%COMP%] {\n width: 100%;\n height: 34px;\n padding: 0 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n cursor: pointer;\n}\n\n.add-map-select[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.add-map-direction-col[_ngcontent-%COMP%] {\n flex-shrink: 0;\n}\n\n.add-map-direction-btns[_ngcontent-%COMP%] {\n display: flex;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.add-map-direction-btns[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 7px 12px;\n border: none;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n font-size: 13px;\n cursor: pointer;\n transition: all 150ms ease;\n border-right: 1px solid var(--mj-border-default);\n}\n\n.add-map-direction-btns[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:last-child {\n border-right: none;\n}\n\n.add-map-direction-btns[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.add-map-direction-btns[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n}\n\n.add-map-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n}\n\n.add-map-save-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 16px;\n border: none;\n border-radius: 6px;\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n white-space: nowrap;\n}\n\n.add-map-save-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.add-map-save-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: default;\n}\n\n.add-map-cancel-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 34px;\n height: 34px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n cursor: pointer;\n font-size: 13px;\n transition: all 150ms ease;\n}\n\n.add-map-cancel-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.add-map-loading[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n}\n\n.add-map-loading[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n margin-right: 4px;\n}\n\n.add-map-hint[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n font-style: italic;\n}\n\n\n\n.add-map-entity-field[_ngcontent-%COMP%] {\n flex: 2;\n min-width: 280px;\n}\n\n\n\n.entity-picker-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.entity-picker-row[_ngcontent-%COMP%] mj-tree-dropdown[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.new-entity-btn[_ngcontent-%COMP%] {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 7px 12px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n background: var(--mj-brand-primary-subtle);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 6px;\n cursor: pointer;\n white-space: nowrap;\n transition: all 0.15s ease;\n}\n\n.new-entity-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n\n\n\n\n\n.sync-result-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n margin-bottom: 12px;\n animation: _ngcontent-%COMP%_fadeIn 200ms ease;\n}\n\n.sync-result-banner.sync-success[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n color: var(--mj-status-success-text);\n}\n\n.sync-result-banner.sync-failure[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n border: 1px solid var(--mj-status-error-border);\n color: var(--mj-status-error-text);\n}\n\n\n\n\n\n\n.auto-map-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 12px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.auto-map-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.auto-map-result[_ngcontent-%COMP%] {\n margin-top: 12px;\n padding: 10px 14px;\n border-radius: 6px;\n font-size: 13px;\n}\n\n.auto-map-result.auto-map-success[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n color: var(--mj-status-success-text);\n}\n\n.auto-map-result.auto-map-partial[_ngcontent-%COMP%] {\n background: var(--mj-status-warning-bg);\n border: 1px solid var(--mj-status-warning-border);\n color: var(--mj-status-warning-text);\n}\n\n.auto-map-result.auto-map-failure[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n border: 1px solid var(--mj-status-error-border);\n color: var(--mj-status-error-text);\n}\n\n.auto-map-result-summary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n}\n\n.auto-map-errors[_ngcontent-%COMP%] {\n margin-top: 6px;\n font-size: 12px;\n}\n\n.auto-map-error[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 2px 0;\n}\n\n\n\n\n\n\n.new-entity-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: 1000;\n animation: _ngcontent-%COMP%_fadeIn 0.15s ease;\n}\n\n.new-entity-dialog[_ngcontent-%COMP%] {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 640px;\n max-width: 90vw;\n max-height: 85vh;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-lg);\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease;\n}\n\n.new-entity-dialog-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.new-entity-dialog-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-base);\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.new-entity-dialog-close[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n background: transparent;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.new-entity-dialog-close[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n}\n\n.new-entity-dialog-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.new-entity-dialog-desc[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n.new-entity-dialog-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.new-entity-dialog-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n}\n\n.new-entity-dialog-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 120px;\n}\n\n.new-entity-dialog-field-wide[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.new-entity-dialog-label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.new-entity-dialog-input[_ngcontent-%COMP%] {\n padding: 8px 12px;\n font-size: var(--mj-text-sm);\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n transition: border-color 0.15s ease;\n}\n\n.new-entity-dialog-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.1);\n}\n\n.new-entity-dialog-dot[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n padding-bottom: 6px;\n user-select: none;\n}\n\n.new-entity-dialog-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n padding: 8px 0 4px;\n}\n\n.new-entity-dialog-hint[_ngcontent-%COMP%] {\n font-style: italic;\n color: var(--mj-text-disabled);\n font-weight: 400;\n}\n\n.new-entity-dialog-footer[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n padding: 12px 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.new-entity-preview-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 8px 16px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n background: var(--mj-brand-primary);\n border: none;\n border-radius: 6px;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s ease;\n}\n\n.new-entity-preview-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n}\n\n.new-entity-preview-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.new-entity-dialog-done-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 8px 16px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n background: transparent;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.new-entity-dialog-done-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-text-disabled);\n}\n\n\n\n.new-entity-next-steps[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary-subtle);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: var(--mj-radius-md);\n padding: 14px 16px;\n}\n\n.new-entity-next-steps[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary-hover);\n}\n\n.new-entity-next-steps[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n.new-entity-next-steps[_ngcontent-%COMP%] ol[_ngcontent-%COMP%] {\n margin: 0;\n padding-left: 20px;\n font-size: 13px;\n color: var(--mj-brand-primary-hover);\n line-height: 1.7;\n}\n\n\n\n.ddl-copy-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n background: transparent;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.ddl-copy-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-text-disabled);\n}\n\n\n\n.ddl-warnings[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.ddl-warning[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-status-warning);\n background: var(--mj-status-warning-subtle);\n padding: 6px 10px;\n border-radius: var(--mj-radius-sm);\n border-left: 3px solid var(--mj-status-warning);\n}\n\n.ddl-warning[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 4px;\n}\n\n.ddl-preview-block[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n max-height: 300px;\n display: flex;\n flex-direction: column;\n}\n\n.ddl-preview-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.ddl-preview-code[_ngcontent-%COMP%] {\n margin: 0;\n padding: 12px 16px;\n font-size: 12px;\n font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;\n line-height: 1.6;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n overflow: auto;\n white-space: pre-wrap;\n word-break: break-word;\n flex: 1;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n\n\n.detail-empty[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 64px 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n margin-bottom: 12px;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin: 0 0 6px;\n}\n\n.detail-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 13px;\n margin: 0;\n max-width: 400px;\n}\n\n\n\n.detail-table-head[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 8px 16px;\n background: var(--mj-bg-page);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px 8px 0 0;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-secondary);\n}\n\n.detail-table-body[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-top: none;\n border-radius: 0 0 8px 8px;\n overflow-y: auto;\n flex: 1;\n min-height: 0;\n}\n\n.detail-map-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 10px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n font-size: 13px;\n}\n\n.detail-map-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.detail-map-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-page);\n cursor: pointer;\n}\n\n.detail-map-row.sync-disabled[_ngcontent-%COMP%] {\n opacity: 0.5;\n}\n\n\n\n.dt-col-toggle[_ngcontent-%COMP%] {\n width: 60px;\n flex-shrink: 0;\n}\n\n.dt-col-source[_ngcontent-%COMP%] {\n flex: 2;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.dt-col-direction[_ngcontent-%COMP%] {\n width: 80px;\n flex-shrink: 0;\n text-align: center;\n}\n\n.dt-col-dest[_ngcontent-%COMP%] {\n flex: 2;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--mj-text-primary);\n}\n\n.dt-col-meta[_ngcontent-%COMP%] {\n width: 80px;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 6px;\n justify-content: flex-end;\n}\n\n\n\n.direction-badge[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n padding: 2px 8px;\n border-radius: 4px;\n white-space: nowrap;\n}\n\n\n\nbutton.direction-toggle[_ngcontent-%COMP%] {\n border: 1px solid transparent;\n cursor: pointer;\n transition: border-color 0.15s, box-shadow 0.15s;\n}\nbutton.direction-toggle[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.direction-badge.pull[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n.direction-badge.push[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.direction-badge.bidirectional[_ngcontent-%COMP%] {\n background: var(--mj-status-warning-subtle);\n color: var(--mj-status-warning);\n}\n\n\n\n.create-tables-list[_ngcontent-%COMP%] {\n max-height: 300px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n margin-top: 8px;\n background: var(--mj-bg-surface);\n}\n.create-tables-select-all[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n font-weight: 600;\n}\n.create-tables-checkbox[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 12px;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n.create-tables-checkbox[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n.create-tables-checkbox[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n.create-tables-name-hint[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 11px;\n margin-left: 8px;\n}\n.create-tables-filters[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 0;\n flex-wrap: wrap;\n}\n.create-tables-search[_ngcontent-%COMP%] {\n flex: 1 1 240px;\n min-width: 200px;\n}\n.create-tables-toggle[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n}\n.create-tables-toggle[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n margin: 0;\n}\n.create-tables-badge[_ngcontent-%COMP%] {\n display: inline-block;\n margin-left: 6px;\n padding: 1px 6px;\n font-size: 10px;\n font-weight: 600;\n border-radius: 10px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n line-height: 1.4;\n}\n.create-tables-badge-custom[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n.create-tables-badge-registered[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n}\n.add-map-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 6px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n.add-map-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n\n\n.detail-config-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border-radius: 4px;\n background: var(--mj-bg-surface-active);\n color: var(--mj-text-disabled);\n font-size: 11px;\n}\n\n\n\n.detail-back-btn[_ngcontent-%COMP%] {\n display: inline-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: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 16px;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n flex-shrink: 0;\n}\n\n.detail-back-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n\n\n.detail-edit-btn[_ngcontent-%COMP%] {\n display: inline-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: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 14px;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n flex-shrink: 0;\n}\n\n.detail-edit-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n\n\n.map-edit-hint[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 11px;\n transition: color 0.15s;\n}\n\n.detail-map-row[_ngcontent-%COMP%]:hover .map-edit-hint[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n\n.ve-header-title-inline[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 600;\n}\n\n.ve-source-label[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.ve-direction-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n.ve-dest-label[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.ve-stat-inline[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.ve-stat-inline[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.detail-table-empty[_ngcontent-%COMP%] {\n padding: 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n\n\n\n\n\n.discovered-objects-section[_ngcontent-%COMP%] {\n margin: 12px 0;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n overflow: hidden;\n}\n\n.discovered-objects-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.discovered-objects-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.discovered-objects-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.discovered-count[_ngcontent-%COMP%] {\n font-weight: 400;\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n.discovered-objects-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.discovered-action-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 3px 10px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n}\n\n.discovered-action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.discovered-action-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.discovered-loading[_ngcontent-%COMP%], \n.discovered-empty[_ngcontent-%COMP%] {\n padding: 16px;\n text-align: center;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.discovered-loading[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n.discovered-objects-list[_ngcontent-%COMP%] {\n max-height: 280px;\n overflow-y: auto;\n}\n\n.discovered-object-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 7px 14px;\n cursor: pointer;\n transition: background 0.1s;\n border-bottom: 1px solid var(--mj-border-subtle);\n font-size: 13px;\n}\n\n.discovered-object-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.discovered-object-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.discovered-object-row.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface));\n}\n\n.discovered-object-row[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n accent-color: var(--mj-brand-primary);\n cursor: pointer;\n}\n\n.discovered-object-name[_ngcontent-%COMP%] {\n flex: 1;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.discovered-object-api-name[_ngcontent-%COMP%] {\n flex: 1;\n color: var(--mj-text-muted);\n font-size: 12px;\n font-family: monospace;\n}\n\n.discovered-object-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.discovered-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border-radius: 4px;\n font-size: 10px;\n}\n\n.discovered-badge.incremental[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n background: var(--mj-status-success-bg);\n}\n\n.discovered-badge.writable[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}"] });
3126
+ i0.ɵɵconditional(ctx.ShowCreateEntity ? 14 : -1);
3127
+ } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.CheckboxControlValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.MJButtonDirective, i2.MJPageLayoutComponent, i2.MJPageHeaderComponent, i2.MJPageBodyComponent, i2.MJRefreshButtonComponent, i3.LoadingComponent, i4.CredentialDialogComponent, i5.TreeDropdownComponent, i6.ScheduledJobSummaryComponent, i6.ScheduledJobSlidePanelComponent, i7.VisualFieldEditorComponent], styles: ["\n\n\n\n\n[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n\n\n\n.connections-container[_ngcontent-%COMP%] {\n padding: 24px;\n max-width: 1400px;\n width: 100%;\n margin: 0 auto;\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow-y: auto;\n box-sizing: border-box;\n}\n\n\n\n\n.connections-container.detail-active[_ngcontent-%COMP%], \n.connections-container.editor-active[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n\n\n\n\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 300px;\n}\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 400px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-text-disabled);\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin: 0 0 8px;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n margin: 0 0 24px;\n}\n\n\n\n\n\n\n.card-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 20px;\n}\n\n\n\n\n\n\n.connection-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);\n transition: box-shadow 0.2s ease, transform 0.2s ease;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n}\n\n.connection-card[_ngcontent-%COMP%]:hover {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n transform: translateY(-2px);\n}\n\n\n\n.card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 16px 0;\n}\n\n.icon-circle[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n flex-shrink: 0;\n}\n\n.icon-large[_ngcontent-%COMP%] {\n font-size: 22px;\n}\n\n\n\n.status-badge[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n padding: 4px 10px;\n border-radius: 20px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-badge-connected[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.status-badge-error[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.status-badge-inactive[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-muted);\n}\n\n.status-badge-syncing[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n\n\n.card-body[_ngcontent-%COMP%] {\n padding: 12px 16px;\n flex: 1;\n}\n\n.card-name[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin-bottom: 2px;\n}\n\n.card-company[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-disabled);\n margin-bottom: 10px;\n}\n\n.card-meta[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 6px;\n}\n\n.meta-separator[_ngcontent-%COMP%] {\n margin: 0 6px;\n}\n\n.meta-label[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.card-sync-info[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n}\n\n.card-sync-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 4px;\n color: var(--mj-text-disabled);\n}\n\n\n\n.card-test-result[_ngcontent-%COMP%] {\n font-size: 12px;\n padding: 6px 10px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 8px;\n}\n\n.card-test-result.test-success[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.card-test-result.test-failure[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.card-test-result[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n\n\n.card-footer[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.card-footer[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n\n\n.sync-menu-wrapper[_ngcontent-%COMP%] {\n position: relative;\n display: inline-flex;\n}\n\n.sync-caret[_ngcontent-%COMP%] {\n font-size: 10px;\n margin-left: 4px;\n opacity: 0.8;\n}\n\n.sync-dropdown[_ngcontent-%COMP%] {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n z-index: 1000;\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n min-width: 220px;\n overflow: hidden;\n}\n\n.sync-dropdown-left[_ngcontent-%COMP%] {\n left: auto;\n right: 0;\n}\n\n.sync-dropdown-group[_ngcontent-%COMP%] {\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.sync-dropdown-group[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.sync-dropdown-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--mj-text-muted);\n padding: 0 12px 4px;\n}\n\n.sync-dropdown-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 7px 12px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-primary);\n text-align: left;\n transition: background 0.12s;\n}\n\n.sync-dropdown-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.sync-dropdown-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n text-align: center;\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n}\n\n\n\n.card-delete-btn[_ngcontent-%COMP%] {\n margin-left: auto;\n background: none;\n border: 1px solid transparent;\n cursor: pointer;\n padding: 4px 8px;\n border-radius: 6px;\n color: var(--mj-text-disabled);\n font-size: 14px;\n transition: all 0.15s;\n}\n\n.card-delete-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-error-bg);\n border-color: var(--mj-status-error-border);\n color: var(--mj-status-error);\n}\n\n.menu-trigger[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.card-menu-dropdown[_ngcontent-%COMP%] {\n position: absolute;\n right: 0;\n top: 100%;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);\n min-width: 160px;\n z-index: 50;\n padding: 4px;\n}\n\n.menu-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 8px 12px;\n border: none;\n background: none;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-secondary);\n border-radius: 6px;\n transition: background 0.15s;\n text-align: left;\n}\n\n.menu-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.menu-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.menu-item-danger[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.menu-item-danger[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.menu-item-danger[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-error-bg);\n}\n\n\n\n\n\n\n.new-connection-card[_ngcontent-%COMP%] {\n border: 2px dashed var(--mj-border-strong);\n background: var(--mj-bg-page);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 200px;\n transition: background 0.2s, border-color 0.2s;\n}\n\n.new-connection-card[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-brand-primary);\n box-shadow: none;\n transform: none;\n}\n\n.new-card-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n}\n\n.new-card-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: var(--mj-bg-surface-active);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 24px;\n color: var(--mj-text-muted);\n transition: background 0.2s, color 0.2s;\n}\n\n.new-connection-card[_ngcontent-%COMP%]:hover .new-card-icon[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.new-card-label[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-muted);\n}\n\n.new-connection-card[_ngcontent-%COMP%]:hover .new-card-label[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n\n\n\n\n.wizard-inline[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n max-width: 720px;\n margin: 0 auto;\n}\n\n\n\n.wizard-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 0 0 20px;\n}\n\n.wizard-back-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n padding: 6px 10px;\n border-radius: 6px;\n transition: background 0.15s, color 0.15s;\n}\n\n.wizard-back-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.wizard-title[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n}\n\n\n\n\n\n\n.step-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px 32px;\n gap: 0;\n}\n\n.step-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n position: relative;\n}\n\n.step-circle[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n font-weight: 600;\n background: var(--mj-bg-surface-active);\n color: var(--mj-text-disabled);\n border: 2px solid var(--mj-border-default);\n transition: all 0.2s;\n}\n\n.step-active[_ngcontent-%COMP%] .step-circle[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n\n.step-completed[_ngcontent-%COMP%] .step-circle[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n border-color: var(--mj-status-success);\n}\n\n.step-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.step-active[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.step-completed[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.step-line[_ngcontent-%COMP%] {\n width: 48px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 8px;\n margin-bottom: 20px;\n transition: background 0.2s;\n}\n\n.step-line-active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n\n\n\n\n\n.wizard-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 0 24px 24px;\n}\n\n.step-content[_ngcontent-%COMP%] {\n min-height: 300px;\n}\n\n.step-content-centered[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n}\n\n.step-title[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 20px;\n}\n\n.step-content-centered[_ngcontent-%COMP%] .step-title[_ngcontent-%COMP%] {\n margin-bottom: 32px;\n}\n\n\n\n.search-bar[_ngcontent-%COMP%] {\n position: relative;\n margin-bottom: 20px;\n}\n\n.search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 14px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n.search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 14px 10px 40px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n}\n\n.search-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.search-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n\n\n.no-integrations[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n color: var(--mj-text-disabled);\n text-align: center;\n}\n\n.no-integrations[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n margin-bottom: 12px;\n}\n\n.no-integrations[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 500;\n color: var(--mj-text-muted);\n margin: 0 0 4px;\n}\n\n.no-integrations-hint[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n\n\n.integration-picker-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n}\n\n.integration-picker-card[_ngcontent-%COMP%] {\n border: 2px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 16px;\n cursor: pointer;\n text-align: center;\n transition: border-color 0.2s, background 0.15s;\n}\n\n.integration-picker-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-page);\n}\n\n.integration-picker-card.picker-selected[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n background: var(--mj-status-info-bg);\n}\n\n.picker-icon-circle[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n margin: 0 auto 10px;\n font-size: 18px;\n}\n\n.picker-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n}\n\n.picker-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n line-height: 1.3;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n\n\n\n\n\n.form-group[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.form-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.optional-label[_ngcontent-%COMP%] {\n font-weight: 400;\n color: var(--mj-text-disabled);\n}\n\n.form-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n}\n\n.form-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.form-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.form-input[_ngcontent-%COMP%]:disabled {\n background: var(--mj-bg-page);\n color: var(--mj-text-muted);\n}\n\n.form-textarea[_ngcontent-%COMP%] {\n resize: vertical;\n min-height: 72px;\n}\n\n.form-hint[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n}\n\n\n\n.credential-selected[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n border-radius: 8px;\n}\n\n.credential-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-status-success-text);\n font-size: 14px;\n font-weight: 500;\n}\n\n.credential-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.credential-clear[_ngcontent-%COMP%] {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--mj-text-disabled);\n font-size: 14px;\n padding: 4px;\n border-radius: 4px;\n transition: color 0.15s;\n}\n\n.credential-clear[_ngcontent-%COMP%]:hover {\n color: var(--mj-status-error);\n}\n\n.credential-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.credential-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n.credential-loading[_ngcontent-%COMP%] {\n padding: 16px 0;\n}\n\n.credential-list[_ngcontent-%COMP%] {\n margin-top: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.credential-list-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n cursor: pointer;\n font-size: 14px;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n}\n\n.credential-list-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.credential-list-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-page);\n}\n\n.credential-list-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n\n\n\n\n\n.test-prompt[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.test-hint[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-disabled);\n margin: 0;\n}\n\n.test-running[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n color: var(--mj-brand-primary);\n}\n\n.test-spinner[_ngcontent-%COMP%] {\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.test-running[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 500;\n margin: 0;\n}\n\n\n\n.test-result[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n padding: 24px;\n border-radius: 12px;\n max-width: 400px;\n}\n\n.test-result-success[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n}\n\n.test-result-failure[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n}\n\n.test-result-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n animation: _ngcontent-%COMP%_scaleIn 0.3s ease-out;\n}\n\n.test-result-success[_ngcontent-%COMP%] .test-result-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.test-result-failure[_ngcontent-%COMP%] .test-result-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n@keyframes _ngcontent-%COMP%_scaleIn {\n from {\n transform: scale(0.5);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n.test-result-message[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n text-align: center;\n}\n\n.test-result-detail[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.test-retry-btn[_ngcontent-%COMP%] {\n margin-top: 4px;\n}\n\n\n\n.toggle-switch[_ngcontent-%COMP%] {\n position: relative;\n display: inline-block;\n width: 44px;\n height: 24px;\n flex-shrink: 0;\n}\n\n.toggle-switch[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n opacity: 0;\n width: 0;\n height: 0;\n}\n\n.toggle-slider[_ngcontent-%COMP%] {\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-border-strong);\n border-radius: 24px;\n transition: background 0.2s;\n}\n\n.toggle-slider[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n height: 18px;\n width: 18px;\n left: 3px;\n bottom: 3px;\n background: var(--mj-bg-surface);\n border-radius: 50%;\n transition: transform 0.2s;\n}\n\n.toggle-switch[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:checked + .toggle-slider[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n}\n\n.toggle-switch[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:checked + .toggle-slider[_ngcontent-%COMP%]::before {\n transform: translateX(20px);\n}\n\n\n\n\n\n\n.wizard-footer[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 24px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.footer-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n}\n\n.footer-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n\n\n\n\n\n@media (max-width: 768px) {\n .connections-container[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .card-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .integration-picker-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .step-indicator[_ngcontent-%COMP%] {\n padding: 16px;\n overflow-x: auto;\n }\n\n .step-line[_ngcontent-%COMP%] {\n width: 24px;\n }\n\n .credential-actions[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n}\n\n@media (max-width: 480px) {\n .integration-picker-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .card-footer[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n}\n\n\n\n\n\n\n.delete-confirm-overlay[_ngcontent-%COMP%] {\n position: absolute;\n inset: 0;\n background: rgba(255, 255, 255, 0.95);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 5;\n border-radius: 12px;\n animation: _ngcontent-%COMP%_fadeIn 150ms ease;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.delete-confirm-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 10px;\n padding: 20px;\n text-align: center;\n}\n\n.delete-warn-icon[_ngcontent-%COMP%] {\n font-size: 28px;\n color: var(--mj-status-error);\n}\n\n.delete-confirm-text[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n max-width: 220px;\n}\n\n.delete-confirm-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-top: 4px;\n}\n\n\n\n\n\n\n.edit-panel-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.1);\n z-index: 99;\n opacity: 0;\n pointer-events: none;\n transition: opacity 300ms ease;\n}\n\n.edit-panel-backdrop.open[_ngcontent-%COMP%] {\n opacity: 1;\n pointer-events: auto;\n}\n\n.edit-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n width: 400px;\n max-width: 100%;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n box-shadow: -8px 0 24px rgba(0, 0, 0, 0.08);\n z-index: 100;\n transform: translateX(100%);\n transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.edit-panel.open[_ngcontent-%COMP%] {\n transform: translateX(0);\n}\n\n.edit-panel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.edit-panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.edit-icon-circle[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 14px;\n}\n\n.edit-close-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-disabled);\n cursor: pointer;\n font-size: 14px;\n transition: all 150ms ease;\n}\n\n.edit-close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.edit-panel-loading[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n}\n\n.edit-panel-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.edit-form-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.edit-form-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.edit-form-input[_ngcontent-%COMP%] {\n height: 36px;\n padding: 0 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n transition: border-color 150ms ease;\n}\n\n.edit-form-input[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.edit-readonly-field[_ngcontent-%COMP%] {\n padding: 8px 12px;\n background: var(--mj-bg-page);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.edit-toggle-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.edit-toggle-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n}\n\n.edit-toggle-label.active[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.edit-credential-selected[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-page);\n}\n\n.edit-credential-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.edit-credential-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.edit-credential-clear[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--mj-text-disabled);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n transition: all 150ms ease;\n}\n\n.edit-credential-clear[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.edit-credential-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.edit-credential-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n margin-top: 6px;\n max-height: 180px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n}\n\n.edit-credential-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: background 150ms ease;\n}\n\n.edit-credential-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.edit-credential-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.edit-panel-footer[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n padding: 16px 20px;\n border-top: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n\n\n\n\n\n.card-clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n\n\n\n\n\n.detail-view[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.detail-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding-bottom: 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.detail-header-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.detail-header-text[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.detail-title[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.detail-subtitle[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.detail-header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n\n\n.schedule-section[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 16px 20px;\n margin-bottom: 16px;\n}\n\n.schedule-section-header[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.schedule-section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.8rem;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.schedule-section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.schedule-empty[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 0;\n}\n\n.schedule-empty-text[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n color: var(--mj-text-disabled);\n}\n\n.schedule-create-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: linear-gradient(135deg, var(--mj-brand-primary) 0%, var(--mj-brand-primary-active) 100%);\n color: white;\n border: none;\n border-radius: 8px;\n cursor: pointer;\n font-size: 0.8rem;\n font-weight: 600;\n transition: all 0.2s ease;\n}\n\n.schedule-create-btn[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n\n\n.detail-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n}\n\n.detail-toolbar-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-map-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.detail-search[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n}\n\n.detail-search[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.detail-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n border: none;\n outline: none;\n background: transparent;\n font-size: 13px;\n color: var(--mj-text-primary);\n width: 200px;\n}\n\n.detail-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n\n\n.add-map-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-brand-primary-hover);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n white-space: nowrap;\n}\n\n.add-map-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n}\n\n.add-map-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n border-color: var(--mj-brand-primary);\n}\n\n.apply-all-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n\n.apply-all-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n border-color: var(--mj-brand-primary-hover);\n}\n\n.apply-all-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.add-map-btn-lg[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding: 10px 20px;\n font-size: 14px;\n}\n\n\n\n.add-map-panel[_ngcontent-%COMP%] {\n padding: 16px;\n margin-bottom: 12px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n animation: _ngcontent-%COMP%_fadeIn 200ms ease;\n}\n\n.add-map-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 12px;\n}\n\n.add-map-field[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.add-map-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n margin-bottom: 6px;\n}\n\n.add-map-select[_ngcontent-%COMP%] {\n width: 100%;\n height: 34px;\n padding: 0 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n cursor: pointer;\n}\n\n.add-map-select[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.add-map-direction-col[_ngcontent-%COMP%] {\n flex-shrink: 0;\n}\n\n.add-map-direction-btns[_ngcontent-%COMP%] {\n display: flex;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.add-map-direction-btns[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 7px 12px;\n border: none;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n font-size: 13px;\n cursor: pointer;\n transition: all 150ms ease;\n border-right: 1px solid var(--mj-border-default);\n}\n\n.add-map-direction-btns[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:last-child {\n border-right: none;\n}\n\n.add-map-direction-btns[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.add-map-direction-btns[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n}\n\n.add-map-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n}\n\n.add-map-save-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 16px;\n border: none;\n border-radius: 6px;\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n white-space: nowrap;\n}\n\n.add-map-save-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.add-map-save-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: default;\n}\n\n.add-map-cancel-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 34px;\n height: 34px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n cursor: pointer;\n font-size: 13px;\n transition: all 150ms ease;\n}\n\n.add-map-cancel-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.add-map-loading[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n}\n\n.add-map-loading[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n margin-right: 4px;\n}\n\n.add-map-hint[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n font-style: italic;\n}\n\n\n\n.add-map-entity-field[_ngcontent-%COMP%] {\n flex: 2;\n min-width: 280px;\n}\n\n\n\n.entity-picker-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.entity-picker-row[_ngcontent-%COMP%] mj-tree-dropdown[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.new-entity-btn[_ngcontent-%COMP%] {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 7px 12px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n background: var(--mj-brand-primary-subtle);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 6px;\n cursor: pointer;\n white-space: nowrap;\n transition: all 0.15s ease;\n}\n\n.new-entity-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n\n\n\n\n\n.sync-result-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n margin-bottom: 12px;\n animation: _ngcontent-%COMP%_fadeIn 200ms ease;\n}\n\n.sync-result-banner.sync-success[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n color: var(--mj-status-success-text);\n}\n\n.sync-result-banner.sync-failure[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n border: 1px solid var(--mj-status-error-border);\n color: var(--mj-status-error-text);\n}\n\n\n\n\n\n\n.auto-map-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 12px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.auto-map-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.auto-map-result[_ngcontent-%COMP%] {\n margin-top: 12px;\n padding: 10px 14px;\n border-radius: 6px;\n font-size: 13px;\n}\n\n.auto-map-result.auto-map-success[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n color: var(--mj-status-success-text);\n}\n\n.auto-map-result.auto-map-partial[_ngcontent-%COMP%] {\n background: var(--mj-status-warning-bg);\n border: 1px solid var(--mj-status-warning-border);\n color: var(--mj-status-warning-text);\n}\n\n.auto-map-result.auto-map-failure[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n border: 1px solid var(--mj-status-error-border);\n color: var(--mj-status-error-text);\n}\n\n.auto-map-result-summary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n}\n\n.auto-map-errors[_ngcontent-%COMP%] {\n margin-top: 6px;\n font-size: 12px;\n}\n\n.auto-map-error[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 2px 0;\n}\n\n\n\n\n\n\n.new-entity-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: 1000;\n animation: _ngcontent-%COMP%_fadeIn 0.15s ease;\n}\n\n.new-entity-dialog[_ngcontent-%COMP%] {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 640px;\n max-width: 90vw;\n max-height: 85vh;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-lg);\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease;\n}\n\n.new-entity-dialog-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.new-entity-dialog-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-base);\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.new-entity-dialog-close[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n background: transparent;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.new-entity-dialog-close[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n}\n\n.new-entity-dialog-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.new-entity-dialog-desc[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n.new-entity-dialog-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.new-entity-dialog-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n}\n\n.new-entity-dialog-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 120px;\n}\n\n.new-entity-dialog-field-wide[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.new-entity-dialog-label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.new-entity-dialog-input[_ngcontent-%COMP%] {\n padding: 8px 12px;\n font-size: var(--mj-text-sm);\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n transition: border-color 0.15s ease;\n}\n\n.new-entity-dialog-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.1);\n}\n\n.new-entity-dialog-dot[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n padding-bottom: 6px;\n user-select: none;\n}\n\n.new-entity-dialog-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n padding: 8px 0 4px;\n}\n\n.new-entity-dialog-hint[_ngcontent-%COMP%] {\n font-style: italic;\n color: var(--mj-text-disabled);\n font-weight: 400;\n}\n\n.new-entity-dialog-footer[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n padding: 12px 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.new-entity-preview-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 8px 16px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n background: var(--mj-brand-primary);\n border: none;\n border-radius: 6px;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s ease;\n}\n\n.new-entity-preview-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n}\n\n.new-entity-preview-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.new-entity-dialog-done-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 8px 16px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n background: transparent;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.new-entity-dialog-done-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-text-disabled);\n}\n\n\n\n.new-entity-next-steps[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary-subtle);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: var(--mj-radius-md);\n padding: 14px 16px;\n}\n\n.new-entity-next-steps[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary-hover);\n}\n\n.new-entity-next-steps[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n.new-entity-next-steps[_ngcontent-%COMP%] ol[_ngcontent-%COMP%] {\n margin: 0;\n padding-left: 20px;\n font-size: 13px;\n color: var(--mj-brand-primary-hover);\n line-height: 1.7;\n}\n\n\n\n.ddl-copy-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n background: transparent;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.ddl-copy-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-text-disabled);\n}\n\n\n\n.ddl-warnings[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.ddl-warning[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-status-warning);\n background: var(--mj-status-warning-subtle);\n padding: 6px 10px;\n border-radius: var(--mj-radius-sm);\n border-left: 3px solid var(--mj-status-warning);\n}\n\n.ddl-warning[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 4px;\n}\n\n.ddl-preview-block[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n max-height: 300px;\n display: flex;\n flex-direction: column;\n}\n\n.ddl-preview-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.ddl-preview-code[_ngcontent-%COMP%] {\n margin: 0;\n padding: 12px 16px;\n font-size: 12px;\n font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;\n line-height: 1.6;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n overflow: auto;\n white-space: pre-wrap;\n word-break: break-word;\n flex: 1;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n\n\n.detail-empty[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 64px 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n margin-bottom: 12px;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin: 0 0 6px;\n}\n\n.detail-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 13px;\n margin: 0;\n max-width: 400px;\n}\n\n\n\n.detail-table-head[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 8px 16px;\n background: var(--mj-bg-page);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px 8px 0 0;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-secondary);\n}\n\n.detail-table-body[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-top: none;\n border-radius: 0 0 8px 8px;\n overflow-y: auto;\n flex: 1;\n min-height: 0;\n}\n\n.detail-map-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 10px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n font-size: 13px;\n}\n\n.detail-map-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.detail-map-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-page);\n cursor: pointer;\n}\n\n.detail-map-row.sync-disabled[_ngcontent-%COMP%] {\n opacity: 0.5;\n}\n\n\n\n.dt-col-toggle[_ngcontent-%COMP%] {\n width: 60px;\n flex-shrink: 0;\n}\n\n.dt-col-source[_ngcontent-%COMP%] {\n flex: 2;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.dt-col-direction[_ngcontent-%COMP%] {\n width: 80px;\n flex-shrink: 0;\n text-align: center;\n}\n\n.dt-col-dest[_ngcontent-%COMP%] {\n flex: 2;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--mj-text-primary);\n}\n\n.dt-col-meta[_ngcontent-%COMP%] {\n width: 80px;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 6px;\n justify-content: flex-end;\n}\n\n\n\n.direction-badge[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n padding: 2px 8px;\n border-radius: 4px;\n white-space: nowrap;\n}\n\n\n\nbutton.direction-toggle[_ngcontent-%COMP%] {\n border: 1px solid transparent;\n cursor: pointer;\n transition: border-color 0.15s, box-shadow 0.15s;\n}\nbutton.direction-toggle[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.direction-badge.pull[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n.direction-badge.push[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.direction-badge.bidirectional[_ngcontent-%COMP%] {\n background: var(--mj-status-warning-subtle);\n color: var(--mj-status-warning);\n}\n\n\n\n.create-tables-list[_ngcontent-%COMP%] {\n max-height: 300px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n margin-top: 8px;\n background: var(--mj-bg-surface);\n}\n.create-tables-select-all[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n font-weight: 600;\n}\n.create-tables-checkbox[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 12px;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n.create-tables-checkbox[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n.create-tables-checkbox[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n.create-tables-name-hint[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 11px;\n margin-left: 8px;\n}\n.create-tables-filters[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 0;\n flex-wrap: wrap;\n}\n.create-tables-search[_ngcontent-%COMP%] {\n flex: 1 1 240px;\n min-width: 200px;\n}\n.create-tables-toggle[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n}\n.create-tables-toggle[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n margin: 0;\n}\n.create-tables-badge[_ngcontent-%COMP%] {\n display: inline-block;\n margin-left: 6px;\n padding: 1px 6px;\n font-size: 10px;\n font-weight: 600;\n border-radius: 10px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n line-height: 1.4;\n}\n.create-tables-badge-custom[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n.create-tables-badge-registered[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n}\n.add-map-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 6px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n.add-map-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n\n\n.detail-config-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border-radius: 4px;\n background: var(--mj-bg-surface-active);\n color: var(--mj-text-disabled);\n font-size: 11px;\n}\n\n\n\n.detail-back-btn[_ngcontent-%COMP%] {\n display: inline-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: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 16px;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n flex-shrink: 0;\n}\n\n.detail-back-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n\n\n.detail-edit-btn[_ngcontent-%COMP%] {\n display: inline-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: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 14px;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n flex-shrink: 0;\n}\n\n.detail-edit-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n\n\n.map-edit-hint[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 11px;\n transition: color 0.15s;\n}\n\n.detail-map-row[_ngcontent-%COMP%]:hover .map-edit-hint[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n\n.ve-header-title-inline[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 600;\n}\n\n.ve-source-label[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.ve-direction-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n.ve-dest-label[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.ve-stat-inline[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.ve-stat-inline[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.detail-table-empty[_ngcontent-%COMP%] {\n padding: 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n\n\n\n\n\n.discovered-objects-section[_ngcontent-%COMP%] {\n margin: 12px 0;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n overflow: hidden;\n}\n\n.discovered-objects-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.discovered-objects-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.discovered-objects-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.discovered-count[_ngcontent-%COMP%] {\n font-weight: 400;\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n.discovered-objects-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.discovered-action-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 3px 10px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n}\n\n.discovered-action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.discovered-action-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.discovered-loading[_ngcontent-%COMP%], \n.discovered-empty[_ngcontent-%COMP%] {\n padding: 16px;\n text-align: center;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.discovered-loading[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n.discovered-objects-list[_ngcontent-%COMP%] {\n max-height: 280px;\n overflow-y: auto;\n}\n\n.discovered-object-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 7px 14px;\n cursor: pointer;\n transition: background 0.1s;\n border-bottom: 1px solid var(--mj-border-subtle);\n font-size: 13px;\n}\n\n.discovered-object-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.discovered-object-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.discovered-object-row.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface));\n}\n\n.discovered-object-row[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n accent-color: var(--mj-brand-primary);\n cursor: pointer;\n}\n\n.discovered-object-name[_ngcontent-%COMP%] {\n flex: 1;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.discovered-object-api-name[_ngcontent-%COMP%] {\n flex: 1;\n color: var(--mj-text-muted);\n font-size: 12px;\n font-family: monospace;\n}\n\n.discovered-object-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.discovered-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border-radius: 4px;\n font-size: 10px;\n}\n\n.discovered-badge.incremental[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n background: var(--mj-status-success-bg);\n}\n\n.discovered-badge.writable[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}"] });
3122
3128
  };
3123
3129
  ConnectionsComponent = ConnectionsComponent_1 = __decorate([
3124
3130
  RegisterClass(BaseResourceComponent, 'IntegrationConnections')
@@ -3126,7 +3132,7 @@ ConnectionsComponent = ConnectionsComponent_1 = __decorate([
3126
3132
  export { ConnectionsComponent };
3127
3133
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConnectionsComponent, [{
3128
3134
  type: Component,
3129
- args: [{ standalone: false, selector: 'app-integration-connections', template: "<!-- Main container -->\n<div class=\"connections-container\" [class.detail-active]=\"!!SelectedSummary\"\n [class.editor-active]=\"!!EditorEntityMap\">\n\n <!-- ======================================================================\n CARD GRID VIEW (shown when no wizard and no detail selected)\n ====================================================================== -->\n @if (!WizardOpen && !SelectedSummary) {\n <!-- Header -->\n <div class=\"connections-header\">\n <div class=\"header-left\">\n <h2 class=\"header-title\">Integrations</h2>\n <span class=\"header-count\">{{ Connections.length }} integration{{ Connections.length !== 1 ? 's' : '' }}</span>\n </div>\n <button mjButton variant=\"primary\" (click)=\"OpenWizard()\" class=\"add-connection-btn\">\n <i class=\"fa-solid fa-plus\"></i>\n Add Integration\n </button>\n </div>\n\n <!-- Loading state -->\n @if (IsLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading integrations...\"></mj-loading>\n </div>\n }\n\n <!-- Empty state -->\n @if (!IsLoading && Connections.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-plug empty-icon\"></i>\n <h3>No integrations yet</h3>\n <p>Connect your first external system to start syncing data.</p>\n <button mjButton variant=\"primary\" (click)=\"OpenWizard()\">\n <i class=\"fa-solid fa-plus\"></i>\n Add Your First Integration\n </button>\n </div>\n }\n\n <!-- Card grid -->\n @if (!IsLoading && Connections.length > 0) {\n <div class=\"card-grid\">\n @for (summary of Connections; track summary.Integration.ID) {\n <div class=\"connection-card\">\n <!-- Card header + body: clickable to open detail view -->\n <div class=\"card-clickable\" (click)=\"SelectIntegrationCard(summary)\">\n <div class=\"card-header\">\n <div class=\"icon-circle\" [style.background-color]=\"GetIconBrandColor(summary.Integration.Integration)\">\n <i [class]=\"GetIntegrationIcon(summary.Integration.Integration, summary.Icon)\" class=\"icon-large\"></i>\n </div>\n <span [class]=\"GetStatusBadgeClass(summary)\">{{ GetStatusBadge(summary) }}</span>\n </div>\n\n <!-- Card body -->\n <div class=\"card-body\">\n <div class=\"card-name\">{{ summary.Integration.Name }}</div>\n <div class=\"card-company\">{{ summary.Integration.Company }}</div>\n <div class=\"card-meta\">\n <span class=\"meta-label\">{{ GetSourceTypeLabel(summary) }}</span>\n <span class=\"meta-separator\">&middot;</span>\n <span class=\"meta-value\">{{ GetCredentialHint(summary) }}</span>\n </div>\n <div class=\"card-sync-info\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n Syncing {{ GetEntityMapCount(summary.Integration.ID) }} entities\n </div>\n\n <!-- Inline test result -->\n @if (GetCardTestResult(summary.Integration.ID); as testResult) {\n <div class=\"card-test-result\" [class.test-success]=\"testResult.Success\" [class.test-failure]=\"!testResult.Success\">\n @if (testResult.Success) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <i class=\"fa-solid fa-circle-xmark\"></i>\n }\n <span>{{ testResult.Message }}</span>\n </div>\n }\n </div>\n </div><!-- /card-clickable -->\n\n <!-- Delete confirmation overlay -->\n @if (IsDeleteConfirming(summary.Integration.ID)) {\n <div class=\"delete-confirm-overlay\">\n <div class=\"delete-confirm-content\">\n <i class=\"fa-solid fa-triangle-exclamation delete-warn-icon\"></i>\n <span class=\"delete-confirm-text\">Delete this integration and all its entity maps?</span>\n <div class=\"delete-confirm-actions\">\n <button mjButton\n variant=\"danger\"\n [disabled]=\"IsDeleting\"\n (click)=\"ConfirmDelete(summary.Integration.ID)\">\n @if (IsDeleting) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Deleting...\n } @else {\n Delete\n }\n </button>\n <button mjButton variant=\"outline\" (click)=\"CancelDelete()\">\n Cancel\n </button>\n </div>\n </div>\n </div>\n }\n\n <!-- Card footer -->\n <div class=\"card-footer\">\n <button mjButton\n variant=\"outline\"\n [disabled]=\"!!TestingCardID\"\n (click)=\"TestExistingConnection(summary.Integration.ID)\">\n @if (IsTestingCard(summary.Integration.ID)) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n Test\n }\n </button>\n <button mjButton variant=\"outline\" (click)=\"OnMenuAction('edit', summary)\">\n Configure\n </button>\n @if (IsConnectionActive(summary)) {\n <div class=\"sync-menu-wrapper\">\n <button mjButton variant=\"primary\"\n [disabled]=\"!!SyncingIntegrationID\"\n (click)=\"ToggleSyncMenu(summary.Integration.ID, $event)\">\n @if (IsSyncing(summary.Integration.ID)) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Syncing...\n } @else {\n <i class=\"fa-solid fa-arrows-rotate\"></i> Sync\n <i class=\"fa-solid fa-chevron-down sync-caret\"></i>\n }\n </button>\n @if (SyncMenuIntegrationID === summary.Integration.ID) {\n <div class=\"sync-dropdown\">\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Pull (External \u2192 MJ)</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, false, 'Pull', $event)\">\n <i class=\"fa-solid fa-arrow-down-to-line\"></i> Incremental Pull\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, true, 'Pull', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Pull\n </button>\n </div>\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Push (MJ \u2192 External)</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, false, 'Push', $event)\">\n <i class=\"fa-solid fa-arrow-up-from-line\"></i> Incremental Push\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, true, 'Push', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Push\n </button>\n </div>\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Bidirectional</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, false, 'Bidirectional', $event)\">\n <i class=\"fa-solid fa-arrows-rotate\"></i> Incremental Both\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, true, 'Bidirectional', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Both\n </button>\n </div>\n </div>\n }\n </div>\n }\n <button class=\"card-delete-btn\" (click)=\"OnMenuAction('delete', summary)\" title=\"Delete integration\">\n <i class=\"fa-solid fa-trash-can\"></i>\n </button>\n </div>\n </div>\n }\n\n <!-- New connection card -->\n <div class=\"connection-card new-connection-card\" (click)=\"OpenWizard()\">\n <div class=\"new-card-content\">\n <div class=\"new-card-icon\">\n <i class=\"fa-solid fa-plus\"></i>\n </div>\n <span class=\"new-card-label\">Add Integration</span>\n </div>\n </div>\n </div>\n }\n }\n\n <!-- ======================================================================\n DETAIL VIEW (entity maps for selected integration)\n ====================================================================== -->\n @if (!WizardOpen && SelectedSummary) {\n <div class=\"detail-view\">\n\n <!-- ================================================================\n ENTITY MAP EDITOR (field mapping detail for a selected map)\n ================================================================ -->\n @if (EditorEntityMap) {\n <app-visual-field-editor\n [EntityMap]=\"EditorEntityMap\"\n [CompanyIntegrationID]=\"SelectedSummary!.Integration.ID\"\n [RunViewProvider]=\"RunViewToUse\"\n (Close)=\"CloseEntityMapEditor()\">\n </app-visual-field-editor>\n\n <!-- ================================================================\n ENTITY MAPS LIST (shown when no editor map is selected)\n ================================================================ -->\n } @else {\n <!-- Detail header -->\n <div class=\"detail-header\">\n <button class=\"detail-back-btn\" (click)=\"CloseDetailView()\" title=\"Back to Integrations\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n <div class=\"detail-header-info\">\n <div class=\"icon-circle\" [style.background-color]=\"GetIconBrandColor(SelectedSummary.Integration.Integration)\">\n <i [class]=\"GetIntegrationIcon(SelectedSummary.Integration.Integration)\" class=\"icon-large\"></i>\n </div>\n <div class=\"detail-header-text\">\n <h2 class=\"detail-title\">{{ SelectedSummary.Integration.Name }}</h2>\n <span class=\"detail-subtitle\">\n {{ SelectedSummary.Integration.Company }}\n <span class=\"meta-separator\">&middot;</span>\n {{ GetSourceTypeLabel(SelectedSummary) }}\n <span class=\"meta-separator\">&middot;</span>\n <span [class]=\"GetStatusBadgeClass(SelectedSummary)\">{{ GetStatusBadge(SelectedSummary) }}</span>\n </span>\n </div>\n </div>\n <div class=\"detail-header-actions\">\n <button class=\"detail-edit-btn\" (click)=\"OpenEditPanel(SelectedSummary)\" title=\"Configure\">\n <i class=\"fa-solid fa-pen-to-square\"></i>\n </button>\n @if (IsConnectionActive(SelectedSummary)) {\n <div class=\"sync-menu-wrapper\">\n <button mjButton variant=\"primary\"\n [disabled]=\"!!SyncingIntegrationID\"\n (click)=\"ToggleSyncMenu(SelectedSummary.Integration.ID, $event)\">\n @if (IsSyncing(SelectedSummary.Integration.ID)) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Syncing...\n } @else {\n <i class=\"fa-solid fa-arrows-rotate\"></i> Sync\n <i class=\"fa-solid fa-chevron-down sync-caret\"></i>\n }\n </button>\n @if (SyncMenuIntegrationID === SelectedSummary.Integration.ID) {\n <div class=\"sync-dropdown sync-dropdown-left\">\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Pull (External \u2192 MJ)</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, false, 'Pull', $event)\">\n <i class=\"fa-solid fa-arrow-down-to-line\"></i> Incremental Pull\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, true, 'Pull', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Pull\n </button>\n </div>\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Push (MJ \u2192 External)</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, false, 'Push', $event)\">\n <i class=\"fa-solid fa-arrow-up-from-line\"></i> Incremental Push\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, true, 'Push', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Push\n </button>\n </div>\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Bidirectional</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, false, 'Bidirectional', $event)\">\n <i class=\"fa-solid fa-arrows-rotate\"></i> Incremental Both\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, true, 'Bidirectional', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Both\n </button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Schedule section -->\n <div class=\"schedule-section\">\n <div class=\"schedule-section-header\">\n <div class=\"schedule-section-title\">\n <i class=\"fa-solid fa-calendar-check\"></i>\n <span>Sync Schedule</span>\n </div>\n </div>\n @if (ScheduledJobID) {\n <mj-scheduled-job-summary\n [ScheduledJobID]=\"ScheduledJobID\"\n (EditRequested)=\"OpenSchedulePanel()\">\n </mj-scheduled-job-summary>\n } @else {\n <div class=\"schedule-empty\">\n <span class=\"schedule-empty-text\">No sync schedule configured</span>\n <button class=\"schedule-create-btn\" (click)=\"OpenSchedulePanel()\">\n <i class=\"fa-solid fa-plus\"></i>\n Schedule Sync\n </button>\n </div>\n }\n </div>\n\n <!-- Schedule slide panel -->\n <mj-scheduled-job-slide-panel\n [IsOpen]=\"ShowScheduleSlidePanel\"\n [ScheduledJobID]=\"ScheduledJobID\"\n [JobTypeID]=\"IntegrationSyncJobTypeID\"\n [DefaultConfiguration]=\"ScheduleDefaultConfiguration\"\n [HideJobType]=\"true\"\n (Close)=\"CloseSchedulePanel()\"\n (Saved)=\"OnScheduleSaved()\"\n (Deleted)=\"OnScheduleDeleted()\">\n </mj-scheduled-job-slide-panel>\n\n <!-- Entity maps toolbar -->\n <div class=\"detail-toolbar\">\n <div class=\"detail-toolbar-left\">\n <span class=\"detail-map-count\">\n {{ DetailEntityMaps.length }} entity map{{ DetailEntityMaps.length !== 1 ? 's' : '' }}\n <span class=\"meta-separator\">&middot;</span>\n {{ DetailActiveMapCount }} active\n </span>\n </div>\n <div class=\"detail-toolbar-right\">\n <div class=\"detail-search\">\n <i class=\"fa-solid fa-filter\"></i>\n <input type=\"text\"\n placeholder=\"Filter entity maps...\"\n [value]=\"DetailSearchTerm\"\n (input)=\"OnDetailSearch($event)\" />\n </div>\n <button class=\"add-map-btn\" (click)=\"ToggleCreateTablesPanel()\" [class.active]=\"ShowCreateTablesPanel\"\n title=\"Select source objects and create entity tables\">\n <i class=\"fa-solid fa-table\"></i> Create Tables\n </button>\n <button class=\"add-map-btn\" (click)=\"ToggleAutoMapPanel()\" [class.active]=\"ShowAutoMapPanel\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Auto-Map Schema\n </button>\n <button class=\"add-map-btn\" (click)=\"ToggleAddMapPanel()\" [class.active]=\"ShowAddMapPanel\">\n <i class=\"fa-solid fa-plus\"></i> Add Map\n </button>\n </div>\n </div>\n\n <!-- Sync result banner -->\n @if (SyncResult) {\n <div class=\"sync-result-banner\" [class.sync-success]=\"SyncResult.Success\" [class.sync-failure]=\"!SyncResult.Success\">\n @if (SyncResult.Success) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <i class=\"fa-solid fa-circle-xmark\"></i>\n }\n <span>{{ SyncResult.Message || (SyncResult.Success ? 'Sync completed successfully' : 'Sync failed') }}</span>\n </div>\n }\n\n <!-- Auto-Map Schema panel -->\n @if (ShowAutoMapPanel) {\n <div class=\"add-map-panel\">\n <div class=\"auto-map-header\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n <span>Auto-map all entities in a schema to this integration with 1:1 field mappings</span>\n </div>\n <div class=\"add-map-row\">\n <div class=\"add-map-field\">\n <label class=\"add-map-label\">Target Schema</label>\n <select class=\"add-map-select\" [(ngModel)]=\"AutoMapSelectedSchema\">\n <option [ngValue]=\"''\" disabled>Select schema...</option>\n @for (schema of AutoMapSchemas; track schema) {\n <option [value]=\"schema\">{{ schema }}</option>\n }\n </select>\n </div>\n\n <div class=\"add-map-direction-col\">\n <label class=\"add-map-label\">Direction</label>\n <div class=\"add-map-direction-btns\">\n <button [class.active]=\"AutoMapDirection === 'Pull'\" (click)=\"AutoMapDirection = 'Pull'\" title=\"Pull from source\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n <button [class.active]=\"AutoMapDirection === 'Bidirectional'\" (click)=\"AutoMapDirection = 'Bidirectional'\" title=\"Bidirectional sync\">\n <i class=\"fa-solid fa-right-left\"></i>\n </button>\n <button [class.active]=\"AutoMapDirection === 'Push'\" (click)=\"AutoMapDirection = 'Push'\" title=\"Push to source\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n </div>\n </div>\n\n <div class=\"add-map-actions\">\n <button class=\"add-map-save-btn\"\n [disabled]=\"!CanAutoMap\"\n (click)=\"RunAutoMap()\">\n @if (IsAutoMapping) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Mapping...\n } @else {\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Auto-Map\n }\n </button>\n <button class=\"add-map-cancel-btn\" (click)=\"CloseAutoMapPanel()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n </div>\n\n @if (AutoMapResult) {\n <div class=\"auto-map-result\" [class.auto-map-success]=\"AutoMapResult.Errors.length === 0\"\n [class.auto-map-partial]=\"AutoMapResult.Errors.length > 0 && AutoMapResult.EntityMapsCreated > 0\"\n [class.auto-map-failure]=\"AutoMapResult.EntityMapsCreated === 0 && AutoMapResult.Errors.length > 0\">\n @if (AutoMapResult.EntityMapsCreated > 0) {\n <div class=\"auto-map-result-summary\">\n <i class=\"fa-solid fa-circle-check\"></i>\n Created {{ AutoMapResult.EntityMapsCreated }} entity map{{ AutoMapResult.EntityMapsCreated !== 1 ? 's' : '' }}\n with {{ AutoMapResult.FieldMapsCreated }} field map{{ AutoMapResult.FieldMapsCreated !== 1 ? 's' : '' }}\n </div>\n } @else if (AutoMapResult.Errors.length === 0) {\n <div class=\"auto-map-result-summary\">\n <i class=\"fa-solid fa-circle-info\"></i>\n All entities in this schema are already mapped.\n </div>\n }\n @if (AutoMapResult.Errors.length > 0) {\n <div class=\"auto-map-errors\">\n @for (err of AutoMapResult.Errors; track err) {\n <div class=\"auto-map-error\"><i class=\"fa-solid fa-triangle-exclamation\"></i> {{ err }}</div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Create Tables panel (select source objects \u2192 create entity tables) -->\n @if (ShowCreateTablesPanel) {\n <div class=\"add-map-panel\">\n <div class=\"auto-map-header\">\n <i class=\"fa-solid fa-table\"></i>\n <span>Select source objects to create as entity tables in your database</span>\n </div>\n\n <div class=\"add-map-row\">\n <div class=\"add-map-actions\">\n <button class=\"add-map-save-btn\"\n [disabled]=\"!CanCreateTables\"\n (click)=\"RunCreateTables()\">\n @if (IsCreatingTables) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Creating...\n } @else {\n <i class=\"fa-solid fa-table\"></i> Create {{ CreateTablesSelectedCount }} Table{{ CreateTablesSelectedCount !== 1 ? 's' : '' }}\n }\n </button>\n <button class=\"add-map-cancel-btn\" (click)=\"CloseCreateTablesPanel()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n </div>\n\n @if (IsLoadingCreateTablesObjects) {\n <mj-loading text=\"Loading source objects...\" size=\"small\"></mj-loading>\n } @else if (CreateTablesObjects.length === 0) {\n <div class=\"auto-map-result auto-map-success\">\n <i class=\"fa-solid fa-circle-info\"></i>\n No source objects available from this connector.\n </div>\n } @else {\n <div class=\"create-tables-filters\">\n <input type=\"text\"\n class=\"create-tables-search mj-input\"\n placeholder=\"Search by name or label...\"\n [(ngModel)]=\"CreateTablesSearch\" />\n </div>\n <div class=\"create-tables-list\">\n <div class=\"create-tables-select-all\">\n <label class=\"create-tables-checkbox\">\n <input type=\"checkbox\"\n [checked]=\"FilteredCreateTablesObjects.length > 0 && CreateTablesSelectedCount === FilteredCreateTablesObjects.length\"\n (change)=\"ToggleAllCreateTablesObjects($any($event.target).checked)\" />\n <span>Select All ({{ FilteredCreateTablesObjects.length }} of {{ CreateTablesObjects.length }})</span>\n </label>\n </div>\n @for (obj of FilteredCreateTablesObjects; track obj.Name) {\n <label class=\"create-tables-checkbox\">\n <input type=\"checkbox\" [(ngModel)]=\"obj.Selected\" />\n <span>{{ obj.Label }}</span>\n @if (obj.Label !== obj.Name) {\n <span class=\"create-tables-name-hint\">{{ obj.Name }}</span>\n }\n @if (obj.IsCustom) {\n <span class=\"create-tables-badge create-tables-badge-custom\">Custom</span>\n }\n @if (obj.AlreadyPersisted) {\n <span class=\"create-tables-badge create-tables-badge-registered\">Registered</span>\n }\n </label>\n }\n </div>\n }\n\n @if (CreateTablesResult) {\n <div class=\"auto-map-result\"\n [class.auto-map-success]=\"CreateTablesResult.Success\"\n [class.auto-map-failure]=\"!CreateTablesResult.Success\">\n @if (CreateTablesResult.Success) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <i class=\"fa-solid fa-circle-xmark\"></i>\n }\n <span>{{ CreateTablesResult.Message }}</span>\n </div>\n }\n </div>\n }\n\n <!-- Add Entity Map inline form -->\n @if (ShowAddMapPanel) {\n <div class=\"add-map-panel\">\n <div class=\"add-map-row\">\n <div class=\"add-map-field\">\n <label class=\"add-map-label\">Source Object</label>\n @if (IsLoadingSourceObjects) {\n <div class=\"add-map-loading\"><i class=\"fa-solid fa-spinner fa-spin\"></i> Loading...</div>\n } @else if (AvailableSourceObjects.length === 0) {\n <div class=\"add-map-hint\">No source objects found in metadata</div>\n } @else {\n <select class=\"add-map-select\" [(ngModel)]=\"AddMapSourceObjectName\">\n <option [ngValue]=\"''\" disabled>Select source object...</option>\n @for (obj of AvailableSourceObjects; track obj.Name) {\n <option [value]=\"obj.Name\">{{ obj.Label || obj.Name }}</option>\n }\n </select>\n }\n </div>\n\n <div class=\"add-map-direction-col\">\n <label class=\"add-map-label\">Direction</label>\n <div class=\"add-map-direction-btns\">\n <button [class.active]=\"AddMapDirection === 'Pull'\" (click)=\"AddMapDirection = 'Pull'\" title=\"Pull from source\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n <button [class.active]=\"AddMapDirection === 'Bidirectional'\" (click)=\"AddMapDirection = 'Bidirectional'\" title=\"Bidirectional sync\">\n <i class=\"fa-solid fa-right-left\"></i>\n </button>\n <button [class.active]=\"AddMapDirection === 'Push'\" (click)=\"AddMapDirection = 'Push'\" title=\"Push to source\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n </div>\n </div>\n\n <div class=\"add-map-field add-map-entity-field\">\n <label class=\"add-map-label\">MJ Entity</label>\n <div class=\"entity-picker-row\">\n <mj-tree-dropdown\n #entityTreeDropdown\n [BranchConfig]=\"EntityBranchConfig\"\n [LeafConfig]=\"EntityLeafConfig\"\n [Value]=\"AddMapEntityIDAsKey\"\n [SelectableTypes]=\"'leaf'\"\n [SelectionMode]=\"'single'\"\n [Placeholder]=\"'Search entities by schema...'\"\n [EnableSearch]=\"true\"\n (SelectionChange)=\"OnEntityTreeSelection($event)\">\n </mj-tree-dropdown>\n <button class=\"new-entity-btn\" (click)=\"OpenNewEntityDialog()\" title=\"Create new entity table\">\n <i class=\"fa-solid fa-plus\"></i> New\n </button>\n </div>\n </div>\n\n <div class=\"add-map-actions\">\n <button class=\"add-map-save-btn\"\n [disabled]=\"!CanSaveAddMap || IsSavingAddMap\"\n (click)=\"SaveAddMap()\">\n @if (IsSavingAddMap) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n <i class=\"fa-solid fa-check\"></i> Add\n }\n </button>\n <button class=\"add-map-cancel-btn\" (click)=\"CloseAddMapPanel()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n </div>\n </div>\n }\n\n <!-- Entity maps table -->\n @if (IsDetailLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading entity maps...\"></mj-loading>\n </div>\n } @else if (DetailEntityMaps.length === 0 && !ShowAddMapPanel) {\n <div class=\"detail-empty\">\n <i class=\"fa-solid fa-cube\"></i>\n <h3>No entity maps configured</h3>\n <p>Entity maps define how external objects sync to MJ entities.</p>\n <button class=\"add-map-btn add-map-btn-lg\" (click)=\"ToggleAddMapPanel()\">\n <i class=\"fa-solid fa-plus\"></i> Add Your First Entity Map\n </button>\n </div>\n } @else if (DetailEntityMaps.length > 0) {\n <!-- Table header -->\n <div class=\"detail-table-head\">\n <span class=\"dt-col-toggle\">Sync</span>\n <span class=\"dt-col-source\">External Object</span>\n <span class=\"dt-col-direction\"></span>\n <span class=\"dt-col-dest\">MJ Entity</span>\n <span class=\"dt-col-meta\">Config</span>\n </div>\n\n <!-- Table body -->\n <div class=\"detail-table-body\">\n @for (em of DetailFilteredMaps; track em.ID) {\n <div class=\"detail-map-row\" [class.sync-disabled]=\"!em.SyncEnabled\" (click)=\"OnEntityMapClick(em)\">\n <span class=\"dt-col-toggle\" (click)=\"$event.stopPropagation()\">\n <label class=\"toggle-switch\" [title]=\"em.SyncEnabled ? 'Sync enabled' : 'Sync disabled'\">\n <input type=\"checkbox\"\n [checked]=\"em.SyncEnabled\"\n (change)=\"OnToggleMapEnabled(em, $event)\" />\n <span class=\"toggle-slider\"></span>\n </label>\n </span>\n <span class=\"dt-col-source\" [title]=\"em.ExternalObjectName\">\n {{ em.ExternalObjectLabel ?? em.ExternalObjectName }}\n </span>\n <span class=\"dt-col-direction\" (click)=\"$event.stopPropagation()\">\n <button class=\"direction-toggle\" [class]=\"DirectionBadgeClass(em.SyncDirection)\"\n (click)=\"CycleSyncDirection(em)\"\n [title]=\"'Click to change sync direction (currently: ' + em.SyncDirection + ')'\">\n {{ DirectionText(em.SyncDirection) }}\n </button>\n </span>\n <span class=\"dt-col-dest\" [title]=\"em.Entity\">\n {{ em.Entity }}\n </span>\n <span class=\"dt-col-meta\">\n @if (em.MatchStrategy) {\n <span class=\"detail-config-badge\" title=\"Match strategy configured\">\n <i class=\"fa-solid fa-link\"></i>\n </span>\n }\n <span class=\"detail-config-badge\" [title]=\"'Conflict: ' + em.ConflictResolution\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n </span>\n <span class=\"map-edit-hint\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </span>\n </span>\n </div>\n } @empty {\n <div class=\"detail-table-empty\">\n No entity maps match your filter.\n </div>\n }\n </div>\n }\n }\n\n </div>\n }\n\n <!-- ======================================================================\n WIZARD (inline, replaces card grid when open)\n ====================================================================== -->\n @if (WizardOpen) {\n <div class=\"wizard-inline\">\n <!-- Wizard header -->\n <div class=\"wizard-header\">\n <button class=\"wizard-back-btn\" (click)=\"CloseWizard()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n Back to Integrations\n </button>\n <h2 class=\"wizard-title\">New Integration</h2>\n </div>\n\n <!-- Step indicator -->\n <div class=\"step-indicator\">\n @for (step of WizardSteps; track step.Number) {\n <div class=\"step-item\" [class.step-active]=\"IsStepActive(step.Number)\" [class.step-completed]=\"IsStepCompleted(step.Number)\">\n <div class=\"step-circle\">\n @if (IsStepCompleted(step.Number)) {\n <i class=\"fa-solid fa-check\"></i>\n } @else {\n {{ step.Number }}\n }\n </div>\n <span class=\"step-label\">{{ step.Label }}</span>\n </div>\n @if (step.Number < WizardSteps.length) {\n <div class=\"step-line\" [class.step-line-active]=\"IsStepCompleted(step.Number)\"></div>\n }\n }\n </div>\n\n <!-- Step content -->\n <div class=\"wizard-body\">\n\n <!-- Step 1: Choose Integration -->\n @if (WizardStep === 1) {\n <div class=\"step-content\">\n <h3 class=\"step-title\">What system do you want to connect?</h3>\n <div class=\"search-bar\">\n <i class=\"fa-solid fa-search search-icon\"></i>\n <input type=\"text\"\n class=\"search-input\"\n placeholder=\"Search integrations...\"\n [(ngModel)]=\"SearchQuery\" />\n </div>\n\n @if (FilteredIntegrations.length === 0 && AvailableIntegrations.length === 0) {\n <div class=\"no-integrations\">\n <i class=\"fa-solid fa-puzzle-piece\"></i>\n <p>No integrations configured</p>\n <span class=\"no-integrations-hint\">Configure integration definitions in the admin area first.</span>\n </div>\n } @else if (FilteredIntegrations.length === 0) {\n <div class=\"no-integrations\">\n <i class=\"fa-solid fa-search\"></i>\n <p>No matching integrations</p>\n </div>\n } @else {\n <div class=\"integration-picker-grid\">\n @for (def of FilteredIntegrations; track def.ID) {\n <div class=\"integration-picker-card\"\n [class.picker-selected]=\"IsSelectedIntegration(def)\"\n (click)=\"SelectIntegration(def)\">\n <div class=\"picker-icon-circle\" [style.background-color]=\"GetIconBrandColor(def.Name)\">\n <i [class]=\"GetIntegrationIcon(def.Name, def.Get('Icon'))\"></i>\n </div>\n <div class=\"picker-name\">{{ def.Name }}</div>\n @if (def.Description) {\n <div class=\"picker-description\">{{ def.Description }}</div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Step 2: Configure Connection -->\n @if (WizardStep === 2) {\n <div class=\"step-content\">\n <h3 class=\"step-title\">Set up your connection</h3>\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"connectionName\">Connection Name</label>\n <input id=\"connectionName\"\n type=\"text\"\n class=\"form-input\"\n placeholder=\"e.g. Production HubSpot\"\n [(ngModel)]=\"ConnectionName\" />\n </div>\n\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"companySelect\">Company</label>\n @if (NeedsCompanyPicker) {\n <select id=\"companySelect\" class=\"form-input\" [(ngModel)]=\"SelectedCompanyID\">\n <option [ngValue]=\"null\" disabled>Select a company...</option>\n @for (company of Companies; track company.ID) {\n <option [value]=\"company.ID\">{{ company.Name }}</option>\n }\n </select>\n } @else if (Companies.length === 1) {\n <input type=\"text\" class=\"form-input\" [value]=\"Companies[0].Name\" disabled />\n } @else {\n <div class=\"form-hint\">No companies available. Create one in the admin area.</div>\n }\n </div>\n\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"connectionDescription\">Description <span class=\"optional-label\">(optional)</span></label>\n <textarea id=\"connectionDescription\"\n class=\"form-input form-textarea\"\n placeholder=\"Notes about this connection...\"\n [(ngModel)]=\"ConnectionDescription\"\n rows=\"3\"></textarea>\n </div>\n\n <!-- Credential section -->\n <div class=\"form-group\">\n <label class=\"form-label\">Credential</label>\n @if (SelectedCredential) {\n <div class=\"credential-selected\">\n <div class=\"credential-info\">\n <i class=\"fa-solid fa-key\"></i>\n <span>{{ SelectedCredential.Name }}</span>\n </div>\n <button class=\"credential-clear\" (click)=\"ClearCredential()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n } @else {\n <div class=\"credential-actions\">\n <button mjButton variant=\"outline\" (click)=\"ShowExistingCredentials()\">\n <i class=\"fa-solid fa-key\"></i>\n Choose Existing Credential\n </button>\n <button mjButton variant=\"outline\" (click)=\"OpenCredentialDialog()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create New Credential\n </button>\n </div>\n }\n\n @if (IsLoadingCredentials) {\n <div class=\"credential-loading\">\n <mj-loading text=\"Loading credentials...\" size=\"small\"></mj-loading>\n </div>\n }\n\n @if (!IsLoadingCredentials && ExistingCredentials.length > 0 && !SelectedCredential) {\n <div class=\"credential-list\">\n @for (cred of ExistingCredentials; track cred.ID) {\n <div class=\"credential-list-item\" (click)=\"SelectExistingCredential(cred)\">\n <i class=\"fa-solid fa-key\"></i>\n <span>{{ cred.Name }}</span>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Step 3: Test Connection -->\n @if (WizardStep === 3) {\n <div class=\"step-content step-content-centered\">\n <h3 class=\"step-title\">Let's verify everything works</h3>\n\n @if (!TestResult && !IsTesting) {\n <div class=\"test-prompt\">\n <button mjButton\n variant=\"primary\"\n size=\"lg\"\n (click)=\"TestNewConnection()\">\n <i class=\"fa-solid fa-vial\"></i>\n Test Connection\n </button>\n <p class=\"test-hint\">We'll verify we can reach your system and authenticate.</p>\n </div>\n }\n\n @if (IsTesting) {\n <div class=\"test-running\">\n <div class=\"test-spinner\">\n <i class=\"fa-solid fa-spinner fa-spin fa-3x\"></i>\n </div>\n <p>Testing connection...</p>\n </div>\n }\n\n @if (TestResult) {\n <div class=\"test-result\" [class.test-result-success]=\"TestResult.Success\" [class.test-result-failure]=\"!TestResult.Success\">\n <div class=\"test-result-icon\">\n @if (TestResult.Success) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <i class=\"fa-solid fa-circle-xmark\"></i>\n }\n </div>\n <div class=\"test-result-message\">{{ TestResult.Message }}</div>\n @if (TestResult.Success && TestResult.ServerVersion) {\n <div class=\"test-result-detail\">\n Server version: {{ TestResult.ServerVersion }}\n </div>\n }\n @if (!TestResult.Success) {\n <button mjButton variant=\"outline\" (click)=\"TestNewConnection()\" class=\"test-retry-btn\">\n <i class=\"fa-solid fa-rotate-right\"></i>\n Retry\n </button>\n }\n </div>\n }\n </div>\n }\n\n </div>\n\n <!-- Wizard footer -->\n <div class=\"wizard-footer\">\n <div class=\"footer-left\"></div>\n <div class=\"footer-right\">\n @if (WizardStep > 1) {\n <button mjButton variant=\"outline\" (click)=\"PreviousStep()\">\n Back\n </button>\n }\n <button mjButton\n variant=\"primary\"\n [disabled]=\"IsNextDisabled || IsSaving\"\n (click)=\"FinishWizard()\">\n @if (IsSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Saving...\n } @else {\n {{ NextButtonLabel }}\n }\n </button>\n </div>\n </div>\n </div>\n }\n\n</div>\n\n<!-- Edit panel (slide-in) -->\n<div class=\"edit-panel-backdrop\"\n [class.open]=\"EditPanelOpen\"\n (click)=\"CloseEditPanel()\"></div>\n<div class=\"edit-panel\" [class.open]=\"EditPanelOpen\">\n @if (EditingSummary) {\n <!-- Header -->\n <div class=\"edit-panel-header\">\n <div class=\"edit-panel-title\">\n <div class=\"edit-icon-circle\"\n [style.background-color]=\"GetIconBrandColor(EditingSummary.Integration.Integration)\">\n <i [class]=\"GetIntegrationIcon(EditingSummary.Integration.Integration, EditingSummary.Icon)\"></i>\n </div>\n <span>Configure Integration</span>\n </div>\n <button class=\"edit-close-btn\" (click)=\"CloseEditPanel()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n @if (IsEditLoading) {\n <div class=\"edit-panel-loading\">\n <mj-loading text=\"Loading...\" size=\"small\"></mj-loading>\n </div>\n } @else {\n <!-- Edit form -->\n <div class=\"edit-panel-body\">\n <div class=\"edit-form-group\">\n <label class=\"edit-form-label\">Connection Name</label>\n <input type=\"text\"\n class=\"edit-form-input\"\n [(ngModel)]=\"EditName\"\n placeholder=\"Connection name...\" />\n </div>\n\n <div class=\"edit-form-group\">\n <label class=\"edit-form-label\">Status</label>\n <div class=\"edit-toggle-row\">\n <label class=\"toggle-switch\">\n <input type=\"checkbox\" [(ngModel)]=\"EditIsActive\" />\n <span class=\"toggle-slider\"></span>\n </label>\n <span class=\"edit-toggle-label\" [class.active]=\"EditIsActive\">\n {{ EditIsActive ? 'Active' : 'Inactive' }}\n </span>\n </div>\n </div>\n\n <div class=\"edit-form-group\">\n <label class=\"edit-form-label\">Credential</label>\n @if (EditCredential) {\n <div class=\"edit-credential-selected\">\n <div class=\"edit-credential-info\">\n <i class=\"fa-solid fa-key\"></i>\n <span>{{ EditCredential.Name }}</span>\n </div>\n <button class=\"edit-credential-clear\" (click)=\"ClearEditCredential()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n } @else {\n <div class=\"edit-credential-actions\">\n <button mjButton variant=\"outline\" size=\"sm\" (click)=\"OpenEditCredentialDialog()\">\n <i class=\"fa-solid fa-plus\"></i> New Credential\n </button>\n </div>\n @if (EditCredentials.length > 0) {\n <div class=\"edit-credential-list\">\n @for (cred of EditCredentials; track cred.ID) {\n <div class=\"edit-credential-item\" (click)=\"SelectEditCredential(cred)\">\n <i class=\"fa-solid fa-key\"></i>\n <span>{{ cred.Name }}</span>\n </div>\n }\n </div>\n }\n }\n </div>\n\n <div class=\"edit-form-group\">\n <label class=\"edit-form-label\">Integration</label>\n <div class=\"edit-readonly-field\">\n {{ EditingSummary.Integration.Integration }}\n </div>\n </div>\n\n <div class=\"edit-form-group\">\n <label class=\"edit-form-label\">Company</label>\n <div class=\"edit-readonly-field\">\n {{ EditingSummary.Integration.Company }}\n </div>\n </div>\n </div>\n\n <!-- Footer -->\n <div class=\"edit-panel-footer\">\n <button mjButton\n variant=\"primary\"\n [disabled]=\"IsEditSaving || !EditName.trim()\"\n (click)=\"SaveEditChanges()\">\n @if (IsEditSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Saving...\n } @else {\n Save Changes\n }\n </button>\n <button mjButton variant=\"outline\" (click)=\"CloseEditPanel()\">\n Cancel\n </button>\n </div>\n }\n }\n</div>\n\n<!-- Credential dialog (shared between wizard and edit panel) -->\n@if (ShowCredentialDialog) {\n <mj-credential-dialog\n [Visible]=\"true\"\n [PreselectedTypeId]=\"PreselectedCredentialTypeId\"\n (close)=\"EditPanelOpen ? OnEditCredentialDialogClose($event) : OnCredentialDialogClose($event)\">\n </mj-credential-dialog>\n}\n\n<!-- New Entity dialog -->\n@if (ShowCreateEntity) {\n <div class=\"new-entity-backdrop\" (click)=\"CloseNewEntityDialog()\"></div>\n <div class=\"new-entity-dialog\">\n <div class=\"new-entity-dialog-header\">\n <h3>Create New Entity Table</h3>\n <button class=\"new-entity-dialog-close\" (click)=\"CloseNewEntityDialog()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n <div class=\"new-entity-dialog-body\">\n <p class=\"new-entity-dialog-desc\">\n Generate a SQL migration to create a new database table for this integration's data.\n After running the migration and CodeGen, the new entity will appear in the entity picker.\n </p>\n\n <div class=\"new-entity-dialog-form\">\n <div class=\"new-entity-dialog-row\">\n <div class=\"new-entity-dialog-field\">\n <label class=\"new-entity-dialog-label\">Source Object</label>\n <div class=\"new-entity-dialog-value\">\n @if (AddMapSourceObjectName) {\n {{ AddMapSourceObjectName }}\n } @else {\n <span class=\"new-entity-dialog-hint\">Select a source object in the Add Map form first</span>\n }\n </div>\n </div>\n </div>\n <div class=\"new-entity-dialog-row\">\n <div class=\"new-entity-dialog-field\">\n <label class=\"new-entity-dialog-label\">Schema</label>\n <input type=\"text\"\n class=\"new-entity-dialog-input\"\n placeholder=\"e.g. hubspot\"\n [(ngModel)]=\"NewEntitySchema\" />\n </div>\n <span class=\"new-entity-dialog-dot\">.</span>\n <div class=\"new-entity-dialog-field new-entity-dialog-field-wide\">\n <label class=\"new-entity-dialog-label\">Table Name</label>\n <input type=\"text\"\n class=\"new-entity-dialog-input\"\n placeholder=\"e.g. Contact\"\n [(ngModel)]=\"NewEntityTable\" />\n </div>\n </div>\n </div>\n\n @if (DDLPreviewWarnings.length > 0) {\n <div class=\"ddl-warnings\">\n @for (warn of DDLPreviewWarnings; track warn) {\n <div class=\"ddl-warning\"><i class=\"fa-solid fa-triangle-exclamation\"></i> {{ warn }}</div>\n }\n </div>\n }\n\n @if (DDLPreview) {\n <div class=\"ddl-preview-block\">\n <div class=\"ddl-preview-header\">\n <span>SQL Preview</span>\n <button class=\"ddl-copy-btn\" (click)=\"CopyDDLToClipboard()\" title=\"Copy to clipboard\">\n @if (DDLCopied) {\n <i class=\"fa-solid fa-check\"></i> Copied\n } @else {\n <i class=\"fa-regular fa-copy\"></i> Copy\n }\n </button>\n </div>\n <pre class=\"ddl-preview-code\">{{ DDLPreview }}</pre>\n </div>\n }\n\n @if (DDLPreview) {\n <div class=\"new-entity-next-steps\">\n <h4><i class=\"fa-solid fa-list-check\"></i> Next Steps</h4>\n <ol>\n <li>Copy the SQL above and save it as a migration file</li>\n <li>Run the migration against your database</li>\n <li>Run CodeGen to register the new entity in MemberJunction</li>\n <li>Refresh the page &mdash; the new entity will appear in the entity picker</li>\n </ol>\n </div>\n }\n </div>\n <div class=\"new-entity-dialog-footer\">\n <button class=\"new-entity-preview-btn\"\n [disabled]=\"!CanGenerateSQL || IsGeneratingDDL\"\n (click)=\"PreviewDDL()\">\n @if (IsGeneratingDDL) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Generating...\n } @else {\n <i class=\"fa-solid fa-code\"></i> Generate SQL\n }\n </button>\n <button class=\"new-entity-dialog-done-btn\" (click)=\"CloseNewEntityDialog()\">\n Done\n </button>\n </div>\n </div>\n}\n", styles: ["/* ---------------------------------------------------------------------------\n Host & Container \u2014 flex chain for scrollable detail view\n --------------------------------------------------------------------------- */\n\n:host {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.connections-container {\n padding: 24px;\n max-width: 1400px;\n width: 100%;\n margin: 0 auto;\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow-y: auto;\n box-sizing: border-box;\n}\n\n/* When detail or editor view is active, prevent container scrolling\n so the inner .detail-table-body handles its own scroll */\n.connections-container.detail-active,\n.connections-container.editor-active {\n overflow: hidden;\n}\n\n.connections-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 24px;\n}\n\n.header-left {\n display: flex;\n align-items: baseline;\n gap: 12px;\n}\n\n.header-title {\n font-size: 24px;\n font-weight: 700;\n margin: 0;\n color: var(--mj-text-primary);\n}\n\n.header-count {\n font-size: 14px;\n color: var(--mj-text-disabled);\n}\n\n.add-connection-btn i {\n margin-right: 6px;\n}\n\n/* ---------------------------------------------------------------------------\n Loading & Empty States\n --------------------------------------------------------------------------- */\n\n.loading-container {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 300px;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 400px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.empty-icon {\n font-size: 48px;\n color: var(--mj-text-disabled);\n margin-bottom: 16px;\n}\n\n.empty-state h3 {\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin: 0 0 8px;\n}\n\n.empty-state p {\n font-size: 14px;\n margin: 0 0 24px;\n}\n\n/* ---------------------------------------------------------------------------\n Card Grid\n --------------------------------------------------------------------------- */\n\n.card-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 20px;\n}\n\n/* ---------------------------------------------------------------------------\n Connection Card\n --------------------------------------------------------------------------- */\n\n.connection-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);\n transition: box-shadow 0.2s ease, transform 0.2s ease;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n}\n\n.connection-card:hover {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n transform: translateY(-2px);\n}\n\n/* Card Header */\n.card-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 16px 0;\n}\n\n.icon-circle {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n flex-shrink: 0;\n}\n\n.icon-large {\n font-size: 22px;\n}\n\n/* Status Badge */\n.status-badge {\n font-size: 12px;\n font-weight: 600;\n padding: 4px 10px;\n border-radius: 20px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-badge-connected {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.status-badge-error {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.status-badge-inactive {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-muted);\n}\n\n.status-badge-syncing {\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n/* Card Body */\n.card-body {\n padding: 12px 16px;\n flex: 1;\n}\n\n.card-name {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin-bottom: 2px;\n}\n\n.card-company {\n font-size: 14px;\n color: var(--mj-text-disabled);\n margin-bottom: 10px;\n}\n\n.card-meta {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 6px;\n}\n\n.meta-separator {\n margin: 0 6px;\n}\n\n.meta-label {\n font-weight: 500;\n}\n\n.card-sync-info {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n}\n\n.card-sync-info i {\n margin-right: 4px;\n color: var(--mj-text-disabled);\n}\n\n/* Card inline test result */\n.card-test-result {\n font-size: 12px;\n padding: 6px 10px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 8px;\n}\n\n.card-test-result.test-success {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.card-test-result.test-failure {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.card-test-result span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Card Footer */\n.card-footer {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.card-footer button {\n font-size: 13px;\n}\n\n/* Sync dropdown menu */\n.sync-menu-wrapper {\n position: relative;\n display: inline-flex;\n}\n\n.sync-caret {\n font-size: 10px;\n margin-left: 4px;\n opacity: 0.8;\n}\n\n.sync-dropdown {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n z-index: 1000;\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n min-width: 220px;\n overflow: hidden;\n}\n\n.sync-dropdown-left {\n left: auto;\n right: 0;\n}\n\n.sync-dropdown-group {\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.sync-dropdown-group:last-child {\n border-bottom: none;\n}\n\n.sync-dropdown-label {\n display: block;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--mj-text-muted);\n padding: 0 12px 4px;\n}\n\n.sync-dropdown-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 7px 12px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-primary);\n text-align: left;\n transition: background 0.12s;\n}\n\n.sync-dropdown-item:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.sync-dropdown-item i {\n width: 16px;\n text-align: center;\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n}\n\n/* Card Delete Button */\n.card-delete-btn {\n margin-left: auto;\n background: none;\n border: 1px solid transparent;\n cursor: pointer;\n padding: 4px 8px;\n border-radius: 6px;\n color: var(--mj-text-disabled);\n font-size: 14px;\n transition: all 0.15s;\n}\n\n.card-delete-btn:hover {\n background: var(--mj-status-error-bg);\n border-color: var(--mj-status-error-border);\n color: var(--mj-status-error);\n}\n\n.menu-trigger:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.card-menu-dropdown {\n position: absolute;\n right: 0;\n top: 100%;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);\n min-width: 160px;\n z-index: 50;\n padding: 4px;\n}\n\n.menu-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 8px 12px;\n border: none;\n background: none;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-secondary);\n border-radius: 6px;\n transition: background 0.15s;\n text-align: left;\n}\n\n.menu-item:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.menu-item i {\n width: 16px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.menu-item-danger {\n color: var(--mj-status-error);\n}\n\n.menu-item-danger i {\n color: var(--mj-status-error);\n}\n\n.menu-item-danger:hover {\n background: var(--mj-status-error-bg);\n}\n\n/* ---------------------------------------------------------------------------\n New Connection Card\n --------------------------------------------------------------------------- */\n\n.new-connection-card {\n border: 2px dashed var(--mj-border-strong);\n background: var(--mj-bg-page);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 200px;\n transition: background 0.2s, border-color 0.2s;\n}\n\n.new-connection-card:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-brand-primary);\n box-shadow: none;\n transform: none;\n}\n\n.new-card-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n}\n\n.new-card-icon {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: var(--mj-bg-surface-active);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 24px;\n color: var(--mj-text-muted);\n transition: background 0.2s, color 0.2s;\n}\n\n.new-connection-card:hover .new-card-icon {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.new-card-label {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-muted);\n}\n\n.new-connection-card:hover .new-card-label {\n color: var(--mj-brand-primary);\n}\n\n/* ---------------------------------------------------------------------------\n Wizard (inline, replaces card grid)\n --------------------------------------------------------------------------- */\n\n.wizard-inline {\n display: flex;\n flex-direction: column;\n height: 100%;\n max-width: 720px;\n margin: 0 auto;\n}\n\n/* Wizard Header */\n.wizard-header {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 0 0 20px;\n}\n\n.wizard-back-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n padding: 6px 10px;\n border-radius: 6px;\n transition: background 0.15s, color 0.15s;\n}\n\n.wizard-back-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.wizard-title {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n}\n\n/* ---------------------------------------------------------------------------\n Step Indicator\n --------------------------------------------------------------------------- */\n\n.step-indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px 32px;\n gap: 0;\n}\n\n.step-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n position: relative;\n}\n\n.step-circle {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n font-weight: 600;\n background: var(--mj-bg-surface-active);\n color: var(--mj-text-disabled);\n border: 2px solid var(--mj-border-default);\n transition: all 0.2s;\n}\n\n.step-active .step-circle {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n\n.step-completed .step-circle {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n border-color: var(--mj-status-success);\n}\n\n.step-label {\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.step-active .step-label {\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.step-completed .step-label {\n color: var(--mj-status-success);\n}\n\n.step-line {\n width: 48px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 8px;\n margin-bottom: 20px;\n transition: background 0.2s;\n}\n\n.step-line-active {\n background: var(--mj-status-success);\n}\n\n/* ---------------------------------------------------------------------------\n Wizard Body\n --------------------------------------------------------------------------- */\n\n.wizard-body {\n flex: 1;\n overflow-y: auto;\n padding: 0 24px 24px;\n}\n\n.step-content {\n min-height: 300px;\n}\n\n.step-content-centered {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n}\n\n.step-title {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 20px;\n}\n\n.step-content-centered .step-title {\n margin-bottom: 32px;\n}\n\n/* Search bar */\n.search-bar {\n position: relative;\n margin-bottom: 20px;\n}\n\n.search-icon {\n position: absolute;\n left: 14px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n.search-input {\n width: 100%;\n padding: 10px 14px 10px 40px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n}\n\n.search-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.search-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n/* No integrations */\n.no-integrations {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n color: var(--mj-text-disabled);\n text-align: center;\n}\n\n.no-integrations i {\n font-size: 36px;\n margin-bottom: 12px;\n}\n\n.no-integrations p {\n font-size: 16px;\n font-weight: 500;\n color: var(--mj-text-muted);\n margin: 0 0 4px;\n}\n\n.no-integrations-hint {\n font-size: 13px;\n}\n\n/* Integration picker grid */\n.integration-picker-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n}\n\n.integration-picker-card {\n border: 2px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 16px;\n cursor: pointer;\n text-align: center;\n transition: border-color 0.2s, background 0.15s;\n}\n\n.integration-picker-card:hover {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-page);\n}\n\n.integration-picker-card.picker-selected {\n border-color: var(--mj-brand-primary);\n background: var(--mj-status-info-bg);\n}\n\n.picker-icon-circle {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n margin: 0 auto 10px;\n font-size: 18px;\n}\n\n.picker-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n}\n\n.picker-description {\n font-size: 12px;\n color: var(--mj-text-disabled);\n line-height: 1.3;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n/* ---------------------------------------------------------------------------\n Form Controls (Step 2)\n --------------------------------------------------------------------------- */\n\n.form-group {\n margin-bottom: 20px;\n}\n\n.form-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.optional-label {\n font-weight: 400;\n color: var(--mj-text-disabled);\n}\n\n.form-input {\n width: 100%;\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n}\n\n.form-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.form-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.form-input:disabled {\n background: var(--mj-bg-page);\n color: var(--mj-text-muted);\n}\n\n.form-textarea {\n resize: vertical;\n min-height: 72px;\n}\n\n.form-hint {\n font-size: 13px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n}\n\n/* Credential section */\n.credential-selected {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n border-radius: 8px;\n}\n\n.credential-info {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-status-success-text);\n font-size: 14px;\n font-weight: 500;\n}\n\n.credential-info i {\n color: var(--mj-status-success);\n}\n\n.credential-clear {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--mj-text-disabled);\n font-size: 14px;\n padding: 4px;\n border-radius: 4px;\n transition: color 0.15s;\n}\n\n.credential-clear:hover {\n color: var(--mj-status-error);\n}\n\n.credential-actions {\n display: flex;\n gap: 8px;\n}\n\n.credential-actions button {\n font-size: 13px;\n}\n\n.credential-loading {\n padding: 16px 0;\n}\n\n.credential-list {\n margin-top: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.credential-list-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n cursor: pointer;\n font-size: 14px;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n}\n\n.credential-list-item:last-child {\n border-bottom: none;\n}\n\n.credential-list-item:hover {\n background: var(--mj-bg-page);\n}\n\n.credential-list-item i {\n color: var(--mj-text-disabled);\n}\n\n/* ---------------------------------------------------------------------------\n Test Connection (Step 3)\n --------------------------------------------------------------------------- */\n\n.test-prompt {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.test-hint {\n font-size: 14px;\n color: var(--mj-text-disabled);\n margin: 0;\n}\n\n.test-running {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n color: var(--mj-brand-primary);\n}\n\n.test-spinner {\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.test-running p {\n font-size: 15px;\n font-weight: 500;\n margin: 0;\n}\n\n/* Test result */\n.test-result {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n padding: 24px;\n border-radius: 12px;\n max-width: 400px;\n}\n\n.test-result-success {\n background: var(--mj-status-success-bg);\n}\n\n.test-result-failure {\n background: var(--mj-status-error-bg);\n}\n\n.test-result-icon {\n font-size: 48px;\n animation: scaleIn 0.3s ease-out;\n}\n\n.test-result-success .test-result-icon {\n color: var(--mj-status-success);\n}\n\n.test-result-failure .test-result-icon {\n color: var(--mj-status-error);\n}\n\n@keyframes scaleIn {\n from {\n transform: scale(0.5);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n.test-result-message {\n font-size: 15px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n text-align: center;\n}\n\n.test-result-detail {\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.test-retry-btn {\n margin-top: 4px;\n}\n\n/* Toggle switch */\n.toggle-switch {\n position: relative;\n display: inline-block;\n width: 44px;\n height: 24px;\n flex-shrink: 0;\n}\n\n.toggle-switch input {\n opacity: 0;\n width: 0;\n height: 0;\n}\n\n.toggle-slider {\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-border-strong);\n border-radius: 24px;\n transition: background 0.2s;\n}\n\n.toggle-slider::before {\n content: '';\n position: absolute;\n height: 18px;\n width: 18px;\n left: 3px;\n bottom: 3px;\n background: var(--mj-bg-surface);\n border-radius: 50%;\n transition: transform 0.2s;\n}\n\n.toggle-switch input:checked + .toggle-slider {\n background: var(--mj-brand-primary);\n}\n\n.toggle-switch input:checked + .toggle-slider::before {\n transform: translateX(20px);\n}\n\n/* ---------------------------------------------------------------------------\n Wizard Footer\n --------------------------------------------------------------------------- */\n\n.wizard-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 24px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.footer-left {\n display: flex;\n align-items: center;\n}\n\n.footer-right {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n/* ---------------------------------------------------------------------------\n Responsive\n --------------------------------------------------------------------------- */\n\n@media (max-width: 768px) {\n .connections-container {\n padding: 16px;\n }\n\n .card-grid {\n grid-template-columns: 1fr;\n }\n\n .integration-picker-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .step-indicator {\n padding: 16px;\n overflow-x: auto;\n }\n\n .step-line {\n width: 24px;\n }\n\n .credential-actions {\n flex-direction: column;\n }\n}\n\n@media (max-width: 480px) {\n .integration-picker-grid {\n grid-template-columns: 1fr;\n }\n\n .card-footer {\n flex-wrap: wrap;\n }\n}\n\n/* ---------------------------------------------------------------------------\n Delete confirmation overlay\n --------------------------------------------------------------------------- */\n\n.delete-confirm-overlay {\n position: absolute;\n inset: 0;\n background: rgba(255, 255, 255, 0.95);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 5;\n border-radius: 12px;\n animation: fadeIn 150ms ease;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.delete-confirm-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 10px;\n padding: 20px;\n text-align: center;\n}\n\n.delete-warn-icon {\n font-size: 28px;\n color: var(--mj-status-error);\n}\n\n.delete-confirm-text {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n max-width: 220px;\n}\n\n.delete-confirm-actions {\n display: flex;\n gap: 8px;\n margin-top: 4px;\n}\n\n/* ---------------------------------------------------------------------------\n Edit panel (slide-in)\n --------------------------------------------------------------------------- */\n\n.edit-panel-backdrop {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.1);\n z-index: 99;\n opacity: 0;\n pointer-events: none;\n transition: opacity 300ms ease;\n}\n\n.edit-panel-backdrop.open {\n opacity: 1;\n pointer-events: auto;\n}\n\n.edit-panel {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n width: 400px;\n max-width: 100%;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n box-shadow: -8px 0 24px rgba(0, 0, 0, 0.08);\n z-index: 100;\n transform: translateX(100%);\n transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.edit-panel.open {\n transform: translateX(0);\n}\n\n.edit-panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.edit-panel-title {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.edit-icon-circle {\n width: 32px;\n height: 32px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 14px;\n}\n\n.edit-close-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-disabled);\n cursor: pointer;\n font-size: 14px;\n transition: all 150ms ease;\n}\n\n.edit-close-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.edit-panel-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n}\n\n.edit-panel-body {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.edit-form-group {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.edit-form-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.edit-form-input {\n height: 36px;\n padding: 0 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n transition: border-color 150ms ease;\n}\n\n.edit-form-input:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.edit-readonly-field {\n padding: 8px 12px;\n background: var(--mj-bg-page);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.edit-toggle-row {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.edit-toggle-label {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n}\n\n.edit-toggle-label.active {\n color: var(--mj-status-success);\n}\n\n.edit-credential-selected {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-page);\n}\n\n.edit-credential-info {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.edit-credential-info i {\n color: var(--mj-brand-primary);\n}\n\n.edit-credential-clear {\n width: 24px;\n height: 24px;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--mj-text-disabled);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n transition: all 150ms ease;\n}\n\n.edit-credential-clear:hover {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.edit-credential-actions {\n display: flex;\n gap: 8px;\n}\n\n.edit-credential-list {\n display: flex;\n flex-direction: column;\n gap: 2px;\n margin-top: 6px;\n max-height: 180px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n}\n\n.edit-credential-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: background 150ms ease;\n}\n\n.edit-credential-item:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.edit-credential-item i {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.edit-panel-footer {\n display: flex;\n gap: 8px;\n padding: 16px 20px;\n border-top: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n/* ---------------------------------------------------------------------------\n Card clickable area\n --------------------------------------------------------------------------- */\n\n.card-clickable {\n cursor: pointer;\n}\n\n/* ---------------------------------------------------------------------------\n Detail View (entity maps for a selected integration)\n --------------------------------------------------------------------------- */\n\n.detail-view {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.detail-header {\n display: flex;\n align-items: center;\n gap: 16px;\n padding-bottom: 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.detail-header-info {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.detail-header-text {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.detail-title {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.detail-subtitle {\n font-size: 13px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.detail-header-actions {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n/* Schedule section */\n.schedule-section {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 16px 20px;\n margin-bottom: 16px;\n}\n\n.schedule-section-header {\n margin-bottom: 12px;\n}\n\n.schedule-section-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.8rem;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.schedule-section-title i {\n color: var(--mj-brand-primary);\n}\n\n.schedule-empty {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 0;\n}\n\n.schedule-empty-text {\n font-size: 0.85rem;\n color: var(--mj-text-disabled);\n}\n\n.schedule-create-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: linear-gradient(135deg, var(--mj-brand-primary) 0%, var(--mj-brand-primary-active) 100%);\n color: white;\n border: none;\n border-radius: 8px;\n cursor: pointer;\n font-size: 0.8rem;\n font-weight: 600;\n transition: all 0.2s ease;\n}\n\n.schedule-create-btn:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n/* Detail toolbar */\n.detail-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n}\n\n.detail-toolbar-left {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-map-count {\n font-size: 13px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.detail-search {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n}\n\n.detail-search i {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.detail-search input {\n border: none;\n outline: none;\n background: transparent;\n font-size: 13px;\n color: var(--mj-text-primary);\n width: 200px;\n}\n\n.detail-search input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n/* Add Map button */\n.add-map-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-brand-primary-hover);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n white-space: nowrap;\n}\n\n.add-map-btn:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n}\n\n.add-map-btn.active {\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n border-color: var(--mj-brand-primary);\n}\n\n.apply-all-btn {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n\n.apply-all-btn:hover {\n background: var(--mj-brand-primary-hover);\n border-color: var(--mj-brand-primary-hover);\n}\n\n.apply-all-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.add-map-btn-lg {\n margin-top: 16px;\n padding: 10px 20px;\n font-size: 14px;\n}\n\n/* Add map inline panel */\n.add-map-panel {\n padding: 16px;\n margin-bottom: 12px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n animation: fadeIn 200ms ease;\n}\n\n.add-map-row {\n display: flex;\n align-items: flex-end;\n gap: 12px;\n}\n\n.add-map-field {\n flex: 1;\n min-width: 0;\n}\n\n.add-map-label {\n display: block;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n margin-bottom: 6px;\n}\n\n.add-map-select {\n width: 100%;\n height: 34px;\n padding: 0 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n cursor: pointer;\n}\n\n.add-map-select:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.add-map-direction-col {\n flex-shrink: 0;\n}\n\n.add-map-direction-btns {\n display: flex;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.add-map-direction-btns button {\n padding: 7px 12px;\n border: none;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n font-size: 13px;\n cursor: pointer;\n transition: all 150ms ease;\n border-right: 1px solid var(--mj-border-default);\n}\n\n.add-map-direction-btns button:last-child {\n border-right: none;\n}\n\n.add-map-direction-btns button:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.add-map-direction-btns button.active {\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n}\n\n.add-map-actions {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n}\n\n.add-map-save-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 16px;\n border: none;\n border-radius: 6px;\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n white-space: nowrap;\n}\n\n.add-map-save-btn:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.add-map-save-btn:disabled {\n opacity: 0.5;\n cursor: default;\n}\n\n.add-map-cancel-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 34px;\n height: 34px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n cursor: pointer;\n font-size: 13px;\n transition: all 150ms ease;\n}\n\n.add-map-cancel-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.add-map-loading {\n font-size: 12px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n}\n\n.add-map-loading i {\n color: var(--mj-brand-primary);\n margin-right: 4px;\n}\n\n.add-map-hint {\n font-size: 12px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n font-style: italic;\n}\n\n/* Entity field needs more room for tree dropdown */\n.add-map-entity-field {\n flex: 2;\n min-width: 280px;\n}\n\n/* Entity picker row: tree dropdown + New button side by side */\n.entity-picker-row {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.entity-picker-row mj-tree-dropdown {\n flex: 1;\n min-width: 0;\n}\n\n.new-entity-btn {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 7px 12px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n background: var(--mj-brand-primary-subtle);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 6px;\n cursor: pointer;\n white-space: nowrap;\n transition: all 0.15s ease;\n}\n\n.new-entity-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n/* ---------------------------------------------------------------------------\n Sync Result Banner\n --------------------------------------------------------------------------- */\n\n.sync-result-banner {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n margin-bottom: 12px;\n animation: fadeIn 200ms ease;\n}\n\n.sync-result-banner.sync-success {\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n color: var(--mj-status-success-text);\n}\n\n.sync-result-banner.sync-failure {\n background: var(--mj-status-error-bg);\n border: 1px solid var(--mj-status-error-border);\n color: var(--mj-status-error-text);\n}\n\n/* ---------------------------------------------------------------------------\n Auto-Map Schema Panel\n --------------------------------------------------------------------------- */\n\n.auto-map-header {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 12px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.auto-map-header i {\n color: var(--mj-brand-primary);\n}\n\n.auto-map-result {\n margin-top: 12px;\n padding: 10px 14px;\n border-radius: 6px;\n font-size: 13px;\n}\n\n.auto-map-result.auto-map-success {\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n color: var(--mj-status-success-text);\n}\n\n.auto-map-result.auto-map-partial {\n background: var(--mj-status-warning-bg);\n border: 1px solid var(--mj-status-warning-border);\n color: var(--mj-status-warning-text);\n}\n\n.auto-map-result.auto-map-failure {\n background: var(--mj-status-error-bg);\n border: 1px solid var(--mj-status-error-border);\n color: var(--mj-status-error-text);\n}\n\n.auto-map-result-summary {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n}\n\n.auto-map-errors {\n margin-top: 6px;\n font-size: 12px;\n}\n\n.auto-map-error {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 2px 0;\n}\n\n/* ---------------------------------------------------------------------------\n New Entity Dialog\n --------------------------------------------------------------------------- */\n\n.new-entity-backdrop {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: 1000;\n animation: fadeIn 0.15s ease;\n}\n\n.new-entity-dialog {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 640px;\n max-width: 90vw;\n max-height: 85vh;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-lg);\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n animation: fadeIn 0.2s ease;\n}\n\n.new-entity-dialog-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.new-entity-dialog-header h3 {\n margin: 0;\n font-size: var(--mj-text-base);\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.new-entity-dialog-close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n background: transparent;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.new-entity-dialog-close:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n}\n\n.new-entity-dialog-body {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.new-entity-dialog-desc {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n.new-entity-dialog-form {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.new-entity-dialog-row {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n}\n\n.new-entity-dialog-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 120px;\n}\n\n.new-entity-dialog-field-wide {\n flex: 1;\n}\n\n.new-entity-dialog-label {\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.new-entity-dialog-input {\n padding: 8px 12px;\n font-size: var(--mj-text-sm);\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n transition: border-color 0.15s ease;\n}\n\n.new-entity-dialog-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.1);\n}\n\n.new-entity-dialog-dot {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n padding-bottom: 6px;\n user-select: none;\n}\n\n.new-entity-dialog-value {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n padding: 8px 0 4px;\n}\n\n.new-entity-dialog-hint {\n font-style: italic;\n color: var(--mj-text-disabled);\n font-weight: 400;\n}\n\n.new-entity-dialog-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n padding: 12px 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.new-entity-preview-btn {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 8px 16px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n background: var(--mj-brand-primary);\n border: none;\n border-radius: 6px;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s ease;\n}\n\n.new-entity-preview-btn:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n}\n\n.new-entity-preview-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.new-entity-dialog-done-btn {\n display: inline-flex;\n align-items: center;\n padding: 8px 16px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n background: transparent;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.new-entity-dialog-done-btn:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-text-disabled);\n}\n\n/* Next steps callout inside dialog */\n.new-entity-next-steps {\n background: var(--mj-brand-primary-subtle);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: var(--mj-radius-md);\n padding: 14px 16px;\n}\n\n.new-entity-next-steps h4 {\n margin: 0 0 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary-hover);\n}\n\n.new-entity-next-steps h4 i {\n margin-right: 6px;\n}\n\n.new-entity-next-steps ol {\n margin: 0;\n padding-left: 20px;\n font-size: 13px;\n color: var(--mj-brand-primary-hover);\n line-height: 1.7;\n}\n\n/* DDL copy button */\n.ddl-copy-btn {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n background: transparent;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.ddl-copy-btn:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-text-disabled);\n}\n\n/* DDL Preview */\n.ddl-warnings {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.ddl-warning {\n font-size: 12px;\n color: var(--mj-status-warning);\n background: var(--mj-status-warning-subtle);\n padding: 6px 10px;\n border-radius: var(--mj-radius-sm);\n border-left: 3px solid var(--mj-status-warning);\n}\n\n.ddl-warning i {\n margin-right: 4px;\n}\n\n.ddl-preview-block {\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n max-height: 300px;\n display: flex;\n flex-direction: column;\n}\n\n.ddl-preview-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.ddl-preview-code {\n margin: 0;\n padding: 12px 16px;\n font-size: 12px;\n font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;\n line-height: 1.6;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n overflow: auto;\n white-space: pre-wrap;\n word-break: break-word;\n flex: 1;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* Detail empty state */\n.detail-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 64px 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty i {\n font-size: 36px;\n margin-bottom: 12px;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty h3 {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin: 0 0 6px;\n}\n\n.detail-empty p {\n font-size: 13px;\n margin: 0;\n max-width: 400px;\n}\n\n/* Detail table */\n.detail-table-head {\n display: flex;\n align-items: center;\n padding: 8px 16px;\n background: var(--mj-bg-page);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px 8px 0 0;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-secondary);\n}\n\n.detail-table-body {\n border: 1px solid var(--mj-border-default);\n border-top: none;\n border-radius: 0 0 8px 8px;\n overflow-y: auto;\n flex: 1;\n min-height: 0;\n}\n\n.detail-map-row {\n display: flex;\n align-items: center;\n padding: 10px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n font-size: 13px;\n}\n\n.detail-map-row:last-child {\n border-bottom: none;\n}\n\n.detail-map-row:hover {\n background: var(--mj-bg-page);\n cursor: pointer;\n}\n\n.detail-map-row.sync-disabled {\n opacity: 0.5;\n}\n\n/* Column widths (shared between head and body) */\n.dt-col-toggle {\n width: 60px;\n flex-shrink: 0;\n}\n\n.dt-col-source {\n flex: 2;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.dt-col-direction {\n width: 80px;\n flex-shrink: 0;\n text-align: center;\n}\n\n.dt-col-dest {\n flex: 2;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--mj-text-primary);\n}\n\n.dt-col-meta {\n width: 80px;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 6px;\n justify-content: flex-end;\n}\n\n/* Direction badge */\n.direction-badge {\n font-size: 11px;\n font-weight: 600;\n padding: 2px 8px;\n border-radius: 4px;\n white-space: nowrap;\n}\n\n/* Clickable direction toggle button */\nbutton.direction-toggle {\n border: 1px solid transparent;\n cursor: pointer;\n transition: border-color 0.15s, box-shadow 0.15s;\n}\nbutton.direction-toggle:hover {\n border-color: var(--mj-border-strong);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.direction-badge.pull {\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n.direction-badge.push {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.direction-badge.bidirectional {\n background: var(--mj-status-warning-subtle);\n color: var(--mj-status-warning);\n}\n\n/* Create Tables list */\n.create-tables-list {\n max-height: 300px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n margin-top: 8px;\n background: var(--mj-bg-surface);\n}\n.create-tables-select-all {\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n font-weight: 600;\n}\n.create-tables-checkbox {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 12px;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n.create-tables-checkbox:hover {\n background: var(--mj-bg-surface-hover);\n}\n.create-tables-checkbox input[type=\"checkbox\"] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n.create-tables-name-hint {\n color: var(--mj-text-muted);\n font-size: 11px;\n margin-left: 8px;\n}\n.create-tables-filters {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 0;\n flex-wrap: wrap;\n}\n.create-tables-search {\n flex: 1 1 240px;\n min-width: 200px;\n}\n.create-tables-toggle {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n}\n.create-tables-toggle input[type=\"checkbox\"] {\n margin: 0;\n}\n.create-tables-badge {\n display: inline-block;\n margin-left: 6px;\n padding: 1px 6px;\n font-size: 10px;\n font-weight: 600;\n border-radius: 10px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n line-height: 1.4;\n}\n.create-tables-badge-custom {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n.create-tables-badge-registered {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n}\n.add-map-input {\n width: 100%;\n padding: 6px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n.add-map-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n/* Config badges */\n.detail-config-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border-radius: 4px;\n background: var(--mj-bg-surface-active);\n color: var(--mj-text-disabled);\n font-size: 11px;\n}\n\n/* Detail back button (icon-only) */\n.detail-back-btn {\n display: inline-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: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 16px;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n flex-shrink: 0;\n}\n\n.detail-back-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n/* Detail edit button (icon-only) */\n.detail-edit-btn {\n display: inline-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: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 14px;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n flex-shrink: 0;\n}\n\n.detail-edit-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n/* Chevron hint on entity map rows */\n.map-edit-hint {\n color: var(--mj-text-disabled);\n font-size: 11px;\n transition: color 0.15s;\n}\n\n.detail-map-row:hover .map-edit-hint {\n color: var(--mj-brand-primary);\n}\n\n/* Entity map editor header */\n.ve-header-title-inline {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 600;\n}\n\n.ve-source-label {\n color: var(--mj-brand-primary);\n}\n\n.ve-direction-icon {\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n.ve-dest-label {\n color: var(--mj-status-success);\n}\n\n.ve-stat-inline {\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.ve-stat-inline strong {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.detail-table-empty {\n padding: 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n/* ---------------------------------------------------------------------------\n Discovered Source Objects Section\n --------------------------------------------------------------------------- */\n\n.discovered-objects-section {\n margin: 12px 0;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n overflow: hidden;\n}\n\n.discovered-objects-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.discovered-objects-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.discovered-objects-title i {\n color: var(--mj-brand-primary);\n}\n\n.discovered-count {\n font-weight: 400;\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n.discovered-objects-actions {\n display: flex;\n gap: 8px;\n}\n\n.discovered-action-btn {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 3px 10px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n}\n\n.discovered-action-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.discovered-action-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.discovered-loading,\n.discovered-empty {\n padding: 16px;\n text-align: center;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.discovered-loading i {\n margin-right: 6px;\n}\n\n.discovered-objects-list {\n max-height: 280px;\n overflow-y: auto;\n}\n\n.discovered-object-row {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 7px 14px;\n cursor: pointer;\n transition: background 0.1s;\n border-bottom: 1px solid var(--mj-border-subtle);\n font-size: 13px;\n}\n\n.discovered-object-row:last-child {\n border-bottom: none;\n}\n\n.discovered-object-row:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.discovered-object-row.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface));\n}\n\n.discovered-object-row input[type=\"checkbox\"] {\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n accent-color: var(--mj-brand-primary);\n cursor: pointer;\n}\n\n.discovered-object-name {\n flex: 1;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.discovered-object-api-name {\n flex: 1;\n color: var(--mj-text-muted);\n font-size: 12px;\n font-family: monospace;\n}\n\n.discovered-object-badges {\n display: flex;\n gap: 4px;\n}\n\n.discovered-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border-radius: 4px;\n font-size: 10px;\n}\n\n.discovered-badge.incremental {\n color: var(--mj-status-success);\n background: var(--mj-status-success-bg);\n}\n\n.discovered-badge.writable {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n"] }]
3135
+ args: [{ standalone: false, selector: 'app-integration-connections', template: "<mj-page-layout>\n <mj-page-header\n Title=\"Integrations\"\n Icon=\"fa-solid fa-plug\"\n Subtitle=\"Connected systems and data sources\">\n <!-- [meta] intentionally omitted \u2014 chrome slot discipline audit Task B.\n \"Connections.length integrations\" badge mirrored the visible card\n grid row count. -->\n <div actions>\n <mj-refresh-button [Loading]=\"IsLoading\" (Clicked)=\"LoadData()\"></mj-refresh-button>\n @if (!WizardOpen && !SelectedSummary) {\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"OpenWizard()\">\n <i class=\"fa-solid fa-plus\"></i> Add Integration\n </button>\n }\n </div>\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\">\n<!-- Main container -->\n<div class=\"connections-container\" [class.detail-active]=\"!!SelectedSummary\"\n [class.editor-active]=\"!!EditorEntityMap\">\n\n <!-- ======================================================================\n CARD GRID VIEW (shown when no wizard and no detail selected)\n ====================================================================== -->\n @if (!WizardOpen && !SelectedSummary) {\n <!-- Loading state -->\n @if (IsLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading integrations...\"></mj-loading>\n </div>\n }\n\n <!-- Empty state -->\n @if (!IsLoading && Connections.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-plug empty-icon\"></i>\n <h3>No integrations yet</h3>\n <p>Connect your first external system to start syncing data.</p>\n <button mjButton variant=\"primary\" (click)=\"OpenWizard()\">\n <i class=\"fa-solid fa-plus\"></i>\n Add Your First Integration\n </button>\n </div>\n }\n\n <!-- Card grid -->\n @if (!IsLoading && Connections.length > 0) {\n <div class=\"card-grid\">\n @for (summary of Connections; track summary.Integration.ID) {\n <div class=\"connection-card\">\n <!-- Card header + body: clickable to open detail view -->\n <div class=\"card-clickable\" (click)=\"SelectIntegrationCard(summary)\">\n <div class=\"card-header\">\n <div class=\"icon-circle\" [style.background-color]=\"GetIconBrandColor(summary.Integration.Integration)\">\n <i [class]=\"GetIntegrationIcon(summary.Integration.Integration, summary.Icon)\" class=\"icon-large\"></i>\n </div>\n <span [class]=\"GetStatusBadgeClass(summary)\">{{ GetStatusBadge(summary) }}</span>\n </div>\n\n <!-- Card body -->\n <div class=\"card-body\">\n <div class=\"card-name\">{{ summary.Integration.Name }}</div>\n <div class=\"card-company\">{{ summary.Integration.Company }}</div>\n <div class=\"card-meta\">\n <span class=\"meta-label\">{{ GetSourceTypeLabel(summary) }}</span>\n <span class=\"meta-separator\">&middot;</span>\n <span class=\"meta-value\">{{ GetCredentialHint(summary) }}</span>\n </div>\n <div class=\"card-sync-info\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n Syncing {{ GetEntityMapCount(summary.Integration.ID) }} entities\n </div>\n\n <!-- Inline test result -->\n @if (GetCardTestResult(summary.Integration.ID); as testResult) {\n <div class=\"card-test-result\" [class.test-success]=\"testResult.Success\" [class.test-failure]=\"!testResult.Success\">\n @if (testResult.Success) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <i class=\"fa-solid fa-circle-xmark\"></i>\n }\n <span>{{ testResult.Message }}</span>\n </div>\n }\n </div>\n </div><!-- /card-clickable -->\n\n <!-- Delete confirmation overlay -->\n @if (IsDeleteConfirming(summary.Integration.ID)) {\n <div class=\"delete-confirm-overlay\">\n <div class=\"delete-confirm-content\">\n <i class=\"fa-solid fa-triangle-exclamation delete-warn-icon\"></i>\n <span class=\"delete-confirm-text\">Delete this integration and all its entity maps?</span>\n <div class=\"delete-confirm-actions\">\n <button mjButton\n variant=\"danger\"\n [disabled]=\"IsDeleting\"\n (click)=\"ConfirmDelete(summary.Integration.ID)\">\n @if (IsDeleting) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Deleting...\n } @else {\n Delete\n }\n </button>\n <button mjButton variant=\"outline\" (click)=\"CancelDelete()\">\n Cancel\n </button>\n </div>\n </div>\n </div>\n }\n\n <!-- Card footer -->\n <div class=\"card-footer\">\n <button mjButton\n variant=\"outline\"\n [disabled]=\"!!TestingCardID\"\n (click)=\"TestExistingConnection(summary.Integration.ID)\">\n @if (IsTestingCard(summary.Integration.ID)) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n Test\n }\n </button>\n <button mjButton variant=\"outline\" (click)=\"OnMenuAction('edit', summary)\">\n Configure\n </button>\n @if (IsConnectionActive(summary)) {\n <div class=\"sync-menu-wrapper\">\n <button mjButton variant=\"primary\"\n [disabled]=\"!!SyncingIntegrationID\"\n (click)=\"ToggleSyncMenu(summary.Integration.ID, $event)\">\n @if (IsSyncing(summary.Integration.ID)) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Syncing...\n } @else {\n <i class=\"fa-solid fa-arrows-rotate\"></i> Sync\n <i class=\"fa-solid fa-chevron-down sync-caret\"></i>\n }\n </button>\n @if (SyncMenuIntegrationID === summary.Integration.ID) {\n <div class=\"sync-dropdown\">\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Pull (External \u2192 MJ)</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, false, 'Pull', $event)\">\n <i class=\"fa-solid fa-arrow-down-to-line\"></i> Incremental Pull\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, true, 'Pull', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Pull\n </button>\n </div>\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Push (MJ \u2192 External)</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, false, 'Push', $event)\">\n <i class=\"fa-solid fa-arrow-up-from-line\"></i> Incremental Push\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, true, 'Push', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Push\n </button>\n </div>\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Bidirectional</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, false, 'Bidirectional', $event)\">\n <i class=\"fa-solid fa-arrows-rotate\"></i> Incremental Both\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, true, 'Bidirectional', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Both\n </button>\n </div>\n </div>\n }\n </div>\n }\n <button class=\"card-delete-btn\" (click)=\"OnMenuAction('delete', summary)\" title=\"Delete integration\">\n <i class=\"fa-solid fa-trash-can\"></i>\n </button>\n </div>\n </div>\n }\n\n <!-- New connection card -->\n <div class=\"connection-card new-connection-card\" (click)=\"OpenWizard()\">\n <div class=\"new-card-content\">\n <div class=\"new-card-icon\">\n <i class=\"fa-solid fa-plus\"></i>\n </div>\n <span class=\"new-card-label\">Add Integration</span>\n </div>\n </div>\n </div>\n }\n }\n\n <!-- ======================================================================\n DETAIL VIEW (entity maps for selected integration)\n ====================================================================== -->\n @if (!WizardOpen && SelectedSummary) {\n <div class=\"detail-view\">\n\n <!-- ================================================================\n ENTITY MAP EDITOR (field mapping detail for a selected map)\n ================================================================ -->\n @if (EditorEntityMap) {\n <app-visual-field-editor\n [EntityMap]=\"EditorEntityMap\"\n [CompanyIntegrationID]=\"SelectedSummary!.Integration.ID\"\n [RunViewProvider]=\"RunViewToUse\"\n (Close)=\"CloseEntityMapEditor()\">\n </app-visual-field-editor>\n\n <!-- ================================================================\n ENTITY MAPS LIST (shown when no editor map is selected)\n ================================================================ -->\n } @else {\n <!-- Detail header -->\n <div class=\"detail-header\">\n <button class=\"detail-back-btn\" (click)=\"CloseDetailView()\" title=\"Back to Integrations\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n <div class=\"detail-header-info\">\n <div class=\"icon-circle\" [style.background-color]=\"GetIconBrandColor(SelectedSummary.Integration.Integration)\">\n <i [class]=\"GetIntegrationIcon(SelectedSummary.Integration.Integration)\" class=\"icon-large\"></i>\n </div>\n <div class=\"detail-header-text\">\n <h2 class=\"detail-title\">{{ SelectedSummary.Integration.Name }}</h2>\n <span class=\"detail-subtitle\">\n {{ SelectedSummary.Integration.Company }}\n <span class=\"meta-separator\">&middot;</span>\n {{ GetSourceTypeLabel(SelectedSummary) }}\n <span class=\"meta-separator\">&middot;</span>\n <span [class]=\"GetStatusBadgeClass(SelectedSummary)\">{{ GetStatusBadge(SelectedSummary) }}</span>\n </span>\n </div>\n </div>\n <div class=\"detail-header-actions\">\n <button class=\"detail-edit-btn\" (click)=\"OpenEditPanel(SelectedSummary)\" title=\"Configure\">\n <i class=\"fa-solid fa-pen-to-square\"></i>\n </button>\n @if (IsConnectionActive(SelectedSummary)) {\n <div class=\"sync-menu-wrapper\">\n <button mjButton variant=\"primary\"\n [disabled]=\"!!SyncingIntegrationID\"\n (click)=\"ToggleSyncMenu(SelectedSummary.Integration.ID, $event)\">\n @if (IsSyncing(SelectedSummary.Integration.ID)) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Syncing...\n } @else {\n <i class=\"fa-solid fa-arrows-rotate\"></i> Sync\n <i class=\"fa-solid fa-chevron-down sync-caret\"></i>\n }\n </button>\n @if (SyncMenuIntegrationID === SelectedSummary.Integration.ID) {\n <div class=\"sync-dropdown sync-dropdown-left\">\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Pull (External \u2192 MJ)</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, false, 'Pull', $event)\">\n <i class=\"fa-solid fa-arrow-down-to-line\"></i> Incremental Pull\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, true, 'Pull', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Pull\n </button>\n </div>\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Push (MJ \u2192 External)</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, false, 'Push', $event)\">\n <i class=\"fa-solid fa-arrow-up-from-line\"></i> Incremental Push\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, true, 'Push', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Push\n </button>\n </div>\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Bidirectional</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, false, 'Bidirectional', $event)\">\n <i class=\"fa-solid fa-arrows-rotate\"></i> Incremental Both\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, true, 'Bidirectional', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Both\n </button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Schedule section -->\n <div class=\"schedule-section\">\n <div class=\"schedule-section-header\">\n <div class=\"schedule-section-title\">\n <i class=\"fa-solid fa-calendar-check\"></i>\n <span>Sync Schedule</span>\n </div>\n </div>\n @if (ScheduledJobID) {\n <mj-scheduled-job-summary\n [ScheduledJobID]=\"ScheduledJobID\"\n (EditRequested)=\"OpenSchedulePanel()\">\n </mj-scheduled-job-summary>\n } @else {\n <div class=\"schedule-empty\">\n <span class=\"schedule-empty-text\">No sync schedule configured</span>\n <button class=\"schedule-create-btn\" (click)=\"OpenSchedulePanel()\">\n <i class=\"fa-solid fa-plus\"></i>\n Schedule Sync\n </button>\n </div>\n }\n </div>\n\n <!-- Schedule slide panel -->\n <mj-scheduled-job-slide-panel\n [IsOpen]=\"ShowScheduleSlidePanel\"\n [ScheduledJobID]=\"ScheduledJobID\"\n [JobTypeID]=\"IntegrationSyncJobTypeID\"\n [DefaultConfiguration]=\"ScheduleDefaultConfiguration\"\n [HideJobType]=\"true\"\n (Close)=\"CloseSchedulePanel()\"\n (Saved)=\"OnScheduleSaved()\"\n (Deleted)=\"OnScheduleDeleted()\">\n </mj-scheduled-job-slide-panel>\n\n <!-- Entity maps toolbar -->\n <div class=\"detail-toolbar\">\n <div class=\"detail-toolbar-left\">\n <span class=\"detail-map-count\">\n {{ DetailEntityMaps.length }} entity map{{ DetailEntityMaps.length !== 1 ? 's' : '' }}\n <span class=\"meta-separator\">&middot;</span>\n {{ DetailActiveMapCount }} active\n </span>\n </div>\n <div class=\"detail-toolbar-right\">\n <div class=\"detail-search\">\n <i class=\"fa-solid fa-filter\"></i>\n <input type=\"text\"\n placeholder=\"Filter entity maps...\"\n [value]=\"DetailSearchTerm\"\n (input)=\"OnDetailSearch($event)\" />\n </div>\n <button class=\"add-map-btn\" (click)=\"ToggleCreateTablesPanel()\" [class.active]=\"ShowCreateTablesPanel\"\n title=\"Select source objects and create entity tables\">\n <i class=\"fa-solid fa-table\"></i> Create Tables\n </button>\n <button class=\"add-map-btn\" (click)=\"ToggleAutoMapPanel()\" [class.active]=\"ShowAutoMapPanel\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Auto-Map Schema\n </button>\n <button class=\"add-map-btn\" (click)=\"ToggleAddMapPanel()\" [class.active]=\"ShowAddMapPanel\">\n <i class=\"fa-solid fa-plus\"></i> Add Map\n </button>\n </div>\n </div>\n\n <!-- Sync result banner -->\n @if (SyncResult) {\n <div class=\"sync-result-banner\" [class.sync-success]=\"SyncResult.Success\" [class.sync-failure]=\"!SyncResult.Success\">\n @if (SyncResult.Success) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <i class=\"fa-solid fa-circle-xmark\"></i>\n }\n <span>{{ SyncResult.Message || (SyncResult.Success ? 'Sync completed successfully' : 'Sync failed') }}</span>\n </div>\n }\n\n <!-- Auto-Map Schema panel -->\n @if (ShowAutoMapPanel) {\n <div class=\"add-map-panel\">\n <div class=\"auto-map-header\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n <span>Auto-map all entities in a schema to this integration with 1:1 field mappings</span>\n </div>\n <div class=\"add-map-row\">\n <div class=\"add-map-field\">\n <label class=\"add-map-label\">Target Schema</label>\n <select class=\"add-map-select\" [(ngModel)]=\"AutoMapSelectedSchema\">\n <option [ngValue]=\"''\" disabled>Select schema...</option>\n @for (schema of AutoMapSchemas; track schema) {\n <option [value]=\"schema\">{{ schema }}</option>\n }\n </select>\n </div>\n\n <div class=\"add-map-direction-col\">\n <label class=\"add-map-label\">Direction</label>\n <div class=\"add-map-direction-btns\">\n <button [class.active]=\"AutoMapDirection === 'Pull'\" (click)=\"AutoMapDirection = 'Pull'\" title=\"Pull from source\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n <button [class.active]=\"AutoMapDirection === 'Bidirectional'\" (click)=\"AutoMapDirection = 'Bidirectional'\" title=\"Bidirectional sync\">\n <i class=\"fa-solid fa-right-left\"></i>\n </button>\n <button [class.active]=\"AutoMapDirection === 'Push'\" (click)=\"AutoMapDirection = 'Push'\" title=\"Push to source\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n </div>\n </div>\n\n <div class=\"add-map-actions\">\n <button class=\"add-map-save-btn\"\n [disabled]=\"!CanAutoMap\"\n (click)=\"RunAutoMap()\">\n @if (IsAutoMapping) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Mapping...\n } @else {\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Auto-Map\n }\n </button>\n <button class=\"add-map-cancel-btn\" (click)=\"CloseAutoMapPanel()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n </div>\n\n @if (AutoMapResult) {\n <div class=\"auto-map-result\" [class.auto-map-success]=\"AutoMapResult.Errors.length === 0\"\n [class.auto-map-partial]=\"AutoMapResult.Errors.length > 0 && AutoMapResult.EntityMapsCreated > 0\"\n [class.auto-map-failure]=\"AutoMapResult.EntityMapsCreated === 0 && AutoMapResult.Errors.length > 0\">\n @if (AutoMapResult.EntityMapsCreated > 0) {\n <div class=\"auto-map-result-summary\">\n <i class=\"fa-solid fa-circle-check\"></i>\n Created {{ AutoMapResult.EntityMapsCreated }} entity map{{ AutoMapResult.EntityMapsCreated !== 1 ? 's' : '' }}\n with {{ AutoMapResult.FieldMapsCreated }} field map{{ AutoMapResult.FieldMapsCreated !== 1 ? 's' : '' }}\n </div>\n } @else if (AutoMapResult.Errors.length === 0) {\n <div class=\"auto-map-result-summary\">\n <i class=\"fa-solid fa-circle-info\"></i>\n All entities in this schema are already mapped.\n </div>\n }\n @if (AutoMapResult.Errors.length > 0) {\n <div class=\"auto-map-errors\">\n @for (err of AutoMapResult.Errors; track err) {\n <div class=\"auto-map-error\"><i class=\"fa-solid fa-triangle-exclamation\"></i> {{ err }}</div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Create Tables panel (select source objects \u2192 create entity tables) -->\n @if (ShowCreateTablesPanel) {\n <div class=\"add-map-panel\">\n <div class=\"auto-map-header\">\n <i class=\"fa-solid fa-table\"></i>\n <span>Select source objects to create as entity tables in your database</span>\n </div>\n\n <div class=\"add-map-row\">\n <div class=\"add-map-actions\">\n <button class=\"add-map-save-btn\"\n [disabled]=\"!CanCreateTables\"\n (click)=\"RunCreateTables()\">\n @if (IsCreatingTables) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Creating...\n } @else {\n <i class=\"fa-solid fa-table\"></i> Create {{ CreateTablesSelectedCount }} Table{{ CreateTablesSelectedCount !== 1 ? 's' : '' }}\n }\n </button>\n <button class=\"add-map-cancel-btn\" (click)=\"CloseCreateTablesPanel()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n </div>\n\n @if (IsLoadingCreateTablesObjects) {\n <mj-loading text=\"Loading source objects...\" size=\"small\"></mj-loading>\n } @else if (CreateTablesObjects.length === 0) {\n <div class=\"auto-map-result auto-map-success\">\n <i class=\"fa-solid fa-circle-info\"></i>\n No source objects available from this connector.\n </div>\n } @else {\n <div class=\"create-tables-filters\">\n <input type=\"text\"\n class=\"create-tables-search mj-input\"\n placeholder=\"Search by name or label...\"\n [(ngModel)]=\"CreateTablesSearch\" />\n </div>\n <div class=\"create-tables-list\">\n <div class=\"create-tables-select-all\">\n <label class=\"create-tables-checkbox\">\n <input type=\"checkbox\"\n [checked]=\"FilteredCreateTablesObjects.length > 0 && CreateTablesSelectedCount === FilteredCreateTablesObjects.length\"\n (change)=\"ToggleAllCreateTablesObjects($any($event.target).checked)\" />\n <span>Select All ({{ FilteredCreateTablesObjects.length }} of {{ CreateTablesObjects.length }})</span>\n </label>\n </div>\n @for (obj of FilteredCreateTablesObjects; track obj.Name) {\n <label class=\"create-tables-checkbox\">\n <input type=\"checkbox\" [(ngModel)]=\"obj.Selected\" />\n <span>{{ obj.Label }}</span>\n @if (obj.Label !== obj.Name) {\n <span class=\"create-tables-name-hint\">{{ obj.Name }}</span>\n }\n @if (obj.IsCustom) {\n <span class=\"create-tables-badge create-tables-badge-custom\">Custom</span>\n }\n @if (obj.AlreadyPersisted) {\n <span class=\"create-tables-badge create-tables-badge-registered\">Registered</span>\n }\n </label>\n }\n </div>\n }\n\n @if (CreateTablesResult) {\n <div class=\"auto-map-result\"\n [class.auto-map-success]=\"CreateTablesResult.Success\"\n [class.auto-map-failure]=\"!CreateTablesResult.Success\">\n @if (CreateTablesResult.Success) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <i class=\"fa-solid fa-circle-xmark\"></i>\n }\n <span>{{ CreateTablesResult.Message }}</span>\n </div>\n }\n </div>\n }\n\n <!-- Add Entity Map inline form -->\n @if (ShowAddMapPanel) {\n <div class=\"add-map-panel\">\n <div class=\"add-map-row\">\n <div class=\"add-map-field\">\n <label class=\"add-map-label\">Source Object</label>\n @if (IsLoadingSourceObjects) {\n <div class=\"add-map-loading\"><i class=\"fa-solid fa-spinner fa-spin\"></i> Loading...</div>\n } @else if (AvailableSourceObjects.length === 0) {\n <div class=\"add-map-hint\">No source objects found in metadata</div>\n } @else {\n <select class=\"add-map-select\" [(ngModel)]=\"AddMapSourceObjectName\">\n <option [ngValue]=\"''\" disabled>Select source object...</option>\n @for (obj of AvailableSourceObjects; track obj.Name) {\n <option [value]=\"obj.Name\">{{ obj.Label || obj.Name }}</option>\n }\n </select>\n }\n </div>\n\n <div class=\"add-map-direction-col\">\n <label class=\"add-map-label\">Direction</label>\n <div class=\"add-map-direction-btns\">\n <button [class.active]=\"AddMapDirection === 'Pull'\" (click)=\"AddMapDirection = 'Pull'\" title=\"Pull from source\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n <button [class.active]=\"AddMapDirection === 'Bidirectional'\" (click)=\"AddMapDirection = 'Bidirectional'\" title=\"Bidirectional sync\">\n <i class=\"fa-solid fa-right-left\"></i>\n </button>\n <button [class.active]=\"AddMapDirection === 'Push'\" (click)=\"AddMapDirection = 'Push'\" title=\"Push to source\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n </div>\n </div>\n\n <div class=\"add-map-field add-map-entity-field\">\n <label class=\"add-map-label\">MJ Entity</label>\n <div class=\"entity-picker-row\">\n <mj-tree-dropdown\n #entityTreeDropdown\n [BranchConfig]=\"EntityBranchConfig\"\n [LeafConfig]=\"EntityLeafConfig\"\n [Value]=\"AddMapEntityIDAsKey\"\n [SelectableTypes]=\"'leaf'\"\n [SelectionMode]=\"'single'\"\n [Placeholder]=\"'Search entities by schema...'\"\n [EnableSearch]=\"true\"\n (SelectionChange)=\"OnEntityTreeSelection($event)\">\n </mj-tree-dropdown>\n <button class=\"new-entity-btn\" (click)=\"OpenNewEntityDialog()\" title=\"Create new entity table\">\n <i class=\"fa-solid fa-plus\"></i> New\n </button>\n </div>\n </div>\n\n <div class=\"add-map-actions\">\n <button class=\"add-map-save-btn\"\n [disabled]=\"!CanSaveAddMap || IsSavingAddMap\"\n (click)=\"SaveAddMap()\">\n @if (IsSavingAddMap) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n <i class=\"fa-solid fa-check\"></i> Add\n }\n </button>\n <button class=\"add-map-cancel-btn\" (click)=\"CloseAddMapPanel()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n </div>\n </div>\n }\n\n <!-- Entity maps table -->\n @if (IsDetailLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading entity maps...\"></mj-loading>\n </div>\n } @else if (DetailEntityMaps.length === 0 && !ShowAddMapPanel) {\n <div class=\"detail-empty\">\n <i class=\"fa-solid fa-cube\"></i>\n <h3>No entity maps configured</h3>\n <p>Entity maps define how external objects sync to MJ entities.</p>\n <button class=\"add-map-btn add-map-btn-lg\" (click)=\"ToggleAddMapPanel()\">\n <i class=\"fa-solid fa-plus\"></i> Add Your First Entity Map\n </button>\n </div>\n } @else if (DetailEntityMaps.length > 0) {\n <!-- Table header -->\n <div class=\"detail-table-head\">\n <span class=\"dt-col-toggle\">Sync</span>\n <span class=\"dt-col-source\">External Object</span>\n <span class=\"dt-col-direction\"></span>\n <span class=\"dt-col-dest\">MJ Entity</span>\n <span class=\"dt-col-meta\">Config</span>\n </div>\n\n <!-- Table body -->\n <div class=\"detail-table-body\">\n @for (em of DetailFilteredMaps; track em.ID) {\n <div class=\"detail-map-row\" [class.sync-disabled]=\"!em.SyncEnabled\" (click)=\"OnEntityMapClick(em)\">\n <span class=\"dt-col-toggle\" (click)=\"$event.stopPropagation()\">\n <label class=\"toggle-switch\" [title]=\"em.SyncEnabled ? 'Sync enabled' : 'Sync disabled'\">\n <input type=\"checkbox\"\n [checked]=\"em.SyncEnabled\"\n (change)=\"OnToggleMapEnabled(em, $event)\" />\n <span class=\"toggle-slider\"></span>\n </label>\n </span>\n <span class=\"dt-col-source\" [title]=\"em.ExternalObjectName\">\n {{ em.ExternalObjectLabel ?? em.ExternalObjectName }}\n </span>\n <span class=\"dt-col-direction\" (click)=\"$event.stopPropagation()\">\n <button class=\"direction-toggle\" [class]=\"DirectionBadgeClass(em.SyncDirection)\"\n (click)=\"CycleSyncDirection(em)\"\n [title]=\"'Click to change sync direction (currently: ' + em.SyncDirection + ')'\">\n {{ DirectionText(em.SyncDirection) }}\n </button>\n </span>\n <span class=\"dt-col-dest\" [title]=\"em.Entity\">\n {{ em.Entity }}\n </span>\n <span class=\"dt-col-meta\">\n @if (em.MatchStrategy) {\n <span class=\"detail-config-badge\" title=\"Match strategy configured\">\n <i class=\"fa-solid fa-link\"></i>\n </span>\n }\n <span class=\"detail-config-badge\" [title]=\"'Conflict: ' + em.ConflictResolution\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n </span>\n <span class=\"map-edit-hint\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </span>\n </span>\n </div>\n } @empty {\n <div class=\"detail-table-empty\">\n No entity maps match your filter.\n </div>\n }\n </div>\n }\n }\n\n </div>\n }\n\n <!-- ======================================================================\n WIZARD (inline, replaces card grid when open)\n ====================================================================== -->\n @if (WizardOpen) {\n <div class=\"wizard-inline\">\n <!-- Wizard header -->\n <div class=\"wizard-header\">\n <button class=\"wizard-back-btn\" (click)=\"CloseWizard()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n Back to Integrations\n </button>\n <h2 class=\"wizard-title\">New Integration</h2>\n </div>\n\n <!-- Step indicator -->\n <div class=\"step-indicator\">\n @for (step of WizardSteps; track step.Number) {\n <div class=\"step-item\" [class.step-active]=\"IsStepActive(step.Number)\" [class.step-completed]=\"IsStepCompleted(step.Number)\">\n <div class=\"step-circle\">\n @if (IsStepCompleted(step.Number)) {\n <i class=\"fa-solid fa-check\"></i>\n } @else {\n {{ step.Number }}\n }\n </div>\n <span class=\"step-label\">{{ step.Label }}</span>\n </div>\n @if (step.Number < WizardSteps.length) {\n <div class=\"step-line\" [class.step-line-active]=\"IsStepCompleted(step.Number)\"></div>\n }\n }\n </div>\n\n <!-- Step content -->\n <div class=\"wizard-body\">\n\n <!-- Step 1: Choose Integration -->\n @if (WizardStep === 1) {\n <div class=\"step-content\">\n <h3 class=\"step-title\">What system do you want to connect?</h3>\n <div class=\"search-bar\">\n <i class=\"fa-solid fa-search search-icon\"></i>\n <input type=\"text\"\n class=\"search-input\"\n placeholder=\"Search integrations...\"\n [(ngModel)]=\"SearchQuery\" />\n </div>\n\n @if (FilteredIntegrations.length === 0 && AvailableIntegrations.length === 0) {\n <div class=\"no-integrations\">\n <i class=\"fa-solid fa-puzzle-piece\"></i>\n <p>No integrations configured</p>\n <span class=\"no-integrations-hint\">Configure integration definitions in the admin area first.</span>\n </div>\n } @else if (FilteredIntegrations.length === 0) {\n <div class=\"no-integrations\">\n <i class=\"fa-solid fa-search\"></i>\n <p>No matching integrations</p>\n </div>\n } @else {\n <div class=\"integration-picker-grid\">\n @for (def of FilteredIntegrations; track def.ID) {\n <div class=\"integration-picker-card\"\n [class.picker-selected]=\"IsSelectedIntegration(def)\"\n (click)=\"SelectIntegration(def)\">\n <div class=\"picker-icon-circle\" [style.background-color]=\"GetIconBrandColor(def.Name)\">\n <i [class]=\"GetIntegrationIcon(def.Name, def.Get('Icon'))\"></i>\n </div>\n <div class=\"picker-name\">{{ def.Name }}</div>\n @if (def.Description) {\n <div class=\"picker-description\">{{ def.Description }}</div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Step 2: Configure Connection -->\n @if (WizardStep === 2) {\n <div class=\"step-content\">\n <h3 class=\"step-title\">Set up your connection</h3>\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"connectionName\">Connection Name</label>\n <input id=\"connectionName\"\n type=\"text\"\n class=\"form-input\"\n placeholder=\"e.g. Production HubSpot\"\n [(ngModel)]=\"ConnectionName\" />\n </div>\n\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"companySelect\">Company</label>\n @if (NeedsCompanyPicker) {\n <select id=\"companySelect\" class=\"form-input\" [(ngModel)]=\"SelectedCompanyID\">\n <option [ngValue]=\"null\" disabled>Select a company...</option>\n @for (company of Companies; track company.ID) {\n <option [value]=\"company.ID\">{{ company.Name }}</option>\n }\n </select>\n } @else if (Companies.length === 1) {\n <input type=\"text\" class=\"form-input\" [value]=\"Companies[0].Name\" disabled />\n } @else {\n <div class=\"form-hint\">No companies available. Create one in the admin area.</div>\n }\n </div>\n\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"connectionDescription\">Description <span class=\"optional-label\">(optional)</span></label>\n <textarea id=\"connectionDescription\"\n class=\"form-input form-textarea\"\n placeholder=\"Notes about this connection...\"\n [(ngModel)]=\"ConnectionDescription\"\n rows=\"3\"></textarea>\n </div>\n\n <!-- Credential section -->\n <div class=\"form-group\">\n <label class=\"form-label\">Credential</label>\n @if (SelectedCredential) {\n <div class=\"credential-selected\">\n <div class=\"credential-info\">\n <i class=\"fa-solid fa-key\"></i>\n <span>{{ SelectedCredential.Name }}</span>\n </div>\n <button class=\"credential-clear\" (click)=\"ClearCredential()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n } @else {\n <div class=\"credential-actions\">\n <button mjButton variant=\"outline\" (click)=\"ShowExistingCredentials()\">\n <i class=\"fa-solid fa-key\"></i>\n Choose Existing Credential\n </button>\n <button mjButton variant=\"outline\" (click)=\"OpenCredentialDialog()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create New Credential\n </button>\n </div>\n }\n\n @if (IsLoadingCredentials) {\n <div class=\"credential-loading\">\n <mj-loading text=\"Loading credentials...\" size=\"small\"></mj-loading>\n </div>\n }\n\n @if (!IsLoadingCredentials && ExistingCredentials.length > 0 && !SelectedCredential) {\n <div class=\"credential-list\">\n @for (cred of ExistingCredentials; track cred.ID) {\n <div class=\"credential-list-item\" (click)=\"SelectExistingCredential(cred)\">\n <i class=\"fa-solid fa-key\"></i>\n <span>{{ cred.Name }}</span>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Step 3: Test Connection -->\n @if (WizardStep === 3) {\n <div class=\"step-content step-content-centered\">\n <h3 class=\"step-title\">Let's verify everything works</h3>\n\n @if (!TestResult && !IsTesting) {\n <div class=\"test-prompt\">\n <button mjButton\n variant=\"primary\"\n size=\"lg\"\n (click)=\"TestNewConnection()\">\n <i class=\"fa-solid fa-vial\"></i>\n Test Connection\n </button>\n <p class=\"test-hint\">We'll verify we can reach your system and authenticate.</p>\n </div>\n }\n\n @if (IsTesting) {\n <div class=\"test-running\">\n <div class=\"test-spinner\">\n <i class=\"fa-solid fa-spinner fa-spin fa-3x\"></i>\n </div>\n <p>Testing connection...</p>\n </div>\n }\n\n @if (TestResult) {\n <div class=\"test-result\" [class.test-result-success]=\"TestResult.Success\" [class.test-result-failure]=\"!TestResult.Success\">\n <div class=\"test-result-icon\">\n @if (TestResult.Success) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <i class=\"fa-solid fa-circle-xmark\"></i>\n }\n </div>\n <div class=\"test-result-message\">{{ TestResult.Message }}</div>\n @if (TestResult.Success && TestResult.ServerVersion) {\n <div class=\"test-result-detail\">\n Server version: {{ TestResult.ServerVersion }}\n </div>\n }\n @if (!TestResult.Success) {\n <button mjButton variant=\"outline\" (click)=\"TestNewConnection()\" class=\"test-retry-btn\">\n <i class=\"fa-solid fa-rotate-right\"></i>\n Retry\n </button>\n }\n </div>\n }\n </div>\n }\n\n </div>\n\n <!-- Wizard footer -->\n <div class=\"wizard-footer\">\n <div class=\"footer-left\"></div>\n <div class=\"footer-right\">\n @if (WizardStep > 1) {\n <button mjButton variant=\"outline\" (click)=\"PreviousStep()\">\n Back\n </button>\n }\n <button mjButton\n variant=\"primary\"\n [disabled]=\"IsNextDisabled || IsSaving\"\n (click)=\"FinishWizard()\">\n @if (IsSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Saving...\n } @else {\n {{ NextButtonLabel }}\n }\n </button>\n </div>\n </div>\n </div>\n }\n\n</div>\n\n<!-- Edit panel (slide-in) -->\n<div class=\"edit-panel-backdrop\"\n [class.open]=\"EditPanelOpen\"\n (click)=\"CloseEditPanel()\"></div>\n<div class=\"edit-panel\" [class.open]=\"EditPanelOpen\">\n @if (EditingSummary) {\n <!-- Header -->\n <div class=\"edit-panel-header\">\n <div class=\"edit-panel-title\">\n <div class=\"edit-icon-circle\"\n [style.background-color]=\"GetIconBrandColor(EditingSummary.Integration.Integration)\">\n <i [class]=\"GetIntegrationIcon(EditingSummary.Integration.Integration, EditingSummary.Icon)\"></i>\n </div>\n <span>Configure Integration</span>\n </div>\n <button class=\"edit-close-btn\" (click)=\"CloseEditPanel()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n @if (IsEditLoading) {\n <div class=\"edit-panel-loading\">\n <mj-loading text=\"Loading...\" size=\"small\"></mj-loading>\n </div>\n } @else {\n <!-- Edit form -->\n <div class=\"edit-panel-body\">\n <div class=\"edit-form-group\">\n <label class=\"edit-form-label\">Connection Name</label>\n <input type=\"text\"\n class=\"edit-form-input\"\n [(ngModel)]=\"EditName\"\n placeholder=\"Connection name...\" />\n </div>\n\n <div class=\"edit-form-group\">\n <label class=\"edit-form-label\">Status</label>\n <div class=\"edit-toggle-row\">\n <label class=\"toggle-switch\">\n <input type=\"checkbox\" [(ngModel)]=\"EditIsActive\" />\n <span class=\"toggle-slider\"></span>\n </label>\n <span class=\"edit-toggle-label\" [class.active]=\"EditIsActive\">\n {{ EditIsActive ? 'Active' : 'Inactive' }}\n </span>\n </div>\n </div>\n\n <div class=\"edit-form-group\">\n <label class=\"edit-form-label\">Credential</label>\n @if (EditCredential) {\n <div class=\"edit-credential-selected\">\n <div class=\"edit-credential-info\">\n <i class=\"fa-solid fa-key\"></i>\n <span>{{ EditCredential.Name }}</span>\n </div>\n <button class=\"edit-credential-clear\" (click)=\"ClearEditCredential()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n } @else {\n <div class=\"edit-credential-actions\">\n <button mjButton variant=\"outline\" size=\"sm\" (click)=\"OpenEditCredentialDialog()\">\n <i class=\"fa-solid fa-plus\"></i> New Credential\n </button>\n </div>\n @if (EditCredentials.length > 0) {\n <div class=\"edit-credential-list\">\n @for (cred of EditCredentials; track cred.ID) {\n <div class=\"edit-credential-item\" (click)=\"SelectEditCredential(cred)\">\n <i class=\"fa-solid fa-key\"></i>\n <span>{{ cred.Name }}</span>\n </div>\n }\n </div>\n }\n }\n </div>\n\n <div class=\"edit-form-group\">\n <label class=\"edit-form-label\">Integration</label>\n <div class=\"edit-readonly-field\">\n {{ EditingSummary.Integration.Integration }}\n </div>\n </div>\n\n <div class=\"edit-form-group\">\n <label class=\"edit-form-label\">Company</label>\n <div class=\"edit-readonly-field\">\n {{ EditingSummary.Integration.Company }}\n </div>\n </div>\n </div>\n\n <!-- Footer -->\n <div class=\"edit-panel-footer\">\n <button mjButton\n variant=\"primary\"\n [disabled]=\"IsEditSaving || !EditName.trim()\"\n (click)=\"SaveEditChanges()\">\n @if (IsEditSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Saving...\n } @else {\n Save Changes\n }\n </button>\n <button mjButton variant=\"outline\" (click)=\"CloseEditPanel()\">\n Cancel\n </button>\n </div>\n }\n }\n</div>\n\n<!-- Credential dialog (shared between wizard and edit panel) -->\n@if (ShowCredentialDialog) {\n <mj-credential-dialog\n [Visible]=\"true\"\n [PreselectedTypeId]=\"PreselectedCredentialTypeId\"\n (close)=\"EditPanelOpen ? OnEditCredentialDialogClose($event) : OnCredentialDialogClose($event)\">\n </mj-credential-dialog>\n}\n\n<!-- New Entity dialog -->\n@if (ShowCreateEntity) {\n <div class=\"new-entity-backdrop\" (click)=\"CloseNewEntityDialog()\"></div>\n <div class=\"new-entity-dialog\">\n <div class=\"new-entity-dialog-header\">\n <h3>Create New Entity Table</h3>\n <button class=\"new-entity-dialog-close\" (click)=\"CloseNewEntityDialog()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n <div class=\"new-entity-dialog-body\">\n <p class=\"new-entity-dialog-desc\">\n Generate a SQL migration to create a new database table for this integration's data.\n After running the migration and CodeGen, the new entity will appear in the entity picker.\n </p>\n\n <div class=\"new-entity-dialog-form\">\n <div class=\"new-entity-dialog-row\">\n <div class=\"new-entity-dialog-field\">\n <label class=\"new-entity-dialog-label\">Source Object</label>\n <div class=\"new-entity-dialog-value\">\n @if (AddMapSourceObjectName) {\n {{ AddMapSourceObjectName }}\n } @else {\n <span class=\"new-entity-dialog-hint\">Select a source object in the Add Map form first</span>\n }\n </div>\n </div>\n </div>\n <div class=\"new-entity-dialog-row\">\n <div class=\"new-entity-dialog-field\">\n <label class=\"new-entity-dialog-label\">Schema</label>\n <input type=\"text\"\n class=\"new-entity-dialog-input\"\n placeholder=\"e.g. hubspot\"\n [(ngModel)]=\"NewEntitySchema\" />\n </div>\n <span class=\"new-entity-dialog-dot\">.</span>\n <div class=\"new-entity-dialog-field new-entity-dialog-field-wide\">\n <label class=\"new-entity-dialog-label\">Table Name</label>\n <input type=\"text\"\n class=\"new-entity-dialog-input\"\n placeholder=\"e.g. Contact\"\n [(ngModel)]=\"NewEntityTable\" />\n </div>\n </div>\n </div>\n\n @if (DDLPreviewWarnings.length > 0) {\n <div class=\"ddl-warnings\">\n @for (warn of DDLPreviewWarnings; track warn) {\n <div class=\"ddl-warning\"><i class=\"fa-solid fa-triangle-exclamation\"></i> {{ warn }}</div>\n }\n </div>\n }\n\n @if (DDLPreview) {\n <div class=\"ddl-preview-block\">\n <div class=\"ddl-preview-header\">\n <span>SQL Preview</span>\n <button class=\"ddl-copy-btn\" (click)=\"CopyDDLToClipboard()\" title=\"Copy to clipboard\">\n @if (DDLCopied) {\n <i class=\"fa-solid fa-check\"></i> Copied\n } @else {\n <i class=\"fa-regular fa-copy\"></i> Copy\n }\n </button>\n </div>\n <pre class=\"ddl-preview-code\">{{ DDLPreview }}</pre>\n </div>\n }\n\n @if (DDLPreview) {\n <div class=\"new-entity-next-steps\">\n <h4><i class=\"fa-solid fa-list-check\"></i> Next Steps</h4>\n <ol>\n <li>Copy the SQL above and save it as a migration file</li>\n <li>Run the migration against your database</li>\n <li>Run CodeGen to register the new entity in MemberJunction</li>\n <li>Refresh the page &mdash; the new entity will appear in the entity picker</li>\n </ol>\n </div>\n }\n </div>\n <div class=\"new-entity-dialog-footer\">\n <button class=\"new-entity-preview-btn\"\n [disabled]=\"!CanGenerateSQL || IsGeneratingDDL\"\n (click)=\"PreviewDDL()\">\n @if (IsGeneratingDDL) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Generating...\n } @else {\n <i class=\"fa-solid fa-code\"></i> Generate SQL\n }\n </button>\n <button class=\"new-entity-dialog-done-btn\" (click)=\"CloseNewEntityDialog()\">\n Done\n </button>\n </div>\n </div>\n}\n </mj-page-body>\n</mj-page-layout>\n", styles: ["/* ---------------------------------------------------------------------------\n Host & Container \u2014 flex chain for scrollable detail view\n --------------------------------------------------------------------------- */\n\n:host {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n/* Slot passthrough now in <mj-page-header>; stat badges now via <mj-stat-badge>. */\n\n.connections-container {\n padding: 24px;\n max-width: 1400px;\n width: 100%;\n margin: 0 auto;\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow-y: auto;\n box-sizing: border-box;\n}\n\n/* When detail or editor view is active, prevent container scrolling\n so the inner .detail-table-body handles its own scroll */\n.connections-container.detail-active,\n.connections-container.editor-active {\n overflow: hidden;\n}\n\n/* ---------------------------------------------------------------------------\n Loading & Empty States\n --------------------------------------------------------------------------- */\n\n.loading-container {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 300px;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 400px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.empty-icon {\n font-size: 48px;\n color: var(--mj-text-disabled);\n margin-bottom: 16px;\n}\n\n.empty-state h3 {\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin: 0 0 8px;\n}\n\n.empty-state p {\n font-size: 14px;\n margin: 0 0 24px;\n}\n\n/* ---------------------------------------------------------------------------\n Card Grid\n --------------------------------------------------------------------------- */\n\n.card-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 20px;\n}\n\n/* ---------------------------------------------------------------------------\n Connection Card\n --------------------------------------------------------------------------- */\n\n.connection-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);\n transition: box-shadow 0.2s ease, transform 0.2s ease;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n}\n\n.connection-card:hover {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n transform: translateY(-2px);\n}\n\n/* Card Header */\n.card-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 16px 0;\n}\n\n.icon-circle {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n flex-shrink: 0;\n}\n\n.icon-large {\n font-size: 22px;\n}\n\n/* Status Badge */\n.status-badge {\n font-size: 12px;\n font-weight: 600;\n padding: 4px 10px;\n border-radius: 20px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-badge-connected {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.status-badge-error {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.status-badge-inactive {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-muted);\n}\n\n.status-badge-syncing {\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n/* Card Body */\n.card-body {\n padding: 12px 16px;\n flex: 1;\n}\n\n.card-name {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin-bottom: 2px;\n}\n\n.card-company {\n font-size: 14px;\n color: var(--mj-text-disabled);\n margin-bottom: 10px;\n}\n\n.card-meta {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 6px;\n}\n\n.meta-separator {\n margin: 0 6px;\n}\n\n.meta-label {\n font-weight: 500;\n}\n\n.card-sync-info {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n}\n\n.card-sync-info i {\n margin-right: 4px;\n color: var(--mj-text-disabled);\n}\n\n/* Card inline test result */\n.card-test-result {\n font-size: 12px;\n padding: 6px 10px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 8px;\n}\n\n.card-test-result.test-success {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.card-test-result.test-failure {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.card-test-result span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Card Footer */\n.card-footer {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.card-footer button {\n font-size: 13px;\n}\n\n/* Sync dropdown menu */\n.sync-menu-wrapper {\n position: relative;\n display: inline-flex;\n}\n\n.sync-caret {\n font-size: 10px;\n margin-left: 4px;\n opacity: 0.8;\n}\n\n.sync-dropdown {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n z-index: 1000;\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n min-width: 220px;\n overflow: hidden;\n}\n\n.sync-dropdown-left {\n left: auto;\n right: 0;\n}\n\n.sync-dropdown-group {\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.sync-dropdown-group:last-child {\n border-bottom: none;\n}\n\n.sync-dropdown-label {\n display: block;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--mj-text-muted);\n padding: 0 12px 4px;\n}\n\n.sync-dropdown-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 7px 12px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-primary);\n text-align: left;\n transition: background 0.12s;\n}\n\n.sync-dropdown-item:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.sync-dropdown-item i {\n width: 16px;\n text-align: center;\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n}\n\n/* Card Delete Button */\n.card-delete-btn {\n margin-left: auto;\n background: none;\n border: 1px solid transparent;\n cursor: pointer;\n padding: 4px 8px;\n border-radius: 6px;\n color: var(--mj-text-disabled);\n font-size: 14px;\n transition: all 0.15s;\n}\n\n.card-delete-btn:hover {\n background: var(--mj-status-error-bg);\n border-color: var(--mj-status-error-border);\n color: var(--mj-status-error);\n}\n\n.menu-trigger:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.card-menu-dropdown {\n position: absolute;\n right: 0;\n top: 100%;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);\n min-width: 160px;\n z-index: 50;\n padding: 4px;\n}\n\n.menu-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 8px 12px;\n border: none;\n background: none;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-secondary);\n border-radius: 6px;\n transition: background 0.15s;\n text-align: left;\n}\n\n.menu-item:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.menu-item i {\n width: 16px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.menu-item-danger {\n color: var(--mj-status-error);\n}\n\n.menu-item-danger i {\n color: var(--mj-status-error);\n}\n\n.menu-item-danger:hover {\n background: var(--mj-status-error-bg);\n}\n\n/* ---------------------------------------------------------------------------\n New Connection Card\n --------------------------------------------------------------------------- */\n\n.new-connection-card {\n border: 2px dashed var(--mj-border-strong);\n background: var(--mj-bg-page);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 200px;\n transition: background 0.2s, border-color 0.2s;\n}\n\n.new-connection-card:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-brand-primary);\n box-shadow: none;\n transform: none;\n}\n\n.new-card-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n}\n\n.new-card-icon {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: var(--mj-bg-surface-active);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 24px;\n color: var(--mj-text-muted);\n transition: background 0.2s, color 0.2s;\n}\n\n.new-connection-card:hover .new-card-icon {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.new-card-label {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-muted);\n}\n\n.new-connection-card:hover .new-card-label {\n color: var(--mj-brand-primary);\n}\n\n/* ---------------------------------------------------------------------------\n Wizard (inline, replaces card grid)\n --------------------------------------------------------------------------- */\n\n.wizard-inline {\n display: flex;\n flex-direction: column;\n height: 100%;\n max-width: 720px;\n margin: 0 auto;\n}\n\n/* Wizard Header */\n.wizard-header {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 0 0 20px;\n}\n\n.wizard-back-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n padding: 6px 10px;\n border-radius: 6px;\n transition: background 0.15s, color 0.15s;\n}\n\n.wizard-back-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.wizard-title {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n}\n\n/* ---------------------------------------------------------------------------\n Step Indicator\n --------------------------------------------------------------------------- */\n\n.step-indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px 32px;\n gap: 0;\n}\n\n.step-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n position: relative;\n}\n\n.step-circle {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n font-weight: 600;\n background: var(--mj-bg-surface-active);\n color: var(--mj-text-disabled);\n border: 2px solid var(--mj-border-default);\n transition: all 0.2s;\n}\n\n.step-active .step-circle {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n\n.step-completed .step-circle {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n border-color: var(--mj-status-success);\n}\n\n.step-label {\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.step-active .step-label {\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.step-completed .step-label {\n color: var(--mj-status-success);\n}\n\n.step-line {\n width: 48px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 8px;\n margin-bottom: 20px;\n transition: background 0.2s;\n}\n\n.step-line-active {\n background: var(--mj-status-success);\n}\n\n/* ---------------------------------------------------------------------------\n Wizard Body\n --------------------------------------------------------------------------- */\n\n.wizard-body {\n flex: 1;\n overflow-y: auto;\n padding: 0 24px 24px;\n}\n\n.step-content {\n min-height: 300px;\n}\n\n.step-content-centered {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n}\n\n.step-title {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 20px;\n}\n\n.step-content-centered .step-title {\n margin-bottom: 32px;\n}\n\n/* Search bar */\n.search-bar {\n position: relative;\n margin-bottom: 20px;\n}\n\n.search-icon {\n position: absolute;\n left: 14px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n.search-input {\n width: 100%;\n padding: 10px 14px 10px 40px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n}\n\n.search-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.search-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n/* No integrations */\n.no-integrations {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n color: var(--mj-text-disabled);\n text-align: center;\n}\n\n.no-integrations i {\n font-size: 36px;\n margin-bottom: 12px;\n}\n\n.no-integrations p {\n font-size: 16px;\n font-weight: 500;\n color: var(--mj-text-muted);\n margin: 0 0 4px;\n}\n\n.no-integrations-hint {\n font-size: 13px;\n}\n\n/* Integration picker grid */\n.integration-picker-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n}\n\n.integration-picker-card {\n border: 2px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 16px;\n cursor: pointer;\n text-align: center;\n transition: border-color 0.2s, background 0.15s;\n}\n\n.integration-picker-card:hover {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-page);\n}\n\n.integration-picker-card.picker-selected {\n border-color: var(--mj-brand-primary);\n background: var(--mj-status-info-bg);\n}\n\n.picker-icon-circle {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n margin: 0 auto 10px;\n font-size: 18px;\n}\n\n.picker-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n}\n\n.picker-description {\n font-size: 12px;\n color: var(--mj-text-disabled);\n line-height: 1.3;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n/* ---------------------------------------------------------------------------\n Form Controls (Step 2)\n --------------------------------------------------------------------------- */\n\n.form-group {\n margin-bottom: 20px;\n}\n\n.form-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.optional-label {\n font-weight: 400;\n color: var(--mj-text-disabled);\n}\n\n.form-input {\n width: 100%;\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n}\n\n.form-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.form-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.form-input:disabled {\n background: var(--mj-bg-page);\n color: var(--mj-text-muted);\n}\n\n.form-textarea {\n resize: vertical;\n min-height: 72px;\n}\n\n.form-hint {\n font-size: 13px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n}\n\n/* Credential section */\n.credential-selected {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n border-radius: 8px;\n}\n\n.credential-info {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-status-success-text);\n font-size: 14px;\n font-weight: 500;\n}\n\n.credential-info i {\n color: var(--mj-status-success);\n}\n\n.credential-clear {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--mj-text-disabled);\n font-size: 14px;\n padding: 4px;\n border-radius: 4px;\n transition: color 0.15s;\n}\n\n.credential-clear:hover {\n color: var(--mj-status-error);\n}\n\n.credential-actions {\n display: flex;\n gap: 8px;\n}\n\n.credential-actions button {\n font-size: 13px;\n}\n\n.credential-loading {\n padding: 16px 0;\n}\n\n.credential-list {\n margin-top: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.credential-list-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n cursor: pointer;\n font-size: 14px;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n}\n\n.credential-list-item:last-child {\n border-bottom: none;\n}\n\n.credential-list-item:hover {\n background: var(--mj-bg-page);\n}\n\n.credential-list-item i {\n color: var(--mj-text-disabled);\n}\n\n/* ---------------------------------------------------------------------------\n Test Connection (Step 3)\n --------------------------------------------------------------------------- */\n\n.test-prompt {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.test-hint {\n font-size: 14px;\n color: var(--mj-text-disabled);\n margin: 0;\n}\n\n.test-running {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n color: var(--mj-brand-primary);\n}\n\n.test-spinner {\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.test-running p {\n font-size: 15px;\n font-weight: 500;\n margin: 0;\n}\n\n/* Test result */\n.test-result {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n padding: 24px;\n border-radius: 12px;\n max-width: 400px;\n}\n\n.test-result-success {\n background: var(--mj-status-success-bg);\n}\n\n.test-result-failure {\n background: var(--mj-status-error-bg);\n}\n\n.test-result-icon {\n font-size: 48px;\n animation: scaleIn 0.3s ease-out;\n}\n\n.test-result-success .test-result-icon {\n color: var(--mj-status-success);\n}\n\n.test-result-failure .test-result-icon {\n color: var(--mj-status-error);\n}\n\n@keyframes scaleIn {\n from {\n transform: scale(0.5);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n.test-result-message {\n font-size: 15px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n text-align: center;\n}\n\n.test-result-detail {\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.test-retry-btn {\n margin-top: 4px;\n}\n\n/* Toggle switch */\n.toggle-switch {\n position: relative;\n display: inline-block;\n width: 44px;\n height: 24px;\n flex-shrink: 0;\n}\n\n.toggle-switch input {\n opacity: 0;\n width: 0;\n height: 0;\n}\n\n.toggle-slider {\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-border-strong);\n border-radius: 24px;\n transition: background 0.2s;\n}\n\n.toggle-slider::before {\n content: '';\n position: absolute;\n height: 18px;\n width: 18px;\n left: 3px;\n bottom: 3px;\n background: var(--mj-bg-surface);\n border-radius: 50%;\n transition: transform 0.2s;\n}\n\n.toggle-switch input:checked + .toggle-slider {\n background: var(--mj-brand-primary);\n}\n\n.toggle-switch input:checked + .toggle-slider::before {\n transform: translateX(20px);\n}\n\n/* ---------------------------------------------------------------------------\n Wizard Footer\n --------------------------------------------------------------------------- */\n\n.wizard-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 24px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.footer-left {\n display: flex;\n align-items: center;\n}\n\n.footer-right {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n/* ---------------------------------------------------------------------------\n Responsive\n --------------------------------------------------------------------------- */\n\n@media (max-width: 768px) {\n .connections-container {\n padding: 16px;\n }\n\n .card-grid {\n grid-template-columns: 1fr;\n }\n\n .integration-picker-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .step-indicator {\n padding: 16px;\n overflow-x: auto;\n }\n\n .step-line {\n width: 24px;\n }\n\n .credential-actions {\n flex-direction: column;\n }\n}\n\n@media (max-width: 480px) {\n .integration-picker-grid {\n grid-template-columns: 1fr;\n }\n\n .card-footer {\n flex-wrap: wrap;\n }\n}\n\n/* ---------------------------------------------------------------------------\n Delete confirmation overlay\n --------------------------------------------------------------------------- */\n\n.delete-confirm-overlay {\n position: absolute;\n inset: 0;\n background: rgba(255, 255, 255, 0.95);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 5;\n border-radius: 12px;\n animation: fadeIn 150ms ease;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.delete-confirm-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 10px;\n padding: 20px;\n text-align: center;\n}\n\n.delete-warn-icon {\n font-size: 28px;\n color: var(--mj-status-error);\n}\n\n.delete-confirm-text {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n max-width: 220px;\n}\n\n.delete-confirm-actions {\n display: flex;\n gap: 8px;\n margin-top: 4px;\n}\n\n/* ---------------------------------------------------------------------------\n Edit panel (slide-in)\n --------------------------------------------------------------------------- */\n\n.edit-panel-backdrop {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.1);\n z-index: 99;\n opacity: 0;\n pointer-events: none;\n transition: opacity 300ms ease;\n}\n\n.edit-panel-backdrop.open {\n opacity: 1;\n pointer-events: auto;\n}\n\n.edit-panel {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n width: 400px;\n max-width: 100%;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n box-shadow: -8px 0 24px rgba(0, 0, 0, 0.08);\n z-index: 100;\n transform: translateX(100%);\n transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.edit-panel.open {\n transform: translateX(0);\n}\n\n.edit-panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.edit-panel-title {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.edit-icon-circle {\n width: 32px;\n height: 32px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 14px;\n}\n\n.edit-close-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-disabled);\n cursor: pointer;\n font-size: 14px;\n transition: all 150ms ease;\n}\n\n.edit-close-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.edit-panel-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n}\n\n.edit-panel-body {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.edit-form-group {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.edit-form-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.edit-form-input {\n height: 36px;\n padding: 0 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n transition: border-color 150ms ease;\n}\n\n.edit-form-input:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.edit-readonly-field {\n padding: 8px 12px;\n background: var(--mj-bg-page);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.edit-toggle-row {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.edit-toggle-label {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n}\n\n.edit-toggle-label.active {\n color: var(--mj-status-success);\n}\n\n.edit-credential-selected {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-page);\n}\n\n.edit-credential-info {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.edit-credential-info i {\n color: var(--mj-brand-primary);\n}\n\n.edit-credential-clear {\n width: 24px;\n height: 24px;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--mj-text-disabled);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n transition: all 150ms ease;\n}\n\n.edit-credential-clear:hover {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.edit-credential-actions {\n display: flex;\n gap: 8px;\n}\n\n.edit-credential-list {\n display: flex;\n flex-direction: column;\n gap: 2px;\n margin-top: 6px;\n max-height: 180px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n}\n\n.edit-credential-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: background 150ms ease;\n}\n\n.edit-credential-item:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.edit-credential-item i {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.edit-panel-footer {\n display: flex;\n gap: 8px;\n padding: 16px 20px;\n border-top: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n/* ---------------------------------------------------------------------------\n Card clickable area\n --------------------------------------------------------------------------- */\n\n.card-clickable {\n cursor: pointer;\n}\n\n/* ---------------------------------------------------------------------------\n Detail View (entity maps for a selected integration)\n --------------------------------------------------------------------------- */\n\n.detail-view {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.detail-header {\n display: flex;\n align-items: center;\n gap: 16px;\n padding-bottom: 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.detail-header-info {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.detail-header-text {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.detail-title {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.detail-subtitle {\n font-size: 13px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.detail-header-actions {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n/* Schedule section */\n.schedule-section {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 16px 20px;\n margin-bottom: 16px;\n}\n\n.schedule-section-header {\n margin-bottom: 12px;\n}\n\n.schedule-section-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.8rem;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.schedule-section-title i {\n color: var(--mj-brand-primary);\n}\n\n.schedule-empty {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 0;\n}\n\n.schedule-empty-text {\n font-size: 0.85rem;\n color: var(--mj-text-disabled);\n}\n\n.schedule-create-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: linear-gradient(135deg, var(--mj-brand-primary) 0%, var(--mj-brand-primary-active) 100%);\n color: white;\n border: none;\n border-radius: 8px;\n cursor: pointer;\n font-size: 0.8rem;\n font-weight: 600;\n transition: all 0.2s ease;\n}\n\n.schedule-create-btn:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n/* Detail toolbar */\n.detail-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n}\n\n.detail-toolbar-left {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-map-count {\n font-size: 13px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.detail-search {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n}\n\n.detail-search i {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.detail-search input {\n border: none;\n outline: none;\n background: transparent;\n font-size: 13px;\n color: var(--mj-text-primary);\n width: 200px;\n}\n\n.detail-search input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n/* Add Map button */\n.add-map-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-brand-primary-hover);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n white-space: nowrap;\n}\n\n.add-map-btn:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n}\n\n.add-map-btn.active {\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n border-color: var(--mj-brand-primary);\n}\n\n.apply-all-btn {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n\n.apply-all-btn:hover {\n background: var(--mj-brand-primary-hover);\n border-color: var(--mj-brand-primary-hover);\n}\n\n.apply-all-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.add-map-btn-lg {\n margin-top: 16px;\n padding: 10px 20px;\n font-size: 14px;\n}\n\n/* Add map inline panel */\n.add-map-panel {\n padding: 16px;\n margin-bottom: 12px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n animation: fadeIn 200ms ease;\n}\n\n.add-map-row {\n display: flex;\n align-items: flex-end;\n gap: 12px;\n}\n\n.add-map-field {\n flex: 1;\n min-width: 0;\n}\n\n.add-map-label {\n display: block;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n margin-bottom: 6px;\n}\n\n.add-map-select {\n width: 100%;\n height: 34px;\n padding: 0 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n cursor: pointer;\n}\n\n.add-map-select:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.add-map-direction-col {\n flex-shrink: 0;\n}\n\n.add-map-direction-btns {\n display: flex;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.add-map-direction-btns button {\n padding: 7px 12px;\n border: none;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n font-size: 13px;\n cursor: pointer;\n transition: all 150ms ease;\n border-right: 1px solid var(--mj-border-default);\n}\n\n.add-map-direction-btns button:last-child {\n border-right: none;\n}\n\n.add-map-direction-btns button:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.add-map-direction-btns button.active {\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n}\n\n.add-map-actions {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n}\n\n.add-map-save-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 16px;\n border: none;\n border-radius: 6px;\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n white-space: nowrap;\n}\n\n.add-map-save-btn:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.add-map-save-btn:disabled {\n opacity: 0.5;\n cursor: default;\n}\n\n.add-map-cancel-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 34px;\n height: 34px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n cursor: pointer;\n font-size: 13px;\n transition: all 150ms ease;\n}\n\n.add-map-cancel-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.add-map-loading {\n font-size: 12px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n}\n\n.add-map-loading i {\n color: var(--mj-brand-primary);\n margin-right: 4px;\n}\n\n.add-map-hint {\n font-size: 12px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n font-style: italic;\n}\n\n/* Entity field needs more room for tree dropdown */\n.add-map-entity-field {\n flex: 2;\n min-width: 280px;\n}\n\n/* Entity picker row: tree dropdown + New button side by side */\n.entity-picker-row {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.entity-picker-row mj-tree-dropdown {\n flex: 1;\n min-width: 0;\n}\n\n.new-entity-btn {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 7px 12px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n background: var(--mj-brand-primary-subtle);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 6px;\n cursor: pointer;\n white-space: nowrap;\n transition: all 0.15s ease;\n}\n\n.new-entity-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n/* ---------------------------------------------------------------------------\n Sync Result Banner\n --------------------------------------------------------------------------- */\n\n.sync-result-banner {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n margin-bottom: 12px;\n animation: fadeIn 200ms ease;\n}\n\n.sync-result-banner.sync-success {\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n color: var(--mj-status-success-text);\n}\n\n.sync-result-banner.sync-failure {\n background: var(--mj-status-error-bg);\n border: 1px solid var(--mj-status-error-border);\n color: var(--mj-status-error-text);\n}\n\n/* ---------------------------------------------------------------------------\n Auto-Map Schema Panel\n --------------------------------------------------------------------------- */\n\n.auto-map-header {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 12px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.auto-map-header i {\n color: var(--mj-brand-primary);\n}\n\n.auto-map-result {\n margin-top: 12px;\n padding: 10px 14px;\n border-radius: 6px;\n font-size: 13px;\n}\n\n.auto-map-result.auto-map-success {\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n color: var(--mj-status-success-text);\n}\n\n.auto-map-result.auto-map-partial {\n background: var(--mj-status-warning-bg);\n border: 1px solid var(--mj-status-warning-border);\n color: var(--mj-status-warning-text);\n}\n\n.auto-map-result.auto-map-failure {\n background: var(--mj-status-error-bg);\n border: 1px solid var(--mj-status-error-border);\n color: var(--mj-status-error-text);\n}\n\n.auto-map-result-summary {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n}\n\n.auto-map-errors {\n margin-top: 6px;\n font-size: 12px;\n}\n\n.auto-map-error {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 2px 0;\n}\n\n/* ---------------------------------------------------------------------------\n New Entity Dialog\n --------------------------------------------------------------------------- */\n\n.new-entity-backdrop {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: 1000;\n animation: fadeIn 0.15s ease;\n}\n\n.new-entity-dialog {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 640px;\n max-width: 90vw;\n max-height: 85vh;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-lg);\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n animation: fadeIn 0.2s ease;\n}\n\n.new-entity-dialog-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.new-entity-dialog-header h3 {\n margin: 0;\n font-size: var(--mj-text-base);\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.new-entity-dialog-close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n background: transparent;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.new-entity-dialog-close:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n}\n\n.new-entity-dialog-body {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.new-entity-dialog-desc {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n.new-entity-dialog-form {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.new-entity-dialog-row {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n}\n\n.new-entity-dialog-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 120px;\n}\n\n.new-entity-dialog-field-wide {\n flex: 1;\n}\n\n.new-entity-dialog-label {\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.new-entity-dialog-input {\n padding: 8px 12px;\n font-size: var(--mj-text-sm);\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n transition: border-color 0.15s ease;\n}\n\n.new-entity-dialog-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.1);\n}\n\n.new-entity-dialog-dot {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n padding-bottom: 6px;\n user-select: none;\n}\n\n.new-entity-dialog-value {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n padding: 8px 0 4px;\n}\n\n.new-entity-dialog-hint {\n font-style: italic;\n color: var(--mj-text-disabled);\n font-weight: 400;\n}\n\n.new-entity-dialog-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n padding: 12px 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.new-entity-preview-btn {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 8px 16px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n background: var(--mj-brand-primary);\n border: none;\n border-radius: 6px;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s ease;\n}\n\n.new-entity-preview-btn:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n}\n\n.new-entity-preview-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.new-entity-dialog-done-btn {\n display: inline-flex;\n align-items: center;\n padding: 8px 16px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n background: transparent;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.new-entity-dialog-done-btn:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-text-disabled);\n}\n\n/* Next steps callout inside dialog */\n.new-entity-next-steps {\n background: var(--mj-brand-primary-subtle);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: var(--mj-radius-md);\n padding: 14px 16px;\n}\n\n.new-entity-next-steps h4 {\n margin: 0 0 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary-hover);\n}\n\n.new-entity-next-steps h4 i {\n margin-right: 6px;\n}\n\n.new-entity-next-steps ol {\n margin: 0;\n padding-left: 20px;\n font-size: 13px;\n color: var(--mj-brand-primary-hover);\n line-height: 1.7;\n}\n\n/* DDL copy button */\n.ddl-copy-btn {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n background: transparent;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.ddl-copy-btn:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-text-disabled);\n}\n\n/* DDL Preview */\n.ddl-warnings {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.ddl-warning {\n font-size: 12px;\n color: var(--mj-status-warning);\n background: var(--mj-status-warning-subtle);\n padding: 6px 10px;\n border-radius: var(--mj-radius-sm);\n border-left: 3px solid var(--mj-status-warning);\n}\n\n.ddl-warning i {\n margin-right: 4px;\n}\n\n.ddl-preview-block {\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n max-height: 300px;\n display: flex;\n flex-direction: column;\n}\n\n.ddl-preview-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.ddl-preview-code {\n margin: 0;\n padding: 12px 16px;\n font-size: 12px;\n font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;\n line-height: 1.6;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n overflow: auto;\n white-space: pre-wrap;\n word-break: break-word;\n flex: 1;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* Detail empty state */\n.detail-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 64px 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty i {\n font-size: 36px;\n margin-bottom: 12px;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty h3 {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin: 0 0 6px;\n}\n\n.detail-empty p {\n font-size: 13px;\n margin: 0;\n max-width: 400px;\n}\n\n/* Detail table */\n.detail-table-head {\n display: flex;\n align-items: center;\n padding: 8px 16px;\n background: var(--mj-bg-page);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px 8px 0 0;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-secondary);\n}\n\n.detail-table-body {\n border: 1px solid var(--mj-border-default);\n border-top: none;\n border-radius: 0 0 8px 8px;\n overflow-y: auto;\n flex: 1;\n min-height: 0;\n}\n\n.detail-map-row {\n display: flex;\n align-items: center;\n padding: 10px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n font-size: 13px;\n}\n\n.detail-map-row:last-child {\n border-bottom: none;\n}\n\n.detail-map-row:hover {\n background: var(--mj-bg-page);\n cursor: pointer;\n}\n\n.detail-map-row.sync-disabled {\n opacity: 0.5;\n}\n\n/* Column widths (shared between head and body) */\n.dt-col-toggle {\n width: 60px;\n flex-shrink: 0;\n}\n\n.dt-col-source {\n flex: 2;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.dt-col-direction {\n width: 80px;\n flex-shrink: 0;\n text-align: center;\n}\n\n.dt-col-dest {\n flex: 2;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--mj-text-primary);\n}\n\n.dt-col-meta {\n width: 80px;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 6px;\n justify-content: flex-end;\n}\n\n/* Direction badge */\n.direction-badge {\n font-size: 11px;\n font-weight: 600;\n padding: 2px 8px;\n border-radius: 4px;\n white-space: nowrap;\n}\n\n/* Clickable direction toggle button */\nbutton.direction-toggle {\n border: 1px solid transparent;\n cursor: pointer;\n transition: border-color 0.15s, box-shadow 0.15s;\n}\nbutton.direction-toggle:hover {\n border-color: var(--mj-border-strong);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.direction-badge.pull {\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n.direction-badge.push {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.direction-badge.bidirectional {\n background: var(--mj-status-warning-subtle);\n color: var(--mj-status-warning);\n}\n\n/* Create Tables list */\n.create-tables-list {\n max-height: 300px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n margin-top: 8px;\n background: var(--mj-bg-surface);\n}\n.create-tables-select-all {\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n font-weight: 600;\n}\n.create-tables-checkbox {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 12px;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n.create-tables-checkbox:hover {\n background: var(--mj-bg-surface-hover);\n}\n.create-tables-checkbox input[type=\"checkbox\"] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n.create-tables-name-hint {\n color: var(--mj-text-muted);\n font-size: 11px;\n margin-left: 8px;\n}\n.create-tables-filters {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 0;\n flex-wrap: wrap;\n}\n.create-tables-search {\n flex: 1 1 240px;\n min-width: 200px;\n}\n.create-tables-toggle {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n}\n.create-tables-toggle input[type=\"checkbox\"] {\n margin: 0;\n}\n.create-tables-badge {\n display: inline-block;\n margin-left: 6px;\n padding: 1px 6px;\n font-size: 10px;\n font-weight: 600;\n border-radius: 10px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n line-height: 1.4;\n}\n.create-tables-badge-custom {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n.create-tables-badge-registered {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n}\n.add-map-input {\n width: 100%;\n padding: 6px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n.add-map-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n/* Config badges */\n.detail-config-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border-radius: 4px;\n background: var(--mj-bg-surface-active);\n color: var(--mj-text-disabled);\n font-size: 11px;\n}\n\n/* Detail back button (icon-only) */\n.detail-back-btn {\n display: inline-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: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 16px;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n flex-shrink: 0;\n}\n\n.detail-back-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n/* Detail edit button (icon-only) */\n.detail-edit-btn {\n display: inline-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: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 14px;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n flex-shrink: 0;\n}\n\n.detail-edit-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n/* Chevron hint on entity map rows */\n.map-edit-hint {\n color: var(--mj-text-disabled);\n font-size: 11px;\n transition: color 0.15s;\n}\n\n.detail-map-row:hover .map-edit-hint {\n color: var(--mj-brand-primary);\n}\n\n/* Entity map editor header */\n.ve-header-title-inline {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 600;\n}\n\n.ve-source-label {\n color: var(--mj-brand-primary);\n}\n\n.ve-direction-icon {\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n.ve-dest-label {\n color: var(--mj-status-success);\n}\n\n.ve-stat-inline {\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.ve-stat-inline strong {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.detail-table-empty {\n padding: 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n/* ---------------------------------------------------------------------------\n Discovered Source Objects Section\n --------------------------------------------------------------------------- */\n\n.discovered-objects-section {\n margin: 12px 0;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n overflow: hidden;\n}\n\n.discovered-objects-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.discovered-objects-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.discovered-objects-title i {\n color: var(--mj-brand-primary);\n}\n\n.discovered-count {\n font-weight: 400;\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n.discovered-objects-actions {\n display: flex;\n gap: 8px;\n}\n\n.discovered-action-btn {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 3px 10px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n}\n\n.discovered-action-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.discovered-action-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.discovered-loading,\n.discovered-empty {\n padding: 16px;\n text-align: center;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.discovered-loading i {\n margin-right: 6px;\n}\n\n.discovered-objects-list {\n max-height: 280px;\n overflow-y: auto;\n}\n\n.discovered-object-row {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 7px 14px;\n cursor: pointer;\n transition: background 0.1s;\n border-bottom: 1px solid var(--mj-border-subtle);\n font-size: 13px;\n}\n\n.discovered-object-row:last-child {\n border-bottom: none;\n}\n\n.discovered-object-row:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.discovered-object-row.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface));\n}\n\n.discovered-object-row input[type=\"checkbox\"] {\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n accent-color: var(--mj-brand-primary);\n cursor: pointer;\n}\n\n.discovered-object-name {\n flex: 1;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.discovered-object-api-name {\n flex: 1;\n color: var(--mj-text-muted);\n font-size: 12px;\n font-family: monospace;\n}\n\n.discovered-object-badges {\n display: flex;\n gap: 4px;\n}\n\n.discovered-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border-radius: 4px;\n font-size: 10px;\n}\n\n.discovered-badge.incremental {\n color: var(--mj-status-success);\n background: var(--mj-status-success-bg);\n}\n\n.discovered-badge.writable {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n"] }]
3130
3136
  }], null, { entityTreeDropdown: [{
3131
3137
  type: ViewChild,
3132
3138
  args: ['entityTreeDropdown']