@memberjunction/ng-dashboards 5.35.0 → 5.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.js +3 -3
  2. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  3. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +22 -1
  4. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  5. package/dist/AI/components/analytics/ai-analytics-resource.component.js +157 -137
  6. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  7. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +28 -0
  8. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  9. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +2075 -2068
  10. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  11. package/dist/AI/components/models/model-management.component.js +4 -4
  12. package/dist/AI/components/models/model-management.component.js.map +1 -1
  13. package/dist/AI/components/prompts/prompt-management.component.js +3 -3
  14. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  15. package/dist/AI/components/tags/tags-resource.component.d.ts +15 -0
  16. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  17. package/dist/AI/components/tags/tags-resource.component.js +1411 -1424
  18. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  19. package/dist/APIKeys/api-keys-resource.component.d.ts +12 -8
  20. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  21. package/dist/APIKeys/api-keys-resource.component.js +329 -371
  22. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  23. package/dist/Actions/components/actions-overview.component.js +137 -142
  24. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  25. package/dist/Actions/components/execution-monitoring.component.js +111 -116
  26. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  27. package/dist/Admin/admin-data-schema.component.js +13 -65
  28. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  29. package/dist/Admin/admin-dev-tools-resource.component.js +13 -65
  30. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  31. package/dist/Admin/admin-identity-access.component.js +13 -65
  32. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  33. package/dist/Admin/admin-monitoring.component.js +13 -65
  34. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  35. package/dist/Admin/base-admin-container.component.d.ts +9 -7
  36. package/dist/Admin/base-admin-container.component.d.ts.map +1 -1
  37. package/dist/Admin/base-admin-container.component.js +26 -17
  38. package/dist/Admin/base-admin-container.component.js.map +1 -1
  39. package/dist/ApplicationRoles/application-roles-resource.component.js +74 -67
  40. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  41. package/dist/Communication/communication-new-message-resource.component.d.ts +93 -0
  42. package/dist/Communication/communication-new-message-resource.component.d.ts.map +1 -0
  43. package/dist/Communication/communication-new-message-resource.component.js +661 -0
  44. package/dist/Communication/communication-new-message-resource.component.js.map +1 -0
  45. package/dist/Credentials/components/credentials-categories-resource.component.js +152 -159
  46. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  47. package/dist/Credentials/components/credentials-types-resource.component.js +151 -155
  48. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  49. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +20 -21
  50. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  51. package/dist/DatabaseDesigner/components/entity-list.component.d.ts +2 -0
  52. package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -1
  53. package/dist/DatabaseDesigner/components/entity-list.component.js +131 -125
  54. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  55. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  56. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  57. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +7 -1
  58. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  59. package/dist/DevTools/app-state-inspector.component.d.ts +5 -0
  60. package/dist/DevTools/app-state-inspector.component.d.ts.map +1 -1
  61. package/dist/DevTools/app-state-inspector.component.js +46 -72
  62. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  63. package/dist/DevTools/class-registry.component.js +88 -100
  64. package/dist/DevTools/class-registry.component.js.map +1 -1
  65. package/dist/DevTools/event-monitor.component.js +158 -168
  66. package/dist/DevTools/event-monitor.component.js.map +1 -1
  67. package/dist/DevTools/graphql-console.component.js +257 -264
  68. package/dist/DevTools/graphql-console.component.js.map +1 -1
  69. package/dist/DevTools/layout-inspector.component.d.ts +5 -0
  70. package/dist/DevTools/layout-inspector.component.d.ts.map +1 -1
  71. package/dist/DevTools/layout-inspector.component.js +46 -64
  72. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  73. package/dist/DevTools/lazy-module-status.component.js +75 -84
  74. package/dist/DevTools/lazy-module-status.component.js.map +1 -1
  75. package/dist/DevTools/settings-explorer.component.js +76 -85
  76. package/dist/DevTools/settings-explorer.component.js.map +1 -1
  77. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +2 -0
  78. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  79. package/dist/EntityAdmin/entity-admin-dashboard.component.js +7 -3
  80. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  81. package/dist/Integration/components/activity/activity.component.js +97 -99
  82. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  83. package/dist/Integration/components/connections/connections.component.js +842 -855
  84. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  85. package/dist/Integration/components/pipelines/pipelines.component.js +502 -517
  86. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  87. package/dist/Integration/components/schedules/schedules.component.js +78 -89
  88. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  89. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +5 -0
  90. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  91. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +1120 -1128
  92. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  93. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +11 -0
  94. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
  95. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +606 -661
  96. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  97. package/dist/Lists/components/lists-browse-resource.component.d.ts +102 -0
  98. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  99. package/dist/Lists/components/lists-browse-resource.component.js +1179 -504
  100. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  101. package/dist/Lists/components/lists-operations-resource.component.d.ts +133 -3
  102. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  103. package/dist/Lists/components/lists-operations-resource.component.js +1527 -327
  104. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  105. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts +29 -0
  106. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts.map +1 -0
  107. package/dist/Lists/components/lists-shared-with-me-resource.component.js +77 -0
  108. package/dist/Lists/components/lists-shared-with-me-resource.component.js.map +1 -0
  109. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts +6 -0
  110. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
  111. package/dist/Lists/components/venn-diagram/venn-diagram.component.js +35 -7
  112. package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
  113. package/dist/Lists/index.d.ts +1 -0
  114. package/dist/Lists/index.d.ts.map +1 -1
  115. package/dist/Lists/index.js +1 -0
  116. package/dist/Lists/index.js.map +1 -1
  117. package/dist/Lists/services/list-set-operations.service.d.ts +93 -2
  118. package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
  119. package/dist/Lists/services/list-set-operations.service.js +236 -10
  120. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  121. package/dist/MCP/mcp-dashboard.component.js +19 -19
  122. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  123. package/dist/Scheduling/scheduling-dashboard.component.js +58 -60
  124. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  125. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +13 -3
  126. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  127. package/dist/SystemDiagnostics/system-diagnostics.component.js +1007 -1252
  128. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  129. package/dist/Testing/components/testing-explorer.component.d.ts +31 -6
  130. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  131. package/dist/Testing/components/testing-explorer.component.js +543 -629
  132. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  133. package/dist/Testing/testing-dashboard.component.js +50 -49
  134. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  135. package/dist/ai-dashboards.module.d.ts +1 -1
  136. package/dist/ai-dashboards.module.d.ts.map +1 -1
  137. package/dist/ai-dashboards.module.js +16 -1
  138. package/dist/ai-dashboards.module.js.map +1 -1
  139. package/dist/communication-dashboards.module.d.ts +9 -7
  140. package/dist/communication-dashboards.module.d.ts.map +1 -1
  141. package/dist/communication-dashboards.module.js +13 -4
  142. package/dist/communication-dashboards.module.js.map +1 -1
  143. package/dist/core-dashboards.module.d.ts +1 -1
  144. package/dist/core-dashboards.module.d.ts.map +1 -1
  145. package/dist/core-dashboards.module.js +16 -1
  146. package/dist/core-dashboards.module.js.map +1 -1
  147. package/dist/lists-dashboards.module.d.ts +10 -9
  148. package/dist/lists-dashboards.module.d.ts.map +1 -1
  149. package/dist/lists-dashboards.module.js +13 -2
  150. package/dist/lists-dashboards.module.js.map +1 -1
  151. package/dist/public-api.d.ts +1 -0
  152. package/dist/public-api.d.ts.map +1 -1
  153. package/dist/public-api.js +1 -0
  154. package/dist/public-api.js.map +1 -1
  155. package/dist/testing-dashboards.module.d.ts +1 -1
  156. package/dist/testing-dashboards.module.d.ts.map +1 -1
  157. package/dist/testing-dashboards.module.js +13 -1
  158. package/dist/testing-dashboards.module.js.map +1 -1
  159. package/package.json +53 -52
@@ -24,53 +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_2_Template(rf, ctx) { if (rf & 1) {
28
- i0.ɵɵelementStart(0, "div", 2);
29
- i0.ɵɵelement(1, "mj-stat-badge", 13);
30
- i0.ɵɵelementEnd();
31
- } if (rf & 2) {
32
- const ctx_r0 = i0.ɵɵnextContext();
33
- i0.ɵɵadvance();
34
- i0.ɵɵproperty("Count", ctx_r0.Connections.length)("Label", ctx_r0.Connections.length === 1 ? "integration" : "integrations");
35
- } }
36
- function ConnectionsComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
37
- const _r2 = i0.ɵɵgetCurrentView();
38
- i0.ɵɵelementStart(0, "button", 14);
39
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OpenWizard()); });
40
- i0.ɵɵelement(1, "i", 15);
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);
41
32
  i0.ɵɵtext(2, " Add Integration ");
42
33
  i0.ɵɵelementEnd();
43
34
  } }
44
- function ConnectionsComponent_Conditional_8_Conditional_0_Template(rf, ctx) { if (rf & 1) {
45
- i0.ɵɵelementStart(0, "div", 16);
46
- i0.ɵɵelement(1, "mj-loading", 19);
35
+ function ConnectionsComponent_Conditional_7_Conditional_0_Template(rf, ctx) { if (rf & 1) {
36
+ i0.ɵɵelementStart(0, "div", 14);
37
+ i0.ɵɵelement(1, "mj-loading", 17);
47
38
  i0.ɵɵelementEnd();
48
39
  } }
49
- function ConnectionsComponent_Conditional_8_Conditional_1_Template(rf, ctx) { if (rf & 1) {
40
+ function ConnectionsComponent_Conditional_7_Conditional_1_Template(rf, ctx) { if (rf & 1) {
50
41
  const _r3 = i0.ɵɵgetCurrentView();
51
- i0.ɵɵelementStart(0, "div", 17);
52
- i0.ɵɵelement(1, "i", 20);
42
+ i0.ɵɵelementStart(0, "div", 15);
43
+ i0.ɵɵelement(1, "i", 18);
53
44
  i0.ɵɵelementStart(2, "h3");
54
45
  i0.ɵɵtext(3, "No integrations yet");
55
46
  i0.ɵɵelementEnd();
56
47
  i0.ɵɵelementStart(4, "p");
57
48
  i0.ɵɵtext(5, "Connect your first external system to start syncing data.");
58
49
  i0.ɵɵelementEnd();
59
- i0.ɵɵelementStart(6, "button", 21);
60
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_1_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.OpenWizard()); });
61
- i0.ɵɵelement(7, "i", 15);
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);
62
53
  i0.ɵɵtext(8, " Add Your First Integration ");
63
54
  i0.ɵɵelementEnd()();
64
55
  } }
65
- function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
66
- i0.ɵɵelement(0, "i", 50);
56
+ function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
57
+ i0.ɵɵelement(0, "i", 48);
67
58
  } }
68
- function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_22_Conditional_2_Template(rf, ctx) { if (rf & 1) {
69
- i0.ɵɵelement(0, "i", 51);
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);
70
61
  } }
71
- function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_22_Template(rf, ctx) { if (rf & 1) {
72
- i0.ɵɵelementStart(0, "div", 49);
73
- i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_22_Conditional_1_Template, 1, 0, "i", 50)(2, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_22_Conditional_2_Template, 1, 0, "i", 51);
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);
74
65
  i0.ɵɵelementStart(3, "span");
75
66
  i0.ɵɵtext(4);
76
67
  i0.ɵɵelementEnd()();
@@ -82,336 +73,336 @@ function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_22_T
82
73
  i0.ɵɵadvance(3);
83
74
  i0.ɵɵtextInterpolate(testResult_r7.Message);
84
75
  } }
85
- function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_23_Conditional_7_Template(rf, ctx) { if (rf & 1) {
86
- i0.ɵɵelement(0, "i", 44);
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);
87
78
  i0.ɵɵtext(1, " Deleting... ");
88
79
  } }
89
- function ConnectionsComponent_Conditional_8_Conditional_2_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) {
90
81
  i0.ɵɵtext(0, " Delete ");
91
82
  } }
92
- function ConnectionsComponent_Conditional_8_Conditional_2_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) {
93
84
  const _r8 = i0.ɵɵgetCurrentView();
94
- i0.ɵɵelementStart(0, "div", 41)(1, "div", 52);
95
- i0.ɵɵelement(2, "i", 53);
96
- i0.ɵɵelementStart(3, "span", 54);
85
+ i0.ɵɵelementStart(0, "div", 39)(1, "div", 50);
86
+ i0.ɵɵelement(2, "i", 51);
87
+ i0.ɵɵelementStart(3, "span", 52);
97
88
  i0.ɵɵtext(4, "Delete this integration and all its entity maps?");
98
89
  i0.ɵɵelementEnd();
99
- i0.ɵɵelementStart(5, "div", 55)(6, "button", 56);
100
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_23_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r8); const summary_r6 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.ConfirmDelete(summary_r6.Integration.ID)); });
101
- i0.ɵɵconditionalCreate(7, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_23_Conditional_7_Template, 2, 0)(8, ConnectionsComponent_Conditional_8_Conditional_2_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);
102
93
  i0.ɵɵelementEnd();
103
- i0.ɵɵelementStart(9, "button", 45);
104
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_23_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.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()); });
105
96
  i0.ɵɵtext(10, " Cancel ");
106
97
  i0.ɵɵelementEnd()()()();
107
98
  } if (rf & 2) {
108
- const ctx_r0 = i0.ɵɵnextContext(4);
99
+ const ctx_r1 = i0.ɵɵnextContext(4);
109
100
  i0.ɵɵadvance(6);
110
- i0.ɵɵproperty("disabled", ctx_r0.IsDeleting);
101
+ i0.ɵɵproperty("disabled", ctx_r1.IsDeleting);
111
102
  i0.ɵɵadvance();
112
- i0.ɵɵconditional(ctx_r0.IsDeleting ? 7 : 8);
103
+ i0.ɵɵconditional(ctx_r1.IsDeleting ? 7 : 8);
113
104
  } }
114
- function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_26_Template(rf, ctx) { if (rf & 1) {
115
- i0.ɵɵelement(0, "i", 44);
105
+ function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_26_Template(rf, ctx) { if (rf & 1) {
106
+ i0.ɵɵelement(0, "i", 42);
116
107
  } }
117
- function ConnectionsComponent_Conditional_8_Conditional_2_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) {
118
109
  i0.ɵɵtext(0, " Test ");
119
110
  } }
120
- function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_30_Conditional_2_Template(rf, ctx) { if (rf & 1) {
121
- i0.ɵɵelement(0, "i", 44);
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);
122
113
  i0.ɵɵtext(1, " Syncing... ");
123
114
  } }
124
- function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_30_Conditional_3_Template(rf, ctx) { if (rf & 1) {
125
- i0.ɵɵelement(0, "i", 39);
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);
126
117
  i0.ɵɵtext(1, " Sync ");
127
- i0.ɵɵelement(2, "i", 59);
118
+ i0.ɵɵelement(2, "i", 57);
128
119
  } }
129
- function ConnectionsComponent_Conditional_8_Conditional_2_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) {
130
121
  const _r10 = i0.ɵɵgetCurrentView();
131
- i0.ɵɵelementStart(0, "div", 58)(1, "div", 60)(2, "span", 61);
122
+ i0.ɵɵelementStart(0, "div", 56)(1, "div", 58)(2, "span", 59);
132
123
  i0.ɵɵtext(3, "Pull (External \u2192 MJ)");
133
124
  i0.ɵɵelementEnd();
134
- i0.ɵɵelementStart(4, "button", 62);
135
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_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_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(summary_r6.Integration.ID, false, "Pull", $event)); });
136
- i0.ɵɵelement(5, "i", 63);
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);
137
128
  i0.ɵɵtext(6, " Incremental Pull ");
138
129
  i0.ɵɵelementEnd();
139
- i0.ɵɵelementStart(7, "button", 62);
140
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_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_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(summary_r6.Integration.ID, true, "Pull", $event)); });
141
- i0.ɵɵelement(8, "i", 64);
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);
142
133
  i0.ɵɵtext(9, " Full Pull ");
143
134
  i0.ɵɵelementEnd()();
144
- i0.ɵɵelementStart(10, "div", 60)(11, "span", 61);
135
+ i0.ɵɵelementStart(10, "div", 58)(11, "span", 59);
145
136
  i0.ɵɵtext(12, "Push (MJ \u2192 External)");
146
137
  i0.ɵɵelementEnd();
147
- i0.ɵɵelementStart(13, "button", 62);
148
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_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_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(summary_r6.Integration.ID, false, "Push", $event)); });
149
- i0.ɵɵelement(14, "i", 65);
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);
150
141
  i0.ɵɵtext(15, " Incremental Push ");
151
142
  i0.ɵɵelementEnd();
152
- i0.ɵɵelementStart(16, "button", 62);
153
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_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_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(summary_r6.Integration.ID, true, "Push", $event)); });
154
- i0.ɵɵelement(17, "i", 64);
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);
155
146
  i0.ɵɵtext(18, " Full Push ");
156
147
  i0.ɵɵelementEnd()();
157
- i0.ɵɵelementStart(19, "div", 60)(20, "span", 61);
148
+ i0.ɵɵelementStart(19, "div", 58)(20, "span", 59);
158
149
  i0.ɵɵtext(21, "Bidirectional");
159
150
  i0.ɵɵelementEnd();
160
- i0.ɵɵelementStart(22, "button", 62);
161
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_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_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(summary_r6.Integration.ID, false, "Bidirectional", $event)); });
162
- i0.ɵɵelement(23, "i", 39);
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);
163
154
  i0.ɵɵtext(24, " Incremental Both ");
164
155
  i0.ɵɵelementEnd();
165
- i0.ɵɵelementStart(25, "button", 62);
166
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_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_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(summary_r6.Integration.ID, true, "Bidirectional", $event)); });
167
- i0.ɵɵelement(26, "i", 64);
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);
168
159
  i0.ɵɵtext(27, " Full Both ");
169
160
  i0.ɵɵelementEnd()()();
170
161
  } }
171
- function ConnectionsComponent_Conditional_8_Conditional_2_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) {
172
163
  const _r9 = i0.ɵɵgetCurrentView();
173
- i0.ɵɵelementStart(0, "div", 46)(1, "button", 57);
174
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_30_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r9); const summary_r6 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.ToggleSyncMenu(summary_r6.Integration.ID, $event)); });
175
- i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_30_Conditional_2_Template, 2, 0)(3, ConnectionsComponent_Conditional_8_Conditional_2_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);
176
167
  i0.ɵɵelementEnd();
177
- i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_30_Conditional_4_Template, 28, 0, "div", 58);
168
+ i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_30_Conditional_4_Template, 28, 0, "div", 56);
178
169
  i0.ɵɵelementEnd();
179
170
  } if (rf & 2) {
180
171
  const summary_r6 = i0.ɵɵnextContext().$implicit;
181
- const ctx_r0 = i0.ɵɵnextContext(3);
172
+ const ctx_r1 = i0.ɵɵnextContext(3);
182
173
  i0.ɵɵadvance();
183
- i0.ɵɵproperty("disabled", !!ctx_r0.SyncingIntegrationID);
174
+ i0.ɵɵproperty("disabled", !!ctx_r1.SyncingIntegrationID);
184
175
  i0.ɵɵadvance();
185
- i0.ɵɵconditional(ctx_r0.IsSyncing(summary_r6.Integration.ID) ? 2 : 3);
176
+ i0.ɵɵconditional(ctx_r1.IsSyncing(summary_r6.Integration.ID) ? 2 : 3);
186
177
  i0.ɵɵadvance(2);
187
- i0.ɵɵconditional(ctx_r0.SyncMenuIntegrationID === summary_r6.Integration.ID ? 4 : -1);
178
+ i0.ɵɵconditional(ctx_r1.SyncMenuIntegrationID === summary_r6.Integration.ID ? 4 : -1);
188
179
  } }
189
- function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
180
+ function ConnectionsComponent_Conditional_7_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
190
181
  const _r5 = i0.ɵɵgetCurrentView();
191
- i0.ɵɵelementStart(0, "div", 22)(1, "div", 27);
192
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Template_div_click_1_listener() { const summary_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.SelectIntegrationCard(summary_r6)); });
193
- i0.ɵɵelementStart(2, "div", 28)(3, "div", 29);
194
- i0.ɵɵelement(4, "i", 30);
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);
195
186
  i0.ɵɵelementEnd();
196
187
  i0.ɵɵelementStart(5, "span");
197
188
  i0.ɵɵtext(6);
198
189
  i0.ɵɵelementEnd()();
199
- i0.ɵɵelementStart(7, "div", 31)(8, "div", 32);
190
+ i0.ɵɵelementStart(7, "div", 29)(8, "div", 30);
200
191
  i0.ɵɵtext(9);
201
192
  i0.ɵɵelementEnd();
202
- i0.ɵɵelementStart(10, "div", 33);
193
+ i0.ɵɵelementStart(10, "div", 31);
203
194
  i0.ɵɵtext(11);
204
195
  i0.ɵɵelementEnd();
205
- i0.ɵɵelementStart(12, "div", 34)(13, "span", 35);
196
+ i0.ɵɵelementStart(12, "div", 32)(13, "span", 33);
206
197
  i0.ɵɵtext(14);
207
198
  i0.ɵɵelementEnd();
208
- i0.ɵɵelementStart(15, "span", 36);
199
+ i0.ɵɵelementStart(15, "span", 34);
209
200
  i0.ɵɵtext(16, "\u00B7");
210
201
  i0.ɵɵelementEnd();
211
- i0.ɵɵelementStart(17, "span", 37);
202
+ i0.ɵɵelementStart(17, "span", 35);
212
203
  i0.ɵɵtext(18);
213
204
  i0.ɵɵelementEnd()();
214
- i0.ɵɵelementStart(19, "div", 38);
215
- i0.ɵɵelement(20, "i", 39);
205
+ i0.ɵɵelementStart(19, "div", 36);
206
+ i0.ɵɵelement(20, "i", 37);
216
207
  i0.ɵɵtext(21);
217
208
  i0.ɵɵelementEnd();
218
- i0.ɵɵconditionalCreate(22, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_22_Template, 5, 6, "div", 40);
209
+ i0.ɵɵconditionalCreate(22, ConnectionsComponent_Conditional_7_Conditional_2_For_2_Conditional_22_Template, 5, 6, "div", 38);
219
210
  i0.ɵɵelementEnd()();
220
- i0.ɵɵconditionalCreate(23, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_23_Template, 11, 2, "div", 41);
221
- i0.ɵɵelementStart(24, "div", 42)(25, "button", 43);
222
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Template_button_click_25_listener() { const summary_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.TestExistingConnection(summary_r6.Integration.ID)); });
223
- i0.ɵɵconditionalCreate(26, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_26_Template, 1, 0, "i", 44)(27, ConnectionsComponent_Conditional_8_Conditional_2_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);
224
215
  i0.ɵɵelementEnd();
225
- i0.ɵɵelementStart(28, "button", 45);
226
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Template_button_click_28_listener() { const summary_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.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)); });
227
218
  i0.ɵɵtext(29, " Configure ");
228
219
  i0.ɵɵelementEnd();
229
- i0.ɵɵconditionalCreate(30, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_30_Template, 5, 3, "div", 46);
230
- i0.ɵɵelementStart(31, "button", 47);
231
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Template_button_click_31_listener() { const summary_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.OnMenuAction("delete", summary_r6)); });
232
- i0.ɵɵelement(32, "i", 48);
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);
233
224
  i0.ɵɵelementEnd()()();
234
225
  } if (rf & 2) {
235
226
  let tmp_21_0;
236
227
  const summary_r6 = ctx.$implicit;
237
- const ctx_r0 = i0.ɵɵnextContext(3);
228
+ const ctx_r1 = i0.ɵɵnextContext(3);
238
229
  i0.ɵɵadvance(3);
239
- i0.ɵɵstyleProp("background-color", ctx_r0.GetIconBrandColor(summary_r6.Integration.Integration));
230
+ i0.ɵɵstyleProp("background-color", ctx_r1.GetIconBrandColor(summary_r6.Integration.Integration));
240
231
  i0.ɵɵadvance();
241
- i0.ɵɵclassMap(ctx_r0.GetIntegrationIcon(summary_r6.Integration.Integration, summary_r6.Icon));
232
+ i0.ɵɵclassMap(ctx_r1.GetIntegrationIcon(summary_r6.Integration.Integration, summary_r6.Icon));
242
233
  i0.ɵɵadvance();
243
- i0.ɵɵclassMap(ctx_r0.GetStatusBadgeClass(summary_r6));
234
+ i0.ɵɵclassMap(ctx_r1.GetStatusBadgeClass(summary_r6));
244
235
  i0.ɵɵadvance();
245
- i0.ɵɵtextInterpolate(ctx_r0.GetStatusBadge(summary_r6));
236
+ i0.ɵɵtextInterpolate(ctx_r1.GetStatusBadge(summary_r6));
246
237
  i0.ɵɵadvance(3);
247
238
  i0.ɵɵtextInterpolate(summary_r6.Integration.Name);
248
239
  i0.ɵɵadvance(2);
249
240
  i0.ɵɵtextInterpolate(summary_r6.Integration.Company);
250
241
  i0.ɵɵadvance(3);
251
- i0.ɵɵtextInterpolate(ctx_r0.GetSourceTypeLabel(summary_r6));
242
+ i0.ɵɵtextInterpolate(ctx_r1.GetSourceTypeLabel(summary_r6));
252
243
  i0.ɵɵadvance(4);
253
- i0.ɵɵtextInterpolate(ctx_r0.GetCredentialHint(summary_r6));
244
+ i0.ɵɵtextInterpolate(ctx_r1.GetCredentialHint(summary_r6));
254
245
  i0.ɵɵadvance(3);
255
- i0.ɵɵtextInterpolate1(" Syncing ", ctx_r0.GetEntityMapCount(summary_r6.Integration.ID), " entities ");
246
+ i0.ɵɵtextInterpolate1(" Syncing ", ctx_r1.GetEntityMapCount(summary_r6.Integration.ID), " entities ");
256
247
  i0.ɵɵadvance();
257
- i0.ɵɵconditional((tmp_21_0 = ctx_r0.GetCardTestResult(summary_r6.Integration.ID)) ? 22 : -1, tmp_21_0);
248
+ i0.ɵɵconditional((tmp_21_0 = ctx_r1.GetCardTestResult(summary_r6.Integration.ID)) ? 22 : -1, tmp_21_0);
258
249
  i0.ɵɵadvance();
259
- i0.ɵɵconditional(ctx_r0.IsDeleteConfirming(summary_r6.Integration.ID) ? 23 : -1);
250
+ i0.ɵɵconditional(ctx_r1.IsDeleteConfirming(summary_r6.Integration.ID) ? 23 : -1);
260
251
  i0.ɵɵadvance(2);
261
- i0.ɵɵproperty("disabled", !!ctx_r0.TestingCardID);
252
+ i0.ɵɵproperty("disabled", !!ctx_r1.TestingCardID);
262
253
  i0.ɵɵadvance();
263
- i0.ɵɵconditional(ctx_r0.IsTestingCard(summary_r6.Integration.ID) ? 26 : 27);
254
+ i0.ɵɵconditional(ctx_r1.IsTestingCard(summary_r6.Integration.ID) ? 26 : 27);
264
255
  i0.ɵɵadvance(4);
265
- i0.ɵɵconditional(ctx_r0.IsConnectionActive(summary_r6) ? 30 : -1);
256
+ i0.ɵɵconditional(ctx_r1.IsConnectionActive(summary_r6) ? 30 : -1);
266
257
  } }
267
- function ConnectionsComponent_Conditional_8_Conditional_2_Template(rf, ctx) { if (rf & 1) {
258
+ function ConnectionsComponent_Conditional_7_Conditional_2_Template(rf, ctx) { if (rf & 1) {
268
259
  const _r4 = i0.ɵɵgetCurrentView();
269
- i0.ɵɵelementStart(0, "div", 18);
270
- i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Template, 33, 17, "div", 22, _forTrack0);
271
- i0.ɵɵelementStart(3, "div", 23);
272
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.OpenWizard()); });
273
- i0.ɵɵelementStart(4, "div", 24)(5, "div", 25);
274
- i0.ɵɵelement(6, "i", 15);
275
- i0.ɵɵelementEnd();
276
- i0.ɵɵelementStart(7, "span", 26);
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);
277
268
  i0.ɵɵtext(8, "Add Integration");
278
269
  i0.ɵɵelementEnd()()()();
279
270
  } if (rf & 2) {
280
- const ctx_r0 = i0.ɵɵnextContext(2);
271
+ const ctx_r1 = i0.ɵɵnextContext(2);
281
272
  i0.ɵɵadvance();
282
- i0.ɵɵrepeater(ctx_r0.Connections);
273
+ i0.ɵɵrepeater(ctx_r1.Connections);
283
274
  } }
284
- function ConnectionsComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
285
- i0.ɵɵconditionalCreate(0, ConnectionsComponent_Conditional_8_Conditional_0_Template, 2, 0, "div", 16);
286
- i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_8_Conditional_1_Template, 9, 0, "div", 17);
287
- i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_8_Conditional_2_Template, 9, 0, "div", 18);
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);
288
279
  } if (rf & 2) {
289
- const ctx_r0 = i0.ɵɵnextContext();
290
- i0.ɵɵconditional(ctx_r0.IsLoading ? 0 : -1);
280
+ const ctx_r1 = i0.ɵɵnextContext();
281
+ i0.ɵɵconditional(ctx_r1.IsLoading ? 0 : -1);
291
282
  i0.ɵɵadvance();
292
- i0.ɵɵconditional(!ctx_r0.IsLoading && ctx_r0.Connections.length === 0 ? 1 : -1);
283
+ i0.ɵɵconditional(!ctx_r1.IsLoading && ctx_r1.Connections.length === 0 ? 1 : -1);
293
284
  i0.ɵɵadvance();
294
- i0.ɵɵconditional(!ctx_r0.IsLoading && ctx_r0.Connections.length > 0 ? 2 : -1);
285
+ i0.ɵɵconditional(!ctx_r1.IsLoading && ctx_r1.Connections.length > 0 ? 2 : -1);
295
286
  } }
296
- function ConnectionsComponent_Conditional_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
287
+ function ConnectionsComponent_Conditional_8_Conditional_1_Template(rf, ctx) { if (rf & 1) {
297
288
  const _r11 = i0.ɵɵgetCurrentView();
298
- i0.ɵɵelementStart(0, "app-visual-field-editor", 67);
299
- i0.ɵɵlistener("Close", function ConnectionsComponent_Conditional_9_Conditional_1_Template_app_visual_field_editor_Close_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.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()); });
300
291
  i0.ɵɵelementEnd();
301
292
  } if (rf & 2) {
302
- const ctx_r0 = i0.ɵɵnextContext(2);
303
- i0.ɵɵproperty("EntityMap", ctx_r0.EditorEntityMap)("CompanyIntegrationID", ctx_r0.SelectedSummary.Integration.ID)("RunViewProvider", ctx_r0.RunViewToUse);
293
+ const ctx_r1 = i0.ɵɵnextContext(2);
294
+ i0.ɵɵproperty("EntityMap", ctx_r1.EditorEntityMap)("CompanyIntegrationID", ctx_r1.SelectedSummary.Integration.ID)("RunViewProvider", ctx_r1.RunViewToUse);
304
295
  } }
305
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Conditional_2_Template(rf, ctx) { if (rf & 1) {
306
- i0.ɵɵelement(0, "i", 44);
296
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_21_Conditional_2_Template(rf, ctx) { if (rf & 1) {
297
+ i0.ɵɵelement(0, "i", 42);
307
298
  i0.ɵɵtext(1, " Syncing... ");
308
299
  } }
309
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Conditional_3_Template(rf, ctx) { if (rf & 1) {
310
- i0.ɵɵelement(0, "i", 39);
300
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_21_Conditional_3_Template(rf, ctx) { if (rf & 1) {
301
+ i0.ɵɵelement(0, "i", 37);
311
302
  i0.ɵɵtext(1, " Sync ");
312
- i0.ɵɵelement(2, "i", 59);
303
+ i0.ɵɵelement(2, "i", 57);
313
304
  } }
314
- function ConnectionsComponent_Conditional_9_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) {
315
306
  const _r14 = i0.ɵɵgetCurrentView();
316
- i0.ɵɵelementStart(0, "div", 99)(1, "div", 60)(2, "span", 61);
307
+ i0.ɵɵelementStart(0, "div", 97)(1, "div", 58)(2, "span", 59);
317
308
  i0.ɵɵtext(3, "Pull (External \u2192 MJ)");
318
309
  i0.ɵɵelementEnd();
319
- i0.ɵɵelementStart(4, "button", 62);
320
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Conditional_4_Template_button_click_4_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(ctx_r0.SelectedSummary.Integration.ID, false, "Pull", $event)); });
321
- i0.ɵɵelement(5, "i", 63);
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);
322
313
  i0.ɵɵtext(6, " Incremental Pull ");
323
314
  i0.ɵɵelementEnd();
324
- i0.ɵɵelementStart(7, "button", 62);
325
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Conditional_4_Template_button_click_7_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(ctx_r0.SelectedSummary.Integration.ID, true, "Pull", $event)); });
326
- i0.ɵɵelement(8, "i", 64);
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);
327
318
  i0.ɵɵtext(9, " Full Pull ");
328
319
  i0.ɵɵelementEnd()();
329
- i0.ɵɵelementStart(10, "div", 60)(11, "span", 61);
320
+ i0.ɵɵelementStart(10, "div", 58)(11, "span", 59);
330
321
  i0.ɵɵtext(12, "Push (MJ \u2192 External)");
331
322
  i0.ɵɵelementEnd();
332
- i0.ɵɵelementStart(13, "button", 62);
333
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Conditional_4_Template_button_click_13_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(ctx_r0.SelectedSummary.Integration.ID, false, "Push", $event)); });
334
- i0.ɵɵelement(14, "i", 65);
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);
335
326
  i0.ɵɵtext(15, " Incremental Push ");
336
327
  i0.ɵɵelementEnd();
337
- i0.ɵɵelementStart(16, "button", 62);
338
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Conditional_4_Template_button_click_16_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(ctx_r0.SelectedSummary.Integration.ID, true, "Push", $event)); });
339
- i0.ɵɵelement(17, "i", 64);
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);
340
331
  i0.ɵɵtext(18, " Full Push ");
341
332
  i0.ɵɵelementEnd()();
342
- i0.ɵɵelementStart(19, "div", 60)(20, "span", 61);
333
+ i0.ɵɵelementStart(19, "div", 58)(20, "span", 59);
343
334
  i0.ɵɵtext(21, "Bidirectional");
344
335
  i0.ɵɵelementEnd();
345
- i0.ɵɵelementStart(22, "button", 62);
346
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Conditional_4_Template_button_click_22_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(ctx_r0.SelectedSummary.Integration.ID, false, "Bidirectional", $event)); });
347
- i0.ɵɵelement(23, "i", 39);
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);
348
339
  i0.ɵɵtext(24, " Incremental Both ");
349
340
  i0.ɵɵelementEnd();
350
- i0.ɵɵelementStart(25, "button", 62);
351
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Conditional_4_Template_button_click_25_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(ctx_r0.SelectedSummary.Integration.ID, true, "Bidirectional", $event)); });
352
- i0.ɵɵelement(26, "i", 64);
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);
353
344
  i0.ɵɵtext(27, " Full Both ");
354
345
  i0.ɵɵelementEnd()()();
355
346
  } }
356
- function ConnectionsComponent_Conditional_9_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) {
357
348
  const _r13 = i0.ɵɵgetCurrentView();
358
- i0.ɵɵelementStart(0, "div", 46)(1, "button", 57);
359
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.ToggleSyncMenu(ctx_r0.SelectedSummary.Integration.ID, $event)); });
360
- i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Conditional_2_Template, 2, 0)(3, ConnectionsComponent_Conditional_9_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);
361
352
  i0.ɵɵelementEnd();
362
- i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Conditional_4_Template, 28, 0, "div", 99);
353
+ i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_21_Conditional_4_Template, 28, 0, "div", 97);
363
354
  i0.ɵɵelementEnd();
364
355
  } if (rf & 2) {
365
- const ctx_r0 = i0.ɵɵnextContext(3);
356
+ const ctx_r1 = i0.ɵɵnextContext(3);
366
357
  i0.ɵɵadvance();
367
- i0.ɵɵproperty("disabled", !!ctx_r0.SyncingIntegrationID);
358
+ i0.ɵɵproperty("disabled", !!ctx_r1.SyncingIntegrationID);
368
359
  i0.ɵɵadvance();
369
- i0.ɵɵconditional(ctx_r0.IsSyncing(ctx_r0.SelectedSummary.Integration.ID) ? 2 : 3);
360
+ i0.ɵɵconditional(ctx_r1.IsSyncing(ctx_r1.SelectedSummary.Integration.ID) ? 2 : 3);
370
361
  i0.ɵɵadvance(2);
371
- i0.ɵɵconditional(ctx_r0.SyncMenuIntegrationID === ctx_r0.SelectedSummary.Integration.ID ? 4 : -1);
362
+ i0.ɵɵconditional(ctx_r1.SyncMenuIntegrationID === ctx_r1.SelectedSummary.Integration.ID ? 4 : -1);
372
363
  } }
373
- function ConnectionsComponent_Conditional_9_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) {
374
365
  const _r15 = i0.ɵɵgetCurrentView();
375
- i0.ɵɵelementStart(0, "mj-scheduled-job-summary", 100);
376
- i0.ɵɵlistener("EditRequested", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_28_Template_mj_scheduled_job_summary_EditRequested_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.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()); });
377
368
  i0.ɵɵelementEnd();
378
369
  } if (rf & 2) {
379
- const ctx_r0 = i0.ɵɵnextContext(3);
380
- i0.ɵɵproperty("ScheduledJobID", ctx_r0.ScheduledJobID);
370
+ const ctx_r1 = i0.ɵɵnextContext(3);
371
+ i0.ɵɵproperty("ScheduledJobID", ctx_r1.ScheduledJobID);
381
372
  } }
382
- function ConnectionsComponent_Conditional_9_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) {
383
374
  const _r16 = i0.ɵɵgetCurrentView();
384
- i0.ɵɵelementStart(0, "div", 83)(1, "span", 101);
375
+ i0.ɵɵelementStart(0, "div", 81)(1, "span", 99);
385
376
  i0.ɵɵtext(2, "No sync schedule configured");
386
377
  i0.ɵɵelementEnd();
387
- i0.ɵɵelementStart(3, "button", 102);
388
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_29_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r16); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.OpenSchedulePanel()); });
389
- i0.ɵɵelement(4, "i", 15);
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);
390
381
  i0.ɵɵtext(5, " Schedule Sync ");
391
382
  i0.ɵɵelementEnd()();
392
383
  } }
393
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_51_Conditional_1_Template(rf, ctx) { if (rf & 1) {
394
- i0.ɵɵelement(0, "i", 50);
384
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_51_Conditional_1_Template(rf, ctx) { if (rf & 1) {
385
+ i0.ɵɵelement(0, "i", 48);
395
386
  } }
396
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_51_Conditional_2_Template(rf, ctx) { if (rf & 1) {
397
- i0.ɵɵelement(0, "i", 51);
387
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_51_Conditional_2_Template(rf, ctx) { if (rf & 1) {
388
+ i0.ɵɵelement(0, "i", 49);
398
389
  } }
399
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_51_Template(rf, ctx) { if (rf & 1) {
400
- i0.ɵɵelementStart(0, "div", 103);
401
- i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_51_Conditional_1_Template, 1, 0, "i", 50)(2, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_51_Conditional_2_Template, 1, 0, "i", 51);
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);
402
393
  i0.ɵɵelementStart(3, "span");
403
394
  i0.ɵɵtext(4);
404
395
  i0.ɵɵelementEnd()();
405
396
  } if (rf & 2) {
406
- const ctx_r0 = i0.ɵɵnextContext(3);
407
- i0.ɵɵclassProp("sync-success", ctx_r0.SyncResult.Success)("sync-failure", !ctx_r0.SyncResult.Success);
397
+ const ctx_r1 = i0.ɵɵnextContext(3);
398
+ i0.ɵɵclassProp("sync-success", ctx_r1.SyncResult.Success)("sync-failure", !ctx_r1.SyncResult.Success);
408
399
  i0.ɵɵadvance();
409
- i0.ɵɵconditional(ctx_r0.SyncResult.Success ? 1 : 2);
400
+ i0.ɵɵconditional(ctx_r1.SyncResult.Success ? 1 : 2);
410
401
  i0.ɵɵadvance(3);
411
- i0.ɵɵtextInterpolate(ctx_r0.SyncResult.Message || (ctx_r0.SyncResult.Success ? "Sync completed successfully" : "Sync failed"));
402
+ i0.ɵɵtextInterpolate(ctx_r1.SyncResult.Message || (ctx_r1.SyncResult.Success ? "Sync completed successfully" : "Sync failed"));
412
403
  } }
413
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_For_13_Template(rf, ctx) { if (rf & 1) {
414
- i0.ɵɵelementStart(0, "option", 110);
404
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_For_13_Template(rf, ctx) { if (rf & 1) {
405
+ i0.ɵɵelementStart(0, "option", 108);
415
406
  i0.ɵɵtext(1);
416
407
  i0.ɵɵelementEnd();
417
408
  } if (rf & 2) {
@@ -420,33 +411,33 @@ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_For_13_
420
411
  i0.ɵɵadvance();
421
412
  i0.ɵɵtextInterpolate(schema_r18);
422
413
  } }
423
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_26_Template(rf, ctx) { if (rf & 1) {
424
- i0.ɵɵelement(0, "i", 44);
414
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Conditional_26_Template(rf, ctx) { if (rf & 1) {
415
+ i0.ɵɵelement(0, "i", 42);
425
416
  i0.ɵɵtext(1, " Mapping... ");
426
417
  } }
427
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_27_Template(rf, ctx) { if (rf & 1) {
428
- i0.ɵɵelement(0, "i", 95);
418
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Conditional_27_Template(rf, ctx) { if (rf & 1) {
419
+ i0.ɵɵelement(0, "i", 93);
429
420
  i0.ɵɵtext(1, " Auto-Map ");
430
421
  } }
431
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_30_Conditional_1_Template(rf, ctx) { if (rf & 1) {
432
- i0.ɵɵelementStart(0, "div", 124);
433
- i0.ɵɵelement(1, "i", 50);
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);
434
425
  i0.ɵɵtext(2);
435
426
  i0.ɵɵelementEnd();
436
427
  } if (rf & 2) {
437
- const ctx_r0 = i0.ɵɵnextContext(5);
428
+ const ctx_r1 = i0.ɵɵnextContext(5);
438
429
  i0.ɵɵadvance(2);
439
- i0.ɵɵtextInterpolate4(" Created ", ctx_r0.AutoMapResult.EntityMapsCreated, " entity map", ctx_r0.AutoMapResult.EntityMapsCreated !== 1 ? "s" : "", " with ", ctx_r0.AutoMapResult.FieldMapsCreated, " field map", ctx_r0.AutoMapResult.FieldMapsCreated !== 1 ? "s" : "", " ");
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" : "", " ");
440
431
  } }
441
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_30_Conditional_2_Template(rf, ctx) { if (rf & 1) {
442
- i0.ɵɵelementStart(0, "div", 124);
443
- i0.ɵɵelement(1, "i", 126);
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);
444
435
  i0.ɵɵtext(2, " All entities in this schema are already mapped. ");
445
436
  i0.ɵɵelementEnd();
446
437
  } }
447
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_30_Conditional_3_For_2_Template(rf, ctx) { if (rf & 1) {
448
- i0.ɵɵelementStart(0, "div", 127);
449
- i0.ɵɵelement(1, "i", 128);
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);
450
441
  i0.ɵɵtext(2);
451
442
  i0.ɵɵelementEnd();
452
443
  } if (rf & 2) {
@@ -454,114 +445,114 @@ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditi
454
445
  i0.ɵɵadvance(2);
455
446
  i0.ɵɵtextInterpolate1(" ", err_r19);
456
447
  } }
457
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_30_Conditional_3_Template(rf, ctx) { if (rf & 1) {
458
- i0.ɵɵelementStart(0, "div", 125);
459
- i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_30_Conditional_3_For_2_Template, 3, 1, "div", 127, 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);
460
451
  i0.ɵɵelementEnd();
461
452
  } if (rf & 2) {
462
- const ctx_r0 = i0.ɵɵnextContext(5);
453
+ const ctx_r1 = i0.ɵɵnextContext(5);
463
454
  i0.ɵɵadvance();
464
- i0.ɵɵrepeater(ctx_r0.AutoMapResult.Errors);
455
+ i0.ɵɵrepeater(ctx_r1.AutoMapResult.Errors);
465
456
  } }
466
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_30_Template(rf, ctx) { if (rf & 1) {
467
- i0.ɵɵelementStart(0, "div", 123);
468
- i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_30_Conditional_1_Template, 3, 4, "div", 124)(2, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_30_Conditional_2_Template, 3, 0, "div", 124);
469
- i0.ɵɵconditionalCreate(3, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_30_Conditional_3_Template, 3, 0, "div", 125);
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);
470
461
  i0.ɵɵelementEnd();
471
462
  } if (rf & 2) {
472
- const ctx_r0 = i0.ɵɵnextContext(4);
473
- i0.ɵɵclassProp("auto-map-success", ctx_r0.AutoMapResult.Errors.length === 0)("auto-map-partial", ctx_r0.AutoMapResult.Errors.length > 0 && ctx_r0.AutoMapResult.EntityMapsCreated > 0)("auto-map-failure", ctx_r0.AutoMapResult.EntityMapsCreated === 0 && ctx_r0.AutoMapResult.Errors.length > 0);
463
+ const ctx_r1 = i0.ɵɵnextContext(4);
464
+ i0.ɵɵclassProp("auto-map-success", ctx_r1.AutoMapResult.Errors.length === 0)("auto-map-partial", ctx_r1.AutoMapResult.Errors.length > 0 && ctx_r1.AutoMapResult.EntityMapsCreated > 0)("auto-map-failure", ctx_r1.AutoMapResult.EntityMapsCreated === 0 && ctx_r1.AutoMapResult.Errors.length > 0);
474
465
  i0.ɵɵadvance();
475
- i0.ɵɵconditional(ctx_r0.AutoMapResult.EntityMapsCreated > 0 ? 1 : ctx_r0.AutoMapResult.Errors.length === 0 ? 2 : -1);
466
+ i0.ɵɵconditional(ctx_r1.AutoMapResult.EntityMapsCreated > 0 ? 1 : ctx_r1.AutoMapResult.Errors.length === 0 ? 2 : -1);
476
467
  i0.ɵɵadvance(2);
477
- i0.ɵɵconditional(ctx_r0.AutoMapResult.Errors.length > 0 ? 3 : -1);
468
+ i0.ɵɵconditional(ctx_r1.AutoMapResult.Errors.length > 0 ? 3 : -1);
478
469
  } }
479
- function ConnectionsComponent_Conditional_9_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) {
480
471
  const _r17 = i0.ɵɵgetCurrentView();
481
- i0.ɵɵelementStart(0, "div", 97)(1, "div", 104);
482
- i0.ɵɵelement(2, "i", 95);
472
+ i0.ɵɵelementStart(0, "div", 95)(1, "div", 102);
473
+ i0.ɵɵelement(2, "i", 93);
483
474
  i0.ɵɵelementStart(3, "span");
484
475
  i0.ɵɵtext(4, "Auto-map all entities in a schema to this integration with 1:1 field mappings");
485
476
  i0.ɵɵelementEnd()();
486
- i0.ɵɵelementStart(5, "div", 105)(6, "div", 106)(7, "label", 107);
477
+ i0.ɵɵelementStart(5, "div", 103)(6, "div", 104)(7, "label", 105);
487
478
  i0.ɵɵtext(8, "Target Schema");
488
479
  i0.ɵɵelementEnd();
489
- i0.ɵɵelementStart(9, "select", 108);
490
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Template_select_ngModelChange_9_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r0.AutoMapSelectedSchema, $event) || (ctx_r0.AutoMapSelectedSchema = $event); return i0.ɵɵresetView($event); });
491
- i0.ɵɵelementStart(10, "option", 109);
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);
492
483
  i0.ɵɵtext(11, "Select schema...");
493
484
  i0.ɵɵelementEnd();
494
- i0.ɵɵrepeaterCreate(12, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_For_13_Template, 2, 2, "option", 110, i0.ɵɵrepeaterTrackByIdentity);
485
+ i0.ɵɵrepeaterCreate(12, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_For_13_Template, 2, 2, "option", 108, i0.ɵɵrepeaterTrackByIdentity);
495
486
  i0.ɵɵelementEnd()();
496
- i0.ɵɵelementStart(14, "div", 111)(15, "label", 107);
487
+ i0.ɵɵelementStart(14, "div", 109)(15, "label", 105);
497
488
  i0.ɵɵtext(16, "Direction");
498
489
  i0.ɵɵelementEnd();
499
- i0.ɵɵelementStart(17, "div", 112)(18, "button", 113);
500
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.AutoMapDirection = "Pull"); });
501
- i0.ɵɵelement(19, "i", 114);
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);
502
493
  i0.ɵɵelementEnd();
503
- i0.ɵɵelementStart(20, "button", 115);
504
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Template_button_click_20_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.AutoMapDirection = "Bidirectional"); });
505
- i0.ɵɵelement(21, "i", 116);
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);
506
497
  i0.ɵɵelementEnd();
507
- i0.ɵɵelementStart(22, "button", 117);
508
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Template_button_click_22_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.AutoMapDirection = "Push"); });
509
- i0.ɵɵelement(23, "i", 70);
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);
510
501
  i0.ɵɵelementEnd()()();
511
- i0.ɵɵelementStart(24, "div", 118)(25, "button", 119);
512
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Template_button_click_25_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.RunAutoMap()); });
513
- i0.ɵɵconditionalCreate(26, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_26_Template, 2, 0)(27, ConnectionsComponent_Conditional_9_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);
514
505
  i0.ɵɵelementEnd();
515
- i0.ɵɵelementStart(28, "button", 120);
516
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.CloseAutoMapPanel()); });
517
- i0.ɵɵelement(29, "i", 121);
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);
518
509
  i0.ɵɵelementEnd()()();
519
- i0.ɵɵconditionalCreate(30, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_30_Template, 4, 8, "div", 122);
510
+ i0.ɵɵconditionalCreate(30, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_52_Conditional_30_Template, 4, 8, "div", 120);
520
511
  i0.ɵɵelementEnd();
521
512
  } if (rf & 2) {
522
- const ctx_r0 = i0.ɵɵnextContext(3);
513
+ const ctx_r1 = i0.ɵɵnextContext(3);
523
514
  i0.ɵɵadvance(9);
524
- i0.ɵɵtwoWayProperty("ngModel", ctx_r0.AutoMapSelectedSchema);
515
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.AutoMapSelectedSchema);
525
516
  i0.ɵɵadvance();
526
517
  i0.ɵɵproperty("ngValue", "");
527
518
  i0.ɵɵadvance(2);
528
- i0.ɵɵrepeater(ctx_r0.AutoMapSchemas);
519
+ i0.ɵɵrepeater(ctx_r1.AutoMapSchemas);
529
520
  i0.ɵɵadvance(6);
530
- i0.ɵɵclassProp("active", ctx_r0.AutoMapDirection === "Pull");
521
+ i0.ɵɵclassProp("active", ctx_r1.AutoMapDirection === "Pull");
531
522
  i0.ɵɵadvance(2);
532
- i0.ɵɵclassProp("active", ctx_r0.AutoMapDirection === "Bidirectional");
523
+ i0.ɵɵclassProp("active", ctx_r1.AutoMapDirection === "Bidirectional");
533
524
  i0.ɵɵadvance(2);
534
- i0.ɵɵclassProp("active", ctx_r0.AutoMapDirection === "Push");
525
+ i0.ɵɵclassProp("active", ctx_r1.AutoMapDirection === "Push");
535
526
  i0.ɵɵadvance(3);
536
- i0.ɵɵproperty("disabled", !ctx_r0.CanAutoMap);
527
+ i0.ɵɵproperty("disabled", !ctx_r1.CanAutoMap);
537
528
  i0.ɵɵadvance();
538
- i0.ɵɵconditional(ctx_r0.IsAutoMapping ? 26 : 27);
529
+ i0.ɵɵconditional(ctx_r1.IsAutoMapping ? 26 : 27);
539
530
  i0.ɵɵadvance(4);
540
- i0.ɵɵconditional(ctx_r0.AutoMapResult ? 30 : -1);
531
+ i0.ɵɵconditional(ctx_r1.AutoMapResult ? 30 : -1);
541
532
  } }
542
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_8_Template(rf, ctx) { if (rf & 1) {
543
- i0.ɵɵelement(0, "i", 44);
533
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_8_Template(rf, ctx) { if (rf & 1) {
534
+ i0.ɵɵelement(0, "i", 42);
544
535
  i0.ɵɵtext(1, " Creating... ");
545
536
  } }
546
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_9_Template(rf, ctx) { if (rf & 1) {
547
- i0.ɵɵelement(0, "i", 93);
537
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_9_Template(rf, ctx) { if (rf & 1) {
538
+ i0.ɵɵelement(0, "i", 91);
548
539
  i0.ɵɵtext(1);
549
540
  } if (rf & 2) {
550
- const ctx_r0 = i0.ɵɵnextContext(4);
541
+ const ctx_r1 = i0.ɵɵnextContext(4);
551
542
  i0.ɵɵadvance();
552
- i0.ɵɵtextInterpolate2(" Create ", ctx_r0.CreateTablesSelectedCount, " Table", ctx_r0.CreateTablesSelectedCount !== 1 ? "s" : "", " ");
543
+ i0.ɵɵtextInterpolate2(" Create ", ctx_r1.CreateTablesSelectedCount, " Table", ctx_r1.CreateTablesSelectedCount !== 1 ? "s" : "", " ");
553
544
  } }
554
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_12_Template(rf, ctx) { if (rf & 1) {
555
- i0.ɵɵelement(0, "mj-loading", 129);
545
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_12_Template(rf, ctx) { if (rf & 1) {
546
+ i0.ɵɵelement(0, "mj-loading", 127);
556
547
  } }
557
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_13_Template(rf, ctx) { if (rf & 1) {
558
- i0.ɵɵelementStart(0, "div", 130);
559
- i0.ɵɵelement(1, "i", 126);
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);
560
551
  i0.ɵɵtext(2, " No source objects available from this connector. ");
561
552
  i0.ɵɵelementEnd();
562
553
  } }
563
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_4_Template(rf, ctx) { if (rf & 1) {
564
- i0.ɵɵelementStart(0, "span", 139);
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);
565
556
  i0.ɵɵtext(1);
566
557
  i0.ɵɵelementEnd();
567
558
  } if (rf & 2) {
@@ -569,27 +560,27 @@ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditi
569
560
  i0.ɵɵadvance();
570
561
  i0.ɵɵtextInterpolate(obj_r23.Name);
571
562
  } }
572
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_5_Template(rf, ctx) { if (rf & 1) {
573
- i0.ɵɵelementStart(0, "span", 140);
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);
574
565
  i0.ɵɵtext(1, "Custom");
575
566
  i0.ɵɵelementEnd();
576
567
  } }
577
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
578
- i0.ɵɵelementStart(0, "span", 141);
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);
579
570
  i0.ɵɵtext(1, "Registered");
580
571
  i0.ɵɵelementEnd();
581
572
  } }
582
- function ConnectionsComponent_Conditional_9_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) {
583
574
  const _r22 = i0.ɵɵgetCurrentView();
584
- i0.ɵɵelementStart(0, "label", 136)(1, "input", 138);
585
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_9_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); });
586
577
  i0.ɵɵelementEnd();
587
578
  i0.ɵɵelementStart(2, "span");
588
579
  i0.ɵɵtext(3);
589
580
  i0.ɵɵelementEnd();
590
- i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_4_Template, 2, 1, "span", 139);
591
- i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_5_Template, 2, 0, "span", 140);
592
- i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_6_Template, 2, 0, "span", 141);
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);
593
584
  i0.ɵɵelementEnd();
594
585
  } if (rf & 2) {
595
586
  const obj_r23 = ctx.$implicit;
@@ -604,92 +595,92 @@ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditi
604
595
  i0.ɵɵadvance();
605
596
  i0.ɵɵconditional(obj_r23.AlreadyPersisted ? 6 : -1);
606
597
  } }
607
- function ConnectionsComponent_Conditional_9_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) {
608
599
  const _r21 = i0.ɵɵgetCurrentView();
609
- i0.ɵɵelementStart(0, "div", 132)(1, "input", 133);
610
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r0 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r0.CreateTablesSearch, $event) || (ctx_r0.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); });
611
602
  i0.ɵɵelementEnd()();
612
- i0.ɵɵelementStart(2, "div", 134)(3, "div", 135)(4, "label", 136)(5, "input", 137);
613
- i0.ɵɵlistener("change", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_Template_input_change_5_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.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)); });
614
605
  i0.ɵɵelementEnd();
615
606
  i0.ɵɵelementStart(6, "span");
616
607
  i0.ɵɵtext(7);
617
608
  i0.ɵɵelementEnd()()();
618
- i0.ɵɵrepeaterCreate(8, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_For_9_Template, 7, 5, "label", 136, _forTrack1);
609
+ i0.ɵɵrepeaterCreate(8, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_14_For_9_Template, 7, 5, "label", 134, _forTrack1);
619
610
  i0.ɵɵelementEnd();
620
611
  } if (rf & 2) {
621
- const ctx_r0 = i0.ɵɵnextContext(4);
612
+ const ctx_r1 = i0.ɵɵnextContext(4);
622
613
  i0.ɵɵadvance();
623
- i0.ɵɵtwoWayProperty("ngModel", ctx_r0.CreateTablesSearch);
614
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.CreateTablesSearch);
624
615
  i0.ɵɵadvance(4);
625
- i0.ɵɵproperty("checked", ctx_r0.FilteredCreateTablesObjects.length > 0 && ctx_r0.CreateTablesSelectedCount === ctx_r0.FilteredCreateTablesObjects.length);
616
+ i0.ɵɵproperty("checked", ctx_r1.FilteredCreateTablesObjects.length > 0 && ctx_r1.CreateTablesSelectedCount === ctx_r1.FilteredCreateTablesObjects.length);
626
617
  i0.ɵɵadvance(2);
627
- i0.ɵɵtextInterpolate2("Select All (", ctx_r0.FilteredCreateTablesObjects.length, " of ", ctx_r0.CreateTablesObjects.length, ")");
618
+ i0.ɵɵtextInterpolate2("Select All (", ctx_r1.FilteredCreateTablesObjects.length, " of ", ctx_r1.CreateTablesObjects.length, ")");
628
619
  i0.ɵɵadvance();
629
- i0.ɵɵrepeater(ctx_r0.FilteredCreateTablesObjects);
620
+ i0.ɵɵrepeater(ctx_r1.FilteredCreateTablesObjects);
630
621
  } }
631
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_15_Conditional_1_Template(rf, ctx) { if (rf & 1) {
632
- i0.ɵɵelement(0, "i", 50);
622
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_53_Conditional_15_Conditional_1_Template(rf, ctx) { if (rf & 1) {
623
+ i0.ɵɵelement(0, "i", 48);
633
624
  } }
634
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_15_Conditional_2_Template(rf, ctx) { if (rf & 1) {
635
- i0.ɵɵelement(0, "i", 51);
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);
636
627
  } }
637
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_15_Template(rf, ctx) { if (rf & 1) {
638
- i0.ɵɵelementStart(0, "div", 123);
639
- i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_15_Conditional_1_Template, 1, 0, "i", 50)(2, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_15_Conditional_2_Template, 1, 0, "i", 51);
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);
640
631
  i0.ɵɵelementStart(3, "span");
641
632
  i0.ɵɵtext(4);
642
633
  i0.ɵɵelementEnd()();
643
634
  } if (rf & 2) {
644
- const ctx_r0 = i0.ɵɵnextContext(4);
645
- i0.ɵɵclassProp("auto-map-success", ctx_r0.CreateTablesResult.Success)("auto-map-failure", !ctx_r0.CreateTablesResult.Success);
635
+ const ctx_r1 = i0.ɵɵnextContext(4);
636
+ i0.ɵɵclassProp("auto-map-success", ctx_r1.CreateTablesResult.Success)("auto-map-failure", !ctx_r1.CreateTablesResult.Success);
646
637
  i0.ɵɵadvance();
647
- i0.ɵɵconditional(ctx_r0.CreateTablesResult.Success ? 1 : 2);
638
+ i0.ɵɵconditional(ctx_r1.CreateTablesResult.Success ? 1 : 2);
648
639
  i0.ɵɵadvance(3);
649
- i0.ɵɵtextInterpolate(ctx_r0.CreateTablesResult.Message);
640
+ i0.ɵɵtextInterpolate(ctx_r1.CreateTablesResult.Message);
650
641
  } }
651
- function ConnectionsComponent_Conditional_9_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) {
652
643
  const _r20 = i0.ɵɵgetCurrentView();
653
- i0.ɵɵelementStart(0, "div", 97)(1, "div", 104);
654
- i0.ɵɵelement(2, "i", 93);
644
+ i0.ɵɵelementStart(0, "div", 95)(1, "div", 102);
645
+ i0.ɵɵelement(2, "i", 91);
655
646
  i0.ɵɵelementStart(3, "span");
656
647
  i0.ɵɵtext(4, "Select source objects to create as entity tables in your database");
657
648
  i0.ɵɵelementEnd()();
658
- i0.ɵɵelementStart(5, "div", 105)(6, "div", 118)(7, "button", 119);
659
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r20); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.RunCreateTables()); });
660
- i0.ɵɵconditionalCreate(8, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_8_Template, 2, 0)(9, ConnectionsComponent_Conditional_9_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);
661
652
  i0.ɵɵelementEnd();
662
- i0.ɵɵelementStart(10, "button", 120);
663
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r20); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.CloseCreateTablesPanel()); });
664
- i0.ɵɵelement(11, "i", 121);
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);
665
656
  i0.ɵɵelementEnd()()();
666
- i0.ɵɵconditionalCreate(12, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_12_Template, 1, 0, "mj-loading", 129)(13, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_13_Template, 3, 0, "div", 130)(14, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_Template, 10, 4);
667
- i0.ɵɵconditionalCreate(15, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_15_Template, 5, 6, "div", 131);
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);
668
659
  i0.ɵɵelementEnd();
669
660
  } if (rf & 2) {
670
- const ctx_r0 = i0.ɵɵnextContext(3);
661
+ const ctx_r1 = i0.ɵɵnextContext(3);
671
662
  i0.ɵɵadvance(7);
672
- i0.ɵɵproperty("disabled", !ctx_r0.CanCreateTables);
663
+ i0.ɵɵproperty("disabled", !ctx_r1.CanCreateTables);
673
664
  i0.ɵɵadvance();
674
- i0.ɵɵconditional(ctx_r0.IsCreatingTables ? 8 : 9);
665
+ i0.ɵɵconditional(ctx_r1.IsCreatingTables ? 8 : 9);
675
666
  i0.ɵɵadvance(4);
676
- i0.ɵɵconditional(ctx_r0.IsLoadingCreateTablesObjects ? 12 : ctx_r0.CreateTablesObjects.length === 0 ? 13 : 14);
667
+ i0.ɵɵconditional(ctx_r1.IsLoadingCreateTablesObjects ? 12 : ctx_r1.CreateTablesObjects.length === 0 ? 13 : 14);
677
668
  i0.ɵɵadvance(3);
678
- i0.ɵɵconditional(ctx_r0.CreateTablesResult ? 15 : -1);
669
+ i0.ɵɵconditional(ctx_r1.CreateTablesResult ? 15 : -1);
679
670
  } }
680
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_5_Template(rf, ctx) { if (rf & 1) {
681
- i0.ɵɵelementStart(0, "div", 142);
682
- i0.ɵɵelement(1, "i", 44);
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);
683
674
  i0.ɵɵtext(2, " Loading...");
684
675
  i0.ɵɵelementEnd();
685
676
  } }
686
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_6_Template(rf, ctx) { if (rf & 1) {
687
- i0.ɵɵelementStart(0, "div", 143);
677
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Conditional_6_Template(rf, ctx) { if (rf & 1) {
678
+ i0.ɵɵelementStart(0, "div", 141);
688
679
  i0.ɵɵtext(1, "No source objects found in metadata");
689
680
  i0.ɵɵelementEnd();
690
681
  } }
691
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_7_For_4_Template(rf, ctx) { if (rf & 1) {
692
- i0.ɵɵelementStart(0, "option", 110);
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);
693
684
  i0.ɵɵtext(1);
694
685
  i0.ɵɵelementEnd();
695
686
  } if (rf & 2) {
@@ -698,148 +689,148 @@ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditi
698
689
  i0.ɵɵadvance();
699
690
  i0.ɵɵtextInterpolate(obj_r26.Label || obj_r26.Name);
700
691
  } }
701
- function ConnectionsComponent_Conditional_9_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) {
702
693
  const _r25 = i0.ɵɵgetCurrentView();
703
- i0.ɵɵelementStart(0, "select", 108);
704
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_7_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r0 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r0.AddMapSourceObjectName, $event) || (ctx_r0.AddMapSourceObjectName = $event); return i0.ɵɵresetView($event); });
705
- i0.ɵɵelementStart(1, "option", 109);
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);
706
697
  i0.ɵɵtext(2, "Select source object...");
707
698
  i0.ɵɵelementEnd();
708
- i0.ɵɵrepeaterCreate(3, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_7_For_4_Template, 2, 2, "option", 110, _forTrack1);
699
+ i0.ɵɵrepeaterCreate(3, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Conditional_7_For_4_Template, 2, 2, "option", 108, _forTrack1);
709
700
  i0.ɵɵelementEnd();
710
701
  } if (rf & 2) {
711
- const ctx_r0 = i0.ɵɵnextContext(4);
712
- i0.ɵɵtwoWayProperty("ngModel", ctx_r0.AddMapSourceObjectName);
702
+ const ctx_r1 = i0.ɵɵnextContext(4);
703
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.AddMapSourceObjectName);
713
704
  i0.ɵɵadvance();
714
705
  i0.ɵɵproperty("ngValue", "");
715
706
  i0.ɵɵadvance(2);
716
- i0.ɵɵrepeater(ctx_r0.AvailableSourceObjects);
707
+ i0.ɵɵrepeater(ctx_r1.AvailableSourceObjects);
717
708
  } }
718
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_29_Template(rf, ctx) { if (rf & 1) {
719
- i0.ɵɵelement(0, "i", 44);
709
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Conditional_29_Template(rf, ctx) { if (rf & 1) {
710
+ i0.ɵɵelement(0, "i", 42);
720
711
  } }
721
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_30_Template(rf, ctx) { if (rf & 1) {
722
- i0.ɵɵelement(0, "i", 149);
712
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_54_Conditional_30_Template(rf, ctx) { if (rf & 1) {
713
+ i0.ɵɵelement(0, "i", 147);
723
714
  i0.ɵɵtext(1, " Add ");
724
715
  } }
725
- function ConnectionsComponent_Conditional_9_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) {
726
717
  const _r24 = i0.ɵɵgetCurrentView();
727
- i0.ɵɵelementStart(0, "div", 97)(1, "div", 105)(2, "div", 106)(3, "label", 107);
718
+ i0.ɵɵelementStart(0, "div", 95)(1, "div", 103)(2, "div", 104)(3, "label", 105);
728
719
  i0.ɵɵtext(4, "Source Object");
729
720
  i0.ɵɵelementEnd();
730
- i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_5_Template, 3, 0, "div", 142)(6, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_6_Template, 2, 0, "div", 143)(7, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_7_Template, 5, 2, "select", 144);
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);
731
722
  i0.ɵɵelementEnd();
732
- i0.ɵɵelementStart(8, "div", 111)(9, "label", 107);
723
+ i0.ɵɵelementStart(8, "div", 109)(9, "label", 105);
733
724
  i0.ɵɵtext(10, "Direction");
734
725
  i0.ɵɵelementEnd();
735
- i0.ɵɵelementStart(11, "div", 112)(12, "button", 113);
736
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r24); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.AddMapDirection = "Pull"); });
737
- i0.ɵɵelement(13, "i", 114);
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);
738
729
  i0.ɵɵelementEnd();
739
- i0.ɵɵelementStart(14, "button", 115);
740
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r24); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.AddMapDirection = "Bidirectional"); });
741
- i0.ɵɵelement(15, "i", 116);
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);
742
733
  i0.ɵɵelementEnd();
743
- i0.ɵɵelementStart(16, "button", 117);
744
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r24); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.AddMapDirection = "Push"); });
745
- i0.ɵɵelement(17, "i", 70);
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);
746
737
  i0.ɵɵelementEnd()()();
747
- i0.ɵɵelementStart(18, "div", 145)(19, "label", 107);
738
+ i0.ɵɵelementStart(18, "div", 143)(19, "label", 105);
748
739
  i0.ɵɵtext(20, "MJ Entity");
749
740
  i0.ɵɵelementEnd();
750
- i0.ɵɵelementStart(21, "div", 146)(22, "mj-tree-dropdown", 147, 0);
751
- i0.ɵɵlistener("SelectionChange", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Template_mj_tree_dropdown_SelectionChange_22_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.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)); });
752
743
  i0.ɵɵelementEnd();
753
- i0.ɵɵelementStart(24, "button", 148);
754
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Template_button_click_24_listener() { i0.ɵɵrestoreView(_r24); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.OpenNewEntityDialog()); });
755
- i0.ɵɵelement(25, "i", 15);
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);
756
747
  i0.ɵɵtext(26, " New ");
757
748
  i0.ɵɵelementEnd()()();
758
- i0.ɵɵelementStart(27, "div", 118)(28, "button", 119);
759
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r24); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.SaveAddMap()); });
760
- i0.ɵɵconditionalCreate(29, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_29_Template, 1, 0, "i", 44)(30, ConnectionsComponent_Conditional_9_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);
761
752
  i0.ɵɵelementEnd();
762
- i0.ɵɵelementStart(31, "button", 120);
763
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Template_button_click_31_listener() { i0.ɵɵrestoreView(_r24); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.CloseAddMapPanel()); });
764
- i0.ɵɵelement(32, "i", 121);
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);
765
756
  i0.ɵɵelementEnd()()()();
766
757
  } if (rf & 2) {
767
- const ctx_r0 = i0.ɵɵnextContext(3);
758
+ const ctx_r1 = i0.ɵɵnextContext(3);
768
759
  i0.ɵɵadvance(5);
769
- i0.ɵɵconditional(ctx_r0.IsLoadingSourceObjects ? 5 : ctx_r0.AvailableSourceObjects.length === 0 ? 6 : 7);
760
+ i0.ɵɵconditional(ctx_r1.IsLoadingSourceObjects ? 5 : ctx_r1.AvailableSourceObjects.length === 0 ? 6 : 7);
770
761
  i0.ɵɵadvance(7);
771
- i0.ɵɵclassProp("active", ctx_r0.AddMapDirection === "Pull");
762
+ i0.ɵɵclassProp("active", ctx_r1.AddMapDirection === "Pull");
772
763
  i0.ɵɵadvance(2);
773
- i0.ɵɵclassProp("active", ctx_r0.AddMapDirection === "Bidirectional");
764
+ i0.ɵɵclassProp("active", ctx_r1.AddMapDirection === "Bidirectional");
774
765
  i0.ɵɵadvance(2);
775
- i0.ɵɵclassProp("active", ctx_r0.AddMapDirection === "Push");
766
+ i0.ɵɵclassProp("active", ctx_r1.AddMapDirection === "Push");
776
767
  i0.ɵɵadvance(6);
777
- i0.ɵɵproperty("BranchConfig", ctx_r0.EntityBranchConfig)("LeafConfig", ctx_r0.EntityLeafConfig)("Value", ctx_r0.AddMapEntityIDAsKey)("SelectableTypes", "leaf")("SelectionMode", "single")("Placeholder", "Search entities by schema...")("EnableSearch", true);
768
+ i0.ɵɵproperty("BranchConfig", ctx_r1.EntityBranchConfig)("LeafConfig", ctx_r1.EntityLeafConfig)("Value", ctx_r1.AddMapEntityIDAsKey)("SelectableTypes", "leaf")("SelectionMode", "single")("Placeholder", "Search entities by schema...")("EnableSearch", true);
778
769
  i0.ɵɵadvance(6);
779
- i0.ɵɵproperty("disabled", !ctx_r0.CanSaveAddMap || ctx_r0.IsSavingAddMap);
770
+ i0.ɵɵproperty("disabled", !ctx_r1.CanSaveAddMap || ctx_r1.IsSavingAddMap);
780
771
  i0.ɵɵadvance();
781
- i0.ɵɵconditional(ctx_r0.IsSavingAddMap ? 29 : 30);
772
+ i0.ɵɵconditional(ctx_r1.IsSavingAddMap ? 29 : 30);
782
773
  } }
783
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_55_Template(rf, ctx) { if (rf & 1) {
784
- i0.ɵɵelementStart(0, "div", 16);
785
- i0.ɵɵelement(1, "mj-loading", 150);
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);
786
777
  i0.ɵɵelementEnd();
787
778
  } }
788
- function ConnectionsComponent_Conditional_9_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) {
789
780
  const _r27 = i0.ɵɵgetCurrentView();
790
- i0.ɵɵelementStart(0, "div", 98);
791
- i0.ɵɵelement(1, "i", 151);
781
+ i0.ɵɵelementStart(0, "div", 96);
782
+ i0.ɵɵelement(1, "i", 149);
792
783
  i0.ɵɵelementStart(2, "h3");
793
784
  i0.ɵɵtext(3, "No entity maps configured");
794
785
  i0.ɵɵelementEnd();
795
786
  i0.ɵɵelementStart(4, "p");
796
787
  i0.ɵɵtext(5, "Entity maps define how external objects sync to MJ entities.");
797
788
  i0.ɵɵelementEnd();
798
- i0.ɵɵelementStart(6, "button", 152);
799
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_56_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r27); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.ToggleAddMapPanel()); });
800
- i0.ɵɵelement(7, "i", 15);
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);
801
792
  i0.ɵɵtext(8, " Add Your First Entity Map ");
802
793
  i0.ɵɵelementEnd()();
803
794
  } }
804
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_For_12_Conditional_13_Template(rf, ctx) { if (rf & 1) {
805
- i0.ɵɵelementStart(0, "span", 170);
806
- i0.ɵɵelement(1, "i", 174);
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);
807
798
  i0.ɵɵelementEnd();
808
799
  } }
809
- function ConnectionsComponent_Conditional_9_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) {
810
801
  const _r28 = i0.ɵɵgetCurrentView();
811
- i0.ɵɵelementStart(0, "div", 162);
812
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_For_12_Template_div_click_0_listener() { const em_r29 = i0.ɵɵrestoreView(_r28).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.OnEntityMapClick(em_r29)); });
813
- i0.ɵɵelementStart(1, "span", 163);
814
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_For_12_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r28); return i0.ɵɵresetView($event.stopPropagation()); });
815
- i0.ɵɵelementStart(2, "label", 164)(3, "input", 137);
816
- i0.ɵɵlistener("change", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_For_12_Template_input_change_3_listener($event) { const em_r29 = i0.ɵɵrestoreView(_r28).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.OnToggleMapEnabled(em_r29, $event)); });
817
- i0.ɵɵelementEnd();
818
- i0.ɵɵelement(4, "span", 165);
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);
819
810
  i0.ɵɵelementEnd()();
820
- i0.ɵɵelementStart(5, "span", 166);
811
+ i0.ɵɵelementStart(5, "span", 164);
821
812
  i0.ɵɵtext(6);
822
813
  i0.ɵɵelementEnd();
823
- i0.ɵɵelementStart(7, "span", 167);
824
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_For_12_Template_span_click_7_listener($event) { i0.ɵɵrestoreView(_r28); return i0.ɵɵresetView($event.stopPropagation()); });
825
- i0.ɵɵelementStart(8, "button", 168);
826
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_For_12_Template_button_click_8_listener() { const em_r29 = i0.ɵɵrestoreView(_r28).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.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)); });
827
818
  i0.ɵɵtext(9);
828
819
  i0.ɵɵelementEnd()();
829
- i0.ɵɵelementStart(10, "span", 169);
820
+ i0.ɵɵelementStart(10, "span", 167);
830
821
  i0.ɵɵtext(11);
831
822
  i0.ɵɵelementEnd();
832
- i0.ɵɵelementStart(12, "span", 158);
833
- i0.ɵɵconditionalCreate(13, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_For_12_Conditional_13_Template, 2, 0, "span", 170);
834
- i0.ɵɵelementStart(14, "span", 171);
835
- i0.ɵɵelement(15, "i", 39);
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);
836
827
  i0.ɵɵelementEnd();
837
- i0.ɵɵelementStart(16, "span", 172);
838
- i0.ɵɵelement(17, "i", 173);
828
+ i0.ɵɵelementStart(16, "span", 170);
829
+ i0.ɵɵelement(17, "i", 171);
839
830
  i0.ɵɵelementEnd()()();
840
831
  } if (rf & 2) {
841
832
  const em_r29 = ctx.$implicit;
842
- const ctx_r0 = i0.ɵɵnextContext(4);
833
+ const ctx_r1 = i0.ɵɵnextContext(4);
843
834
  i0.ɵɵclassProp("sync-disabled", !em_r29.SyncEnabled);
844
835
  i0.ɵɵadvance(2);
845
836
  i0.ɵɵproperty("title", em_r29.SyncEnabled ? "Sync enabled" : "Sync disabled");
@@ -850,10 +841,10 @@ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_For_12_
850
841
  i0.ɵɵadvance();
851
842
  i0.ɵɵtextInterpolate1(" ", em_r29.ExternalObjectLabel ?? em_r29.ExternalObjectName, " ");
852
843
  i0.ɵɵadvance(2);
853
- i0.ɵɵclassMap(ctx_r0.DirectionBadgeClass(em_r29.SyncDirection));
844
+ i0.ɵɵclassMap(ctx_r1.DirectionBadgeClass(em_r29.SyncDirection));
854
845
  i0.ɵɵproperty("title", "Click to change sync direction (currently: " + em_r29.SyncDirection + ")");
855
846
  i0.ɵɵadvance();
856
- i0.ɵɵtextInterpolate1(" ", ctx_r0.DirectionText(em_r29.SyncDirection), " ");
847
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.DirectionText(em_r29.SyncDirection), " ");
857
848
  i0.ɵɵadvance();
858
849
  i0.ɵɵproperty("title", em_r29.Entity);
859
850
  i0.ɵɵadvance();
@@ -863,213 +854,213 @@ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_For_12_
863
854
  i0.ɵɵadvance();
864
855
  i0.ɵɵproperty("title", "Conflict: " + em_r29.ConflictResolution);
865
856
  } }
866
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_ForEmpty_13_Template(rf, ctx) { if (rf & 1) {
867
- i0.ɵɵelementStart(0, "div", 161);
857
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_57_ForEmpty_13_Template(rf, ctx) { if (rf & 1) {
858
+ i0.ɵɵelementStart(0, "div", 159);
868
859
  i0.ɵɵtext(1, " No entity maps match your filter. ");
869
860
  i0.ɵɵelementEnd();
870
861
  } }
871
- function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_Template(rf, ctx) { if (rf & 1) {
872
- i0.ɵɵelementStart(0, "div", 153)(1, "span", 154);
862
+ function ConnectionsComponent_Conditional_8_Conditional_2_Conditional_57_Template(rf, ctx) { if (rf & 1) {
863
+ i0.ɵɵelementStart(0, "div", 151)(1, "span", 152);
873
864
  i0.ɵɵtext(2, "Sync");
874
865
  i0.ɵɵelementEnd();
875
- i0.ɵɵelementStart(3, "span", 155);
866
+ i0.ɵɵelementStart(3, "span", 153);
876
867
  i0.ɵɵtext(4, "External Object");
877
868
  i0.ɵɵelementEnd();
878
- i0.ɵɵelement(5, "span", 156);
879
- i0.ɵɵelementStart(6, "span", 157);
869
+ i0.ɵɵelement(5, "span", 154);
870
+ i0.ɵɵelementStart(6, "span", 155);
880
871
  i0.ɵɵtext(7, "MJ Entity");
881
872
  i0.ɵɵelementEnd();
882
- i0.ɵɵelementStart(8, "span", 158);
873
+ i0.ɵɵelementStart(8, "span", 156);
883
874
  i0.ɵɵtext(9, "Config");
884
875
  i0.ɵɵelementEnd()();
885
- i0.ɵɵelementStart(10, "div", 159);
886
- i0.ɵɵrepeaterCreate(11, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_For_12_Template, 18, 14, "div", 160, _forTrack2, false, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_ForEmpty_13_Template, 2, 0, "div", 161);
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);
887
878
  i0.ɵɵelementEnd();
888
879
  } if (rf & 2) {
889
- const ctx_r0 = i0.ɵɵnextContext(3);
880
+ const ctx_r1 = i0.ɵɵnextContext(3);
890
881
  i0.ɵɵadvance(11);
891
- i0.ɵɵrepeater(ctx_r0.DetailFilteredMaps);
882
+ i0.ɵɵrepeater(ctx_r1.DetailFilteredMaps);
892
883
  } }
893
- function ConnectionsComponent_Conditional_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
884
+ function ConnectionsComponent_Conditional_8_Conditional_2_Template(rf, ctx) { if (rf & 1) {
894
885
  const _r12 = i0.ɵɵgetCurrentView();
895
- i0.ɵɵelementStart(0, "div", 68)(1, "button", 69);
896
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.CloseDetailView()); });
897
- i0.ɵɵelement(2, "i", 70);
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);
898
889
  i0.ɵɵelementEnd();
899
- i0.ɵɵelementStart(3, "div", 71)(4, "div", 29);
900
- i0.ɵɵelement(5, "i", 30);
890
+ i0.ɵɵelementStart(3, "div", 69)(4, "div", 27);
891
+ i0.ɵɵelement(5, "i", 28);
901
892
  i0.ɵɵelementEnd();
902
- i0.ɵɵelementStart(6, "div", 72)(7, "h2", 73);
893
+ i0.ɵɵelementStart(6, "div", 70)(7, "h2", 71);
903
894
  i0.ɵɵtext(8);
904
895
  i0.ɵɵelementEnd();
905
- i0.ɵɵelementStart(9, "span", 74);
896
+ i0.ɵɵelementStart(9, "span", 72);
906
897
  i0.ɵɵtext(10);
907
- i0.ɵɵelementStart(11, "span", 36);
898
+ i0.ɵɵelementStart(11, "span", 34);
908
899
  i0.ɵɵtext(12, "\u00B7");
909
900
  i0.ɵɵelementEnd();
910
901
  i0.ɵɵtext(13);
911
- i0.ɵɵelementStart(14, "span", 36);
902
+ i0.ɵɵelementStart(14, "span", 34);
912
903
  i0.ɵɵtext(15, "\u00B7");
913
904
  i0.ɵɵelementEnd();
914
905
  i0.ɵɵelementStart(16, "span");
915
906
  i0.ɵɵtext(17);
916
907
  i0.ɵɵelementEnd()()()();
917
- i0.ɵɵelementStart(18, "div", 75)(19, "button", 76);
918
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Template_button_click_19_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.OpenEditPanel(ctx_r0.SelectedSummary)); });
919
- i0.ɵɵelement(20, "i", 77);
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);
920
911
  i0.ɵɵelementEnd();
921
- i0.ɵɵconditionalCreate(21, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Template, 5, 3, "div", 46);
912
+ i0.ɵɵconditionalCreate(21, ConnectionsComponent_Conditional_8_Conditional_2_Conditional_21_Template, 5, 3, "div", 44);
922
913
  i0.ɵɵelementEnd()();
923
- i0.ɵɵelementStart(22, "div", 78)(23, "div", 79)(24, "div", 80);
924
- i0.ɵɵelement(25, "i", 81);
914
+ i0.ɵɵelementStart(22, "div", 76)(23, "div", 77)(24, "div", 78);
915
+ i0.ɵɵelement(25, "i", 79);
925
916
  i0.ɵɵelementStart(26, "span");
926
917
  i0.ɵɵtext(27, "Sync Schedule");
927
918
  i0.ɵɵelementEnd()()();
928
- i0.ɵɵconditionalCreate(28, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_28_Template, 1, 1, "mj-scheduled-job-summary", 82)(29, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_29_Template, 6, 0, "div", 83);
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);
929
920
  i0.ɵɵelementEnd();
930
- i0.ɵɵelementStart(30, "mj-scheduled-job-slide-panel", 84);
931
- i0.ɵɵlistener("Close", function ConnectionsComponent_Conditional_9_Conditional_2_Template_mj_scheduled_job_slide_panel_Close_30_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.CloseSchedulePanel()); })("Saved", function ConnectionsComponent_Conditional_9_Conditional_2_Template_mj_scheduled_job_slide_panel_Saved_30_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.OnScheduleSaved()); })("Deleted", function ConnectionsComponent_Conditional_9_Conditional_2_Template_mj_scheduled_job_slide_panel_Deleted_30_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.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()); });
932
923
  i0.ɵɵelementEnd();
933
- i0.ɵɵelementStart(31, "div", 85)(32, "div", 86)(33, "span", 87);
924
+ i0.ɵɵelementStart(31, "div", 83)(32, "div", 84)(33, "span", 85);
934
925
  i0.ɵɵtext(34);
935
- i0.ɵɵelementStart(35, "span", 36);
926
+ i0.ɵɵelementStart(35, "span", 34);
936
927
  i0.ɵɵtext(36, "\u00B7");
937
928
  i0.ɵɵelementEnd();
938
929
  i0.ɵɵtext(37);
939
930
  i0.ɵɵelementEnd()();
940
- i0.ɵɵelementStart(38, "div", 88)(39, "div", 89);
941
- i0.ɵɵelement(40, "i", 90);
942
- i0.ɵɵelementStart(41, "input", 91);
943
- i0.ɵɵlistener("input", function ConnectionsComponent_Conditional_9_Conditional_2_Template_input_input_41_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.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)); });
944
935
  i0.ɵɵelementEnd()();
945
- i0.ɵɵelementStart(42, "button", 92);
946
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Template_button_click_42_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.ToggleCreateTablesPanel()); });
947
- i0.ɵɵelement(43, "i", 93);
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);
948
939
  i0.ɵɵtext(44, " Create Tables ");
949
940
  i0.ɵɵelementEnd();
950
- i0.ɵɵelementStart(45, "button", 94);
951
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Template_button_click_45_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.ToggleAutoMapPanel()); });
952
- i0.ɵɵelement(46, "i", 95);
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);
953
944
  i0.ɵɵtext(47, " Auto-Map Schema ");
954
945
  i0.ɵɵelementEnd();
955
- i0.ɵɵelementStart(48, "button", 94);
956
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Template_button_click_48_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.ToggleAddMapPanel()); });
957
- i0.ɵɵelement(49, "i", 15);
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);
958
949
  i0.ɵɵtext(50, " Add Map ");
959
950
  i0.ɵɵelementEnd()()();
960
- i0.ɵɵconditionalCreate(51, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_51_Template, 5, 6, "div", 96);
961
- i0.ɵɵconditionalCreate(52, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Template, 31, 11, "div", 97);
962
- i0.ɵɵconditionalCreate(53, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Template, 16, 4, "div", 97);
963
- i0.ɵɵconditionalCreate(54, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Template, 33, 16, "div", 97);
964
- i0.ɵɵconditionalCreate(55, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_55_Template, 2, 0, "div", 16)(56, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_56_Template, 9, 0, "div", 98)(57, ConnectionsComponent_Conditional_9_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);
965
956
  } if (rf & 2) {
966
- const ctx_r0 = i0.ɵɵnextContext(2);
957
+ const ctx_r1 = i0.ɵɵnextContext(2);
967
958
  i0.ɵɵadvance(4);
968
- i0.ɵɵstyleProp("background-color", ctx_r0.GetIconBrandColor(ctx_r0.SelectedSummary.Integration.Integration));
959
+ i0.ɵɵstyleProp("background-color", ctx_r1.GetIconBrandColor(ctx_r1.SelectedSummary.Integration.Integration));
969
960
  i0.ɵɵadvance();
970
- i0.ɵɵclassMap(ctx_r0.GetIntegrationIcon(ctx_r0.SelectedSummary.Integration.Integration));
961
+ i0.ɵɵclassMap(ctx_r1.GetIntegrationIcon(ctx_r1.SelectedSummary.Integration.Integration));
971
962
  i0.ɵɵadvance(3);
972
- i0.ɵɵtextInterpolate(ctx_r0.SelectedSummary.Integration.Name);
963
+ i0.ɵɵtextInterpolate(ctx_r1.SelectedSummary.Integration.Name);
973
964
  i0.ɵɵadvance(2);
974
- i0.ɵɵtextInterpolate1(" ", ctx_r0.SelectedSummary.Integration.Company, " ");
965
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.SelectedSummary.Integration.Company, " ");
975
966
  i0.ɵɵadvance(3);
976
- i0.ɵɵtextInterpolate1(" ", ctx_r0.GetSourceTypeLabel(ctx_r0.SelectedSummary), " ");
967
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.GetSourceTypeLabel(ctx_r1.SelectedSummary), " ");
977
968
  i0.ɵɵadvance(3);
978
- i0.ɵɵclassMap(ctx_r0.GetStatusBadgeClass(ctx_r0.SelectedSummary));
969
+ i0.ɵɵclassMap(ctx_r1.GetStatusBadgeClass(ctx_r1.SelectedSummary));
979
970
  i0.ɵɵadvance();
980
- i0.ɵɵtextInterpolate(ctx_r0.GetStatusBadge(ctx_r0.SelectedSummary));
971
+ i0.ɵɵtextInterpolate(ctx_r1.GetStatusBadge(ctx_r1.SelectedSummary));
981
972
  i0.ɵɵadvance(4);
982
- i0.ɵɵconditional(ctx_r0.IsConnectionActive(ctx_r0.SelectedSummary) ? 21 : -1);
973
+ i0.ɵɵconditional(ctx_r1.IsConnectionActive(ctx_r1.SelectedSummary) ? 21 : -1);
983
974
  i0.ɵɵadvance(7);
984
- i0.ɵɵconditional(ctx_r0.ScheduledJobID ? 28 : 29);
975
+ i0.ɵɵconditional(ctx_r1.ScheduledJobID ? 28 : 29);
985
976
  i0.ɵɵadvance(2);
986
- i0.ɵɵproperty("IsOpen", ctx_r0.ShowScheduleSlidePanel)("ScheduledJobID", ctx_r0.ScheduledJobID)("JobTypeID", ctx_r0.IntegrationSyncJobTypeID)("DefaultConfiguration", ctx_r0.ScheduleDefaultConfiguration)("HideJobType", true);
977
+ i0.ɵɵproperty("IsOpen", ctx_r1.ShowScheduleSlidePanel)("ScheduledJobID", ctx_r1.ScheduledJobID)("JobTypeID", ctx_r1.IntegrationSyncJobTypeID)("DefaultConfiguration", ctx_r1.ScheduleDefaultConfiguration)("HideJobType", true);
987
978
  i0.ɵɵadvance(4);
988
- i0.ɵɵtextInterpolate2(" ", ctx_r0.DetailEntityMaps.length, " entity map", ctx_r0.DetailEntityMaps.length !== 1 ? "s" : "", " ");
979
+ i0.ɵɵtextInterpolate2(" ", ctx_r1.DetailEntityMaps.length, " entity map", ctx_r1.DetailEntityMaps.length !== 1 ? "s" : "", " ");
989
980
  i0.ɵɵadvance(3);
990
- i0.ɵɵtextInterpolate1(" ", ctx_r0.DetailActiveMapCount, " active ");
981
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.DetailActiveMapCount, " active ");
991
982
  i0.ɵɵadvance(4);
992
- i0.ɵɵproperty("value", ctx_r0.DetailSearchTerm);
983
+ i0.ɵɵproperty("value", ctx_r1.DetailSearchTerm);
993
984
  i0.ɵɵadvance();
994
- i0.ɵɵclassProp("active", ctx_r0.ShowCreateTablesPanel);
985
+ i0.ɵɵclassProp("active", ctx_r1.ShowCreateTablesPanel);
995
986
  i0.ɵɵadvance(3);
996
- i0.ɵɵclassProp("active", ctx_r0.ShowAutoMapPanel);
987
+ i0.ɵɵclassProp("active", ctx_r1.ShowAutoMapPanel);
997
988
  i0.ɵɵadvance(3);
998
- i0.ɵɵclassProp("active", ctx_r0.ShowAddMapPanel);
989
+ i0.ɵɵclassProp("active", ctx_r1.ShowAddMapPanel);
999
990
  i0.ɵɵadvance(3);
1000
- i0.ɵɵconditional(ctx_r0.SyncResult ? 51 : -1);
991
+ i0.ɵɵconditional(ctx_r1.SyncResult ? 51 : -1);
1001
992
  i0.ɵɵadvance();
1002
- i0.ɵɵconditional(ctx_r0.ShowAutoMapPanel ? 52 : -1);
993
+ i0.ɵɵconditional(ctx_r1.ShowAutoMapPanel ? 52 : -1);
1003
994
  i0.ɵɵadvance();
1004
- i0.ɵɵconditional(ctx_r0.ShowCreateTablesPanel ? 53 : -1);
995
+ i0.ɵɵconditional(ctx_r1.ShowCreateTablesPanel ? 53 : -1);
1005
996
  i0.ɵɵadvance();
1006
- i0.ɵɵconditional(ctx_r0.ShowAddMapPanel ? 54 : -1);
997
+ i0.ɵɵconditional(ctx_r1.ShowAddMapPanel ? 54 : -1);
1007
998
  i0.ɵɵadvance();
1008
- i0.ɵɵconditional(ctx_r0.IsDetailLoading ? 55 : ctx_r0.DetailEntityMaps.length === 0 && !ctx_r0.ShowAddMapPanel ? 56 : ctx_r0.DetailEntityMaps.length > 0 ? 57 : -1);
999
+ i0.ɵɵconditional(ctx_r1.IsDetailLoading ? 55 : ctx_r1.DetailEntityMaps.length === 0 && !ctx_r1.ShowAddMapPanel ? 56 : ctx_r1.DetailEntityMaps.length > 0 ? 57 : -1);
1009
1000
  } }
1010
- function ConnectionsComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1011
- i0.ɵɵelementStart(0, "div", 8);
1012
- i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_9_Conditional_1_Template, 1, 3, "app-visual-field-editor", 66)(2, ConnectionsComponent_Conditional_9_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);
1013
1004
  i0.ɵɵelementEnd();
1014
1005
  } if (rf & 2) {
1015
- const ctx_r0 = i0.ɵɵnextContext();
1006
+ const ctx_r1 = i0.ɵɵnextContext();
1016
1007
  i0.ɵɵadvance();
1017
- i0.ɵɵconditional(ctx_r0.EditorEntityMap ? 1 : 2);
1008
+ i0.ɵɵconditional(ctx_r1.EditorEntityMap ? 1 : 2);
1018
1009
  } }
1019
- function ConnectionsComponent_Conditional_10_For_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1020
- i0.ɵɵelement(0, "i", 149);
1010
+ function ConnectionsComponent_Conditional_9_For_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1011
+ i0.ɵɵelement(0, "i", 147);
1021
1012
  } }
1022
- function ConnectionsComponent_Conditional_10_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) {
1023
1014
  i0.ɵɵtext(0);
1024
1015
  } if (rf & 2) {
1025
1016
  const step_r31 = i0.ɵɵnextContext().$implicit;
1026
1017
  i0.ɵɵtextInterpolate1(" ", step_r31.Number, " ");
1027
1018
  } }
1028
- function ConnectionsComponent_Conditional_10_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1029
- i0.ɵɵelement(0, "div", 190);
1019
+ function ConnectionsComponent_Conditional_9_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1020
+ i0.ɵɵelement(0, "div", 188);
1030
1021
  } if (rf & 2) {
1031
1022
  const step_r31 = i0.ɵɵnextContext().$implicit;
1032
- const ctx_r0 = i0.ɵɵnextContext(2);
1033
- i0.ɵɵclassProp("step-line-active", ctx_r0.IsStepCompleted(step_r31.Number));
1023
+ const ctx_r1 = i0.ɵɵnextContext(2);
1024
+ i0.ɵɵclassProp("step-line-active", ctx_r1.IsStepCompleted(step_r31.Number));
1034
1025
  } }
1035
- function ConnectionsComponent_Conditional_10_For_9_Template(rf, ctx) { if (rf & 1) {
1036
- i0.ɵɵelementStart(0, "div", 186)(1, "div", 187);
1037
- i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_10_For_9_Conditional_2_Template, 1, 0, "i", 149)(3, ConnectionsComponent_Conditional_10_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);
1038
1029
  i0.ɵɵelementEnd();
1039
- i0.ɵɵelementStart(4, "span", 188);
1030
+ i0.ɵɵelementStart(4, "span", 186);
1040
1031
  i0.ɵɵtext(5);
1041
1032
  i0.ɵɵelementEnd()();
1042
- i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_10_For_9_Conditional_6_Template, 1, 2, "div", 189);
1033
+ i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_9_For_9_Conditional_6_Template, 1, 2, "div", 187);
1043
1034
  } if (rf & 2) {
1044
1035
  const step_r31 = ctx.$implicit;
1045
- const ctx_r0 = i0.ɵɵnextContext(2);
1046
- i0.ɵɵclassProp("step-active", ctx_r0.IsStepActive(step_r31.Number))("step-completed", ctx_r0.IsStepCompleted(step_r31.Number));
1036
+ const ctx_r1 = i0.ɵɵnextContext(2);
1037
+ i0.ɵɵclassProp("step-active", ctx_r1.IsStepActive(step_r31.Number))("step-completed", ctx_r1.IsStepCompleted(step_r31.Number));
1047
1038
  i0.ɵɵadvance(2);
1048
- i0.ɵɵconditional(ctx_r0.IsStepCompleted(step_r31.Number) ? 2 : 3);
1039
+ i0.ɵɵconditional(ctx_r1.IsStepCompleted(step_r31.Number) ? 2 : 3);
1049
1040
  i0.ɵɵadvance(3);
1050
1041
  i0.ɵɵtextInterpolate(step_r31.Label);
1051
1042
  i0.ɵɵadvance();
1052
- i0.ɵɵconditional(step_r31.Number < ctx_r0.WizardSteps.length ? 6 : -1);
1043
+ i0.ɵɵconditional(step_r31.Number < ctx_r1.WizardSteps.length ? 6 : -1);
1053
1044
  } }
1054
- function ConnectionsComponent_Conditional_10_Conditional_11_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1055
- i0.ɵɵelementStart(0, "div", 195);
1056
- i0.ɵɵelement(1, "i", 197);
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);
1057
1048
  i0.ɵɵelementStart(2, "p");
1058
1049
  i0.ɵɵtext(3, "No integrations configured");
1059
1050
  i0.ɵɵelementEnd();
1060
- i0.ɵɵelementStart(4, "span", 198);
1051
+ i0.ɵɵelementStart(4, "span", 196);
1061
1052
  i0.ɵɵtext(5, "Configure integration definitions in the admin area first.");
1062
1053
  i0.ɵɵelementEnd()();
1063
1054
  } }
1064
- function ConnectionsComponent_Conditional_10_Conditional_11_Conditional_7_Template(rf, ctx) { if (rf & 1) {
1065
- i0.ɵɵelementStart(0, "div", 195);
1066
- i0.ɵɵelement(1, "i", 199);
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);
1067
1058
  i0.ɵɵelementStart(2, "p");
1068
1059
  i0.ɵɵtext(3, "No matching integrations");
1069
1060
  i0.ɵɵelementEnd()();
1070
1061
  } }
1071
- function ConnectionsComponent_Conditional_10_Conditional_11_Conditional_8_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1072
- i0.ɵɵelementStart(0, "div", 204);
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);
1073
1064
  i0.ɵɵtext(1);
1074
1065
  i0.ɵɵelementEnd();
1075
1066
  } if (rf & 2) {
@@ -1077,61 +1068,61 @@ function ConnectionsComponent_Conditional_10_Conditional_11_Conditional_8_For_2_
1077
1068
  i0.ɵɵadvance();
1078
1069
  i0.ɵɵtextInterpolate(def_r34.Description);
1079
1070
  } }
1080
- function ConnectionsComponent_Conditional_10_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) {
1081
1072
  const _r33 = i0.ɵɵgetCurrentView();
1082
- i0.ɵɵelementStart(0, "div", 201);
1083
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_10_Conditional_11_Conditional_8_For_2_Template_div_click_0_listener() { const def_r34 = i0.ɵɵrestoreView(_r33).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.SelectIntegration(def_r34)); });
1084
- i0.ɵɵelementStart(1, "div", 202);
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);
1085
1076
  i0.ɵɵelement(2, "i");
1086
1077
  i0.ɵɵelementEnd();
1087
- i0.ɵɵelementStart(3, "div", 203);
1078
+ i0.ɵɵelementStart(3, "div", 201);
1088
1079
  i0.ɵɵtext(4);
1089
1080
  i0.ɵɵelementEnd();
1090
- i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_10_Conditional_11_Conditional_8_For_2_Conditional_5_Template, 2, 1, "div", 204);
1081
+ i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_9_Conditional_11_Conditional_8_For_2_Conditional_5_Template, 2, 1, "div", 202);
1091
1082
  i0.ɵɵelementEnd();
1092
1083
  } if (rf & 2) {
1093
1084
  const def_r34 = ctx.$implicit;
1094
- const ctx_r0 = i0.ɵɵnextContext(4);
1095
- i0.ɵɵclassProp("picker-selected", ctx_r0.IsSelectedIntegration(def_r34));
1085
+ const ctx_r1 = i0.ɵɵnextContext(4);
1086
+ i0.ɵɵclassProp("picker-selected", ctx_r1.IsSelectedIntegration(def_r34));
1096
1087
  i0.ɵɵadvance();
1097
- i0.ɵɵstyleProp("background-color", ctx_r0.GetIconBrandColor(def_r34.Name));
1088
+ i0.ɵɵstyleProp("background-color", ctx_r1.GetIconBrandColor(def_r34.Name));
1098
1089
  i0.ɵɵadvance();
1099
- i0.ɵɵclassMap(ctx_r0.GetIntegrationIcon(def_r34.Name, def_r34.Get("Icon")));
1090
+ i0.ɵɵclassMap(ctx_r1.GetIntegrationIcon(def_r34.Name, def_r34.Get("Icon")));
1100
1091
  i0.ɵɵadvance(2);
1101
1092
  i0.ɵɵtextInterpolate(def_r34.Name);
1102
1093
  i0.ɵɵadvance();
1103
1094
  i0.ɵɵconditional(def_r34.Description ? 5 : -1);
1104
1095
  } }
1105
- function ConnectionsComponent_Conditional_10_Conditional_11_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1106
- i0.ɵɵelementStart(0, "div", 196);
1107
- i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_10_Conditional_11_Conditional_8_For_2_Template, 6, 8, "div", 200, _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);
1108
1099
  i0.ɵɵelementEnd();
1109
1100
  } if (rf & 2) {
1110
- const ctx_r0 = i0.ɵɵnextContext(3);
1101
+ const ctx_r1 = i0.ɵɵnextContext(3);
1111
1102
  i0.ɵɵadvance();
1112
- i0.ɵɵrepeater(ctx_r0.FilteredIntegrations);
1103
+ i0.ɵɵrepeater(ctx_r1.FilteredIntegrations);
1113
1104
  } }
1114
- function ConnectionsComponent_Conditional_10_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1105
+ function ConnectionsComponent_Conditional_9_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1115
1106
  const _r32 = i0.ɵɵgetCurrentView();
1116
- i0.ɵɵelementStart(0, "div", 180)(1, "h3", 191);
1107
+ i0.ɵɵelementStart(0, "div", 178)(1, "h3", 189);
1117
1108
  i0.ɵɵtext(2, "What system do you want to connect?");
1118
1109
  i0.ɵɵelementEnd();
1119
- i0.ɵɵelementStart(3, "div", 192);
1120
- i0.ɵɵelement(4, "i", 193);
1121
- i0.ɵɵelementStart(5, "input", 194);
1122
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_10_Conditional_11_Template_input_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r32); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.SearchQuery, $event) || (ctx_r0.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); });
1123
1114
  i0.ɵɵelementEnd()();
1124
- i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_10_Conditional_11_Conditional_6_Template, 6, 0, "div", 195)(7, ConnectionsComponent_Conditional_10_Conditional_11_Conditional_7_Template, 4, 0, "div", 195)(8, ConnectionsComponent_Conditional_10_Conditional_11_Conditional_8_Template, 3, 0, "div", 196);
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);
1125
1116
  i0.ɵɵelementEnd();
1126
1117
  } if (rf & 2) {
1127
- const ctx_r0 = i0.ɵɵnextContext(2);
1118
+ const ctx_r1 = i0.ɵɵnextContext(2);
1128
1119
  i0.ɵɵadvance(5);
1129
- i0.ɵɵtwoWayProperty("ngModel", ctx_r0.SearchQuery);
1120
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.SearchQuery);
1130
1121
  i0.ɵɵadvance();
1131
- i0.ɵɵconditional(ctx_r0.FilteredIntegrations.length === 0 && ctx_r0.AvailableIntegrations.length === 0 ? 6 : ctx_r0.FilteredIntegrations.length === 0 ? 7 : 8);
1122
+ i0.ɵɵconditional(ctx_r1.FilteredIntegrations.length === 0 && ctx_r1.AvailableIntegrations.length === 0 ? 6 : ctx_r1.FilteredIntegrations.length === 0 ? 7 : 8);
1132
1123
  } }
1133
- function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_10_For_4_Template(rf, ctx) { if (rf & 1) {
1134
- i0.ɵɵelementStart(0, "option", 110);
1124
+ function ConnectionsComponent_Conditional_9_Conditional_12_Conditional_10_For_4_Template(rf, ctx) { if (rf & 1) {
1125
+ i0.ɵɵelementStart(0, "option", 108);
1135
1126
  i0.ɵɵtext(1);
1136
1127
  i0.ɵɵelementEnd();
1137
1128
  } if (rf & 2) {
@@ -1140,73 +1131,73 @@ function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_10_For_4
1140
1131
  i0.ɵɵadvance();
1141
1132
  i0.ɵɵtextInterpolate(company_r37.Name);
1142
1133
  } }
1143
- function ConnectionsComponent_Conditional_10_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) {
1144
1135
  const _r36 = i0.ɵɵgetCurrentView();
1145
- i0.ɵɵelementStart(0, "select", 220);
1146
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_10_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r36); const ctx_r0 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r0.SelectedCompanyID, $event) || (ctx_r0.SelectedCompanyID = $event); return i0.ɵɵresetView($event); });
1147
- i0.ɵɵelementStart(1, "option", 109);
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);
1148
1139
  i0.ɵɵtext(2, "Select a company...");
1149
1140
  i0.ɵɵelementEnd();
1150
- i0.ɵɵrepeaterCreate(3, ConnectionsComponent_Conditional_10_Conditional_12_Conditional_10_For_4_Template, 2, 2, "option", 110, _forTrack2);
1141
+ i0.ɵɵrepeaterCreate(3, ConnectionsComponent_Conditional_9_Conditional_12_Conditional_10_For_4_Template, 2, 2, "option", 108, _forTrack2);
1151
1142
  i0.ɵɵelementEnd();
1152
1143
  } if (rf & 2) {
1153
- const ctx_r0 = i0.ɵɵnextContext(3);
1154
- i0.ɵɵtwoWayProperty("ngModel", ctx_r0.SelectedCompanyID);
1144
+ const ctx_r1 = i0.ɵɵnextContext(3);
1145
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.SelectedCompanyID);
1155
1146
  i0.ɵɵadvance();
1156
1147
  i0.ɵɵproperty("ngValue", null);
1157
1148
  i0.ɵɵadvance(2);
1158
- i0.ɵɵrepeater(ctx_r0.Companies);
1149
+ i0.ɵɵrepeater(ctx_r1.Companies);
1159
1150
  } }
1160
- function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1161
- i0.ɵɵelement(0, "input", 210);
1151
+ function ConnectionsComponent_Conditional_9_Conditional_12_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1152
+ i0.ɵɵelement(0, "input", 208);
1162
1153
  } if (rf & 2) {
1163
- const ctx_r0 = i0.ɵɵnextContext(3);
1164
- i0.ɵɵproperty("value", ctx_r0.Companies[0].Name);
1154
+ const ctx_r1 = i0.ɵɵnextContext(3);
1155
+ i0.ɵɵproperty("value", ctx_r1.Companies[0].Name);
1165
1156
  } }
1166
- function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1167
- i0.ɵɵelementStart(0, "div", 211);
1157
+ function ConnectionsComponent_Conditional_9_Conditional_12_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1158
+ i0.ɵɵelementStart(0, "div", 209);
1168
1159
  i0.ɵɵtext(1, "No companies available. Create one in the admin area.");
1169
1160
  i0.ɵɵelementEnd();
1170
1161
  } }
1171
- function ConnectionsComponent_Conditional_10_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) {
1172
1163
  const _r38 = i0.ɵɵgetCurrentView();
1173
- i0.ɵɵelementStart(0, "div", 216)(1, "div", 221);
1174
- i0.ɵɵelement(2, "i", 222);
1164
+ i0.ɵɵelementStart(0, "div", 214)(1, "div", 219);
1165
+ i0.ɵɵelement(2, "i", 220);
1175
1166
  i0.ɵɵelementStart(3, "span");
1176
1167
  i0.ɵɵtext(4);
1177
1168
  i0.ɵɵelementEnd()();
1178
- i0.ɵɵelementStart(5, "button", 223);
1179
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_22_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r38); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.ClearCredential()); });
1180
- i0.ɵɵelement(6, "i", 121);
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);
1181
1172
  i0.ɵɵelementEnd()();
1182
1173
  } if (rf & 2) {
1183
- const ctx_r0 = i0.ɵɵnextContext(3);
1174
+ const ctx_r1 = i0.ɵɵnextContext(3);
1184
1175
  i0.ɵɵadvance(4);
1185
- i0.ɵɵtextInterpolate(ctx_r0.SelectedCredential.Name);
1176
+ i0.ɵɵtextInterpolate(ctx_r1.SelectedCredential.Name);
1186
1177
  } }
1187
- function ConnectionsComponent_Conditional_10_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) {
1188
1179
  const _r39 = i0.ɵɵgetCurrentView();
1189
- i0.ɵɵelementStart(0, "div", 217)(1, "button", 45);
1190
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_23_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r39); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.ShowExistingCredentials()); });
1191
- i0.ɵɵelement(2, "i", 222);
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);
1192
1183
  i0.ɵɵtext(3, " Choose Existing Credential ");
1193
1184
  i0.ɵɵelementEnd();
1194
- i0.ɵɵelementStart(4, "button", 45);
1195
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_23_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r39); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.OpenCredentialDialog()); });
1196
- i0.ɵɵelement(5, "i", 15);
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);
1197
1188
  i0.ɵɵtext(6, " Create New Credential ");
1198
1189
  i0.ɵɵelementEnd()();
1199
1190
  } }
1200
- function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_24_Template(rf, ctx) { if (rf & 1) {
1201
- i0.ɵɵelementStart(0, "div", 218);
1202
- i0.ɵɵelement(1, "mj-loading", 224);
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);
1203
1194
  i0.ɵɵelementEnd();
1204
1195
  } }
1205
- function ConnectionsComponent_Conditional_10_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) {
1206
1197
  const _r40 = i0.ɵɵgetCurrentView();
1207
- i0.ɵɵelementStart(0, "div", 226);
1208
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_25_For_2_Template_div_click_0_listener() { const cred_r41 = i0.ɵɵrestoreView(_r40).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.SelectExistingCredential(cred_r41)); });
1209
- i0.ɵɵelement(1, "i", 222);
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);
1210
1201
  i0.ɵɵelementStart(2, "span");
1211
1202
  i0.ɵɵtext(3);
1212
1203
  i0.ɵɵelementEnd()();
@@ -1215,228 +1206,228 @@ function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_25_For_2
1215
1206
  i0.ɵɵadvance(3);
1216
1207
  i0.ɵɵtextInterpolate(cred_r41.Name);
1217
1208
  } }
1218
- function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_25_Template(rf, ctx) { if (rf & 1) {
1219
- i0.ɵɵelementStart(0, "div", 219);
1220
- i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_10_Conditional_12_Conditional_25_For_2_Template, 4, 1, "div", 225, _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);
1221
1212
  i0.ɵɵelementEnd();
1222
1213
  } if (rf & 2) {
1223
- const ctx_r0 = i0.ɵɵnextContext(3);
1214
+ const ctx_r1 = i0.ɵɵnextContext(3);
1224
1215
  i0.ɵɵadvance();
1225
- i0.ɵɵrepeater(ctx_r0.ExistingCredentials);
1216
+ i0.ɵɵrepeater(ctx_r1.ExistingCredentials);
1226
1217
  } }
1227
- function ConnectionsComponent_Conditional_10_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1218
+ function ConnectionsComponent_Conditional_9_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1228
1219
  const _r35 = i0.ɵɵgetCurrentView();
1229
- i0.ɵɵelementStart(0, "div", 180)(1, "h3", 191);
1220
+ i0.ɵɵelementStart(0, "div", 178)(1, "h3", 189);
1230
1221
  i0.ɵɵtext(2, "Set up your connection");
1231
1222
  i0.ɵɵelementEnd();
1232
- i0.ɵɵelementStart(3, "div", 205)(4, "label", 206);
1223
+ i0.ɵɵelementStart(3, "div", 203)(4, "label", 204);
1233
1224
  i0.ɵɵtext(5, "Connection Name");
1234
1225
  i0.ɵɵelementEnd();
1235
- i0.ɵɵelementStart(6, "input", 207);
1236
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_10_Conditional_12_Template_input_ngModelChange_6_listener($event) { i0.ɵɵrestoreView(_r35); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.ConnectionName, $event) || (ctx_r0.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); });
1237
1228
  i0.ɵɵelementEnd()();
1238
- i0.ɵɵelementStart(7, "div", 205)(8, "label", 208);
1229
+ i0.ɵɵelementStart(7, "div", 203)(8, "label", 206);
1239
1230
  i0.ɵɵtext(9, "Company");
1240
1231
  i0.ɵɵelementEnd();
1241
- i0.ɵɵconditionalCreate(10, ConnectionsComponent_Conditional_10_Conditional_12_Conditional_10_Template, 5, 2, "select", 209)(11, ConnectionsComponent_Conditional_10_Conditional_12_Conditional_11_Template, 1, 1, "input", 210)(12, ConnectionsComponent_Conditional_10_Conditional_12_Conditional_12_Template, 2, 0, "div", 211);
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);
1242
1233
  i0.ɵɵelementEnd();
1243
- i0.ɵɵelementStart(13, "div", 205)(14, "label", 212);
1234
+ i0.ɵɵelementStart(13, "div", 203)(14, "label", 210);
1244
1235
  i0.ɵɵtext(15, "Description ");
1245
- i0.ɵɵelementStart(16, "span", 213);
1236
+ i0.ɵɵelementStart(16, "span", 211);
1246
1237
  i0.ɵɵtext(17, "(optional)");
1247
1238
  i0.ɵɵelementEnd()();
1248
- i0.ɵɵelementStart(18, "textarea", 214);
1249
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_10_Conditional_12_Template_textarea_ngModelChange_18_listener($event) { i0.ɵɵrestoreView(_r35); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.ConnectionDescription, $event) || (ctx_r0.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); });
1250
1241
  i0.ɵɵelementEnd()();
1251
- i0.ɵɵelementStart(19, "div", 205)(20, "label", 215);
1242
+ i0.ɵɵelementStart(19, "div", 203)(20, "label", 213);
1252
1243
  i0.ɵɵtext(21, "Credential");
1253
1244
  i0.ɵɵelementEnd();
1254
- i0.ɵɵconditionalCreate(22, ConnectionsComponent_Conditional_10_Conditional_12_Conditional_22_Template, 7, 1, "div", 216)(23, ConnectionsComponent_Conditional_10_Conditional_12_Conditional_23_Template, 7, 0, "div", 217);
1255
- i0.ɵɵconditionalCreate(24, ConnectionsComponent_Conditional_10_Conditional_12_Conditional_24_Template, 2, 0, "div", 218);
1256
- i0.ɵɵconditionalCreate(25, ConnectionsComponent_Conditional_10_Conditional_12_Conditional_25_Template, 3, 0, "div", 219);
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);
1257
1248
  i0.ɵɵelementEnd()();
1258
1249
  } if (rf & 2) {
1259
- const ctx_r0 = i0.ɵɵnextContext(2);
1250
+ const ctx_r1 = i0.ɵɵnextContext(2);
1260
1251
  i0.ɵɵadvance(6);
1261
- i0.ɵɵtwoWayProperty("ngModel", ctx_r0.ConnectionName);
1252
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ConnectionName);
1262
1253
  i0.ɵɵadvance(4);
1263
- i0.ɵɵconditional(ctx_r0.NeedsCompanyPicker ? 10 : ctx_r0.Companies.length === 1 ? 11 : 12);
1254
+ i0.ɵɵconditional(ctx_r1.NeedsCompanyPicker ? 10 : ctx_r1.Companies.length === 1 ? 11 : 12);
1264
1255
  i0.ɵɵadvance(8);
1265
- i0.ɵɵtwoWayProperty("ngModel", ctx_r0.ConnectionDescription);
1256
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ConnectionDescription);
1266
1257
  i0.ɵɵadvance(4);
1267
- i0.ɵɵconditional(ctx_r0.SelectedCredential ? 22 : 23);
1258
+ i0.ɵɵconditional(ctx_r1.SelectedCredential ? 22 : 23);
1268
1259
  i0.ɵɵadvance(2);
1269
- i0.ɵɵconditional(ctx_r0.IsLoadingCredentials ? 24 : -1);
1260
+ i0.ɵɵconditional(ctx_r1.IsLoadingCredentials ? 24 : -1);
1270
1261
  i0.ɵɵadvance();
1271
- i0.ɵɵconditional(!ctx_r0.IsLoadingCredentials && ctx_r0.ExistingCredentials.length > 0 && !ctx_r0.SelectedCredential ? 25 : -1);
1262
+ i0.ɵɵconditional(!ctx_r1.IsLoadingCredentials && ctx_r1.ExistingCredentials.length > 0 && !ctx_r1.SelectedCredential ? 25 : -1);
1272
1263
  } }
1273
- function ConnectionsComponent_Conditional_10_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) {
1274
1265
  const _r42 = i0.ɵɵgetCurrentView();
1275
- i0.ɵɵelementStart(0, "div", 227)(1, "button", 230);
1276
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_10_Conditional_13_Conditional_3_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r42); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.TestNewConnection()); });
1277
- i0.ɵɵelement(2, "i", 231);
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);
1278
1269
  i0.ɵɵtext(3, " Test Connection ");
1279
1270
  i0.ɵɵelementEnd();
1280
- i0.ɵɵelementStart(4, "p", 232);
1271
+ i0.ɵɵelementStart(4, "p", 230);
1281
1272
  i0.ɵɵtext(5, "We'll verify we can reach your system and authenticate.");
1282
1273
  i0.ɵɵelementEnd()();
1283
1274
  } }
1284
- function ConnectionsComponent_Conditional_10_Conditional_13_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1285
- i0.ɵɵelementStart(0, "div", 228)(1, "div", 233);
1286
- i0.ɵɵelement(2, "i", 234);
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);
1287
1278
  i0.ɵɵelementEnd();
1288
1279
  i0.ɵɵelementStart(3, "p");
1289
1280
  i0.ɵɵtext(4, "Testing connection...");
1290
1281
  i0.ɵɵelementEnd()();
1291
1282
  } }
1292
- function ConnectionsComponent_Conditional_10_Conditional_13_Conditional_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1293
- i0.ɵɵelement(0, "i", 50);
1283
+ function ConnectionsComponent_Conditional_9_Conditional_13_Conditional_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1284
+ i0.ɵɵelement(0, "i", 48);
1294
1285
  } }
1295
- function ConnectionsComponent_Conditional_10_Conditional_13_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1296
- i0.ɵɵelement(0, "i", 51);
1286
+ function ConnectionsComponent_Conditional_9_Conditional_13_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1287
+ i0.ɵɵelement(0, "i", 49);
1297
1288
  } }
1298
- function ConnectionsComponent_Conditional_10_Conditional_13_Conditional_5_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1299
- i0.ɵɵelementStart(0, "div", 238);
1289
+ function ConnectionsComponent_Conditional_9_Conditional_13_Conditional_5_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1290
+ i0.ɵɵelementStart(0, "div", 236);
1300
1291
  i0.ɵɵtext(1);
1301
1292
  i0.ɵɵelementEnd();
1302
1293
  } if (rf & 2) {
1303
- const ctx_r0 = i0.ɵɵnextContext(4);
1294
+ const ctx_r1 = i0.ɵɵnextContext(4);
1304
1295
  i0.ɵɵadvance();
1305
- i0.ɵɵtextInterpolate1(" Server version: ", ctx_r0.TestResult.ServerVersion, " ");
1296
+ i0.ɵɵtextInterpolate1(" Server version: ", ctx_r1.TestResult.ServerVersion, " ");
1306
1297
  } }
1307
- function ConnectionsComponent_Conditional_10_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) {
1308
1299
  const _r43 = i0.ɵɵgetCurrentView();
1309
- i0.ɵɵelementStart(0, "button", 240);
1310
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_10_Conditional_13_Conditional_5_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r43); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.TestNewConnection()); });
1311
- i0.ɵɵelement(1, "i", 241);
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);
1312
1303
  i0.ɵɵtext(2, " Retry ");
1313
1304
  i0.ɵɵelementEnd();
1314
1305
  } }
1315
- function ConnectionsComponent_Conditional_10_Conditional_13_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1316
- i0.ɵɵelementStart(0, "div", 235)(1, "div", 236);
1317
- i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_10_Conditional_13_Conditional_5_Conditional_2_Template, 1, 0, "i", 50)(3, ConnectionsComponent_Conditional_10_Conditional_13_Conditional_5_Conditional_3_Template, 1, 0, "i", 51);
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);
1318
1309
  i0.ɵɵelementEnd();
1319
- i0.ɵɵelementStart(4, "div", 237);
1310
+ i0.ɵɵelementStart(4, "div", 235);
1320
1311
  i0.ɵɵtext(5);
1321
1312
  i0.ɵɵelementEnd();
1322
- i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_10_Conditional_13_Conditional_5_Conditional_6_Template, 2, 1, "div", 238);
1323
- i0.ɵɵconditionalCreate(7, ConnectionsComponent_Conditional_10_Conditional_13_Conditional_5_Conditional_7_Template, 3, 0, "button", 239);
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);
1324
1315
  i0.ɵɵelementEnd();
1325
1316
  } if (rf & 2) {
1326
- const ctx_r0 = i0.ɵɵnextContext(3);
1327
- i0.ɵɵclassProp("test-result-success", ctx_r0.TestResult.Success)("test-result-failure", !ctx_r0.TestResult.Success);
1317
+ const ctx_r1 = i0.ɵɵnextContext(3);
1318
+ i0.ɵɵclassProp("test-result-success", ctx_r1.TestResult.Success)("test-result-failure", !ctx_r1.TestResult.Success);
1328
1319
  i0.ɵɵadvance(2);
1329
- i0.ɵɵconditional(ctx_r0.TestResult.Success ? 2 : 3);
1320
+ i0.ɵɵconditional(ctx_r1.TestResult.Success ? 2 : 3);
1330
1321
  i0.ɵɵadvance(3);
1331
- i0.ɵɵtextInterpolate(ctx_r0.TestResult.Message);
1322
+ i0.ɵɵtextInterpolate(ctx_r1.TestResult.Message);
1332
1323
  i0.ɵɵadvance();
1333
- i0.ɵɵconditional(ctx_r0.TestResult.Success && ctx_r0.TestResult.ServerVersion ? 6 : -1);
1324
+ i0.ɵɵconditional(ctx_r1.TestResult.Success && ctx_r1.TestResult.ServerVersion ? 6 : -1);
1334
1325
  i0.ɵɵadvance();
1335
- i0.ɵɵconditional(!ctx_r0.TestResult.Success ? 7 : -1);
1326
+ i0.ɵɵconditional(!ctx_r1.TestResult.Success ? 7 : -1);
1336
1327
  } }
1337
- function ConnectionsComponent_Conditional_10_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1338
- i0.ɵɵelementStart(0, "div", 181)(1, "h3", 191);
1328
+ function ConnectionsComponent_Conditional_9_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1329
+ i0.ɵɵelementStart(0, "div", 179)(1, "h3", 189);
1339
1330
  i0.ɵɵtext(2, "Let's verify everything works");
1340
1331
  i0.ɵɵelementEnd();
1341
- i0.ɵɵconditionalCreate(3, ConnectionsComponent_Conditional_10_Conditional_13_Conditional_3_Template, 6, 0, "div", 227);
1342
- i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_10_Conditional_13_Conditional_4_Template, 5, 0, "div", 228);
1343
- i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_10_Conditional_13_Conditional_5_Template, 8, 8, "div", 229);
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);
1344
1335
  i0.ɵɵelementEnd();
1345
1336
  } if (rf & 2) {
1346
- const ctx_r0 = i0.ɵɵnextContext(2);
1337
+ const ctx_r1 = i0.ɵɵnextContext(2);
1347
1338
  i0.ɵɵadvance(3);
1348
- i0.ɵɵconditional(!ctx_r0.TestResult && !ctx_r0.IsTesting ? 3 : -1);
1339
+ i0.ɵɵconditional(!ctx_r1.TestResult && !ctx_r1.IsTesting ? 3 : -1);
1349
1340
  i0.ɵɵadvance();
1350
- i0.ɵɵconditional(ctx_r0.IsTesting ? 4 : -1);
1341
+ i0.ɵɵconditional(ctx_r1.IsTesting ? 4 : -1);
1351
1342
  i0.ɵɵadvance();
1352
- i0.ɵɵconditional(ctx_r0.TestResult ? 5 : -1);
1343
+ i0.ɵɵconditional(ctx_r1.TestResult ? 5 : -1);
1353
1344
  } }
1354
- function ConnectionsComponent_Conditional_10_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1345
+ function ConnectionsComponent_Conditional_9_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1355
1346
  const _r44 = i0.ɵɵgetCurrentView();
1356
- i0.ɵɵelementStart(0, "button", 45);
1357
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_10_Conditional_17_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r44); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.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()); });
1358
1349
  i0.ɵɵtext(1, " Back ");
1359
1350
  i0.ɵɵelementEnd();
1360
1351
  } }
1361
- function ConnectionsComponent_Conditional_10_Conditional_19_Template(rf, ctx) { if (rf & 1) {
1362
- i0.ɵɵelement(0, "i", 44);
1352
+ function ConnectionsComponent_Conditional_9_Conditional_19_Template(rf, ctx) { if (rf & 1) {
1353
+ i0.ɵɵelement(0, "i", 42);
1363
1354
  i0.ɵɵtext(1, " Saving... ");
1364
1355
  } }
1365
- function ConnectionsComponent_Conditional_10_Conditional_20_Template(rf, ctx) { if (rf & 1) {
1356
+ function ConnectionsComponent_Conditional_9_Conditional_20_Template(rf, ctx) { if (rf & 1) {
1366
1357
  i0.ɵɵtext(0);
1367
1358
  } if (rf & 2) {
1368
- const ctx_r0 = i0.ɵɵnextContext(2);
1369
- i0.ɵɵtextInterpolate1(" ", ctx_r0.NextButtonLabel, " ");
1359
+ const ctx_r1 = i0.ɵɵnextContext(2);
1360
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.NextButtonLabel, " ");
1370
1361
  } }
1371
- function ConnectionsComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1362
+ function ConnectionsComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1372
1363
  const _r30 = i0.ɵɵgetCurrentView();
1373
- i0.ɵɵelementStart(0, "div", 9)(1, "div", 175)(2, "button", 176);
1374
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_10_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r30); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.CloseWizard()); });
1375
- i0.ɵɵelement(3, "i", 70);
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);
1376
1367
  i0.ɵɵtext(4, " Back to Integrations ");
1377
1368
  i0.ɵɵelementEnd();
1378
- i0.ɵɵelementStart(5, "h2", 177);
1369
+ i0.ɵɵelementStart(5, "h2", 175);
1379
1370
  i0.ɵɵtext(6, "New Integration");
1380
1371
  i0.ɵɵelementEnd()();
1381
- i0.ɵɵelementStart(7, "div", 178);
1382
- i0.ɵɵrepeaterCreate(8, ConnectionsComponent_Conditional_10_For_9_Template, 7, 7, null, null, _forTrack3);
1383
- i0.ɵɵelementEnd();
1384
- i0.ɵɵelementStart(10, "div", 179);
1385
- i0.ɵɵconditionalCreate(11, ConnectionsComponent_Conditional_10_Conditional_11_Template, 9, 2, "div", 180);
1386
- i0.ɵɵconditionalCreate(12, ConnectionsComponent_Conditional_10_Conditional_12_Template, 26, 6, "div", 180);
1387
- i0.ɵɵconditionalCreate(13, ConnectionsComponent_Conditional_10_Conditional_13_Template, 6, 3, "div", 181);
1388
- i0.ɵɵelementEnd();
1389
- i0.ɵɵelementStart(14, "div", 182);
1390
- i0.ɵɵelement(15, "div", 183);
1391
- i0.ɵɵelementStart(16, "div", 184);
1392
- i0.ɵɵconditionalCreate(17, ConnectionsComponent_Conditional_10_Conditional_17_Template, 2, 0, "button", 185);
1393
- i0.ɵɵelementStart(18, "button", 57);
1394
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_10_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r30); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.FinishWizard()); });
1395
- i0.ɵɵconditionalCreate(19, ConnectionsComponent_Conditional_10_Conditional_19_Template, 2, 0)(20, ConnectionsComponent_Conditional_10_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);
1396
1387
  i0.ɵɵelementEnd()()()();
1397
1388
  } if (rf & 2) {
1398
- const ctx_r0 = i0.ɵɵnextContext();
1389
+ const ctx_r1 = i0.ɵɵnextContext();
1399
1390
  i0.ɵɵadvance(8);
1400
- i0.ɵɵrepeater(ctx_r0.WizardSteps);
1391
+ i0.ɵɵrepeater(ctx_r1.WizardSteps);
1401
1392
  i0.ɵɵadvance(3);
1402
- i0.ɵɵconditional(ctx_r0.WizardStep === 1 ? 11 : -1);
1393
+ i0.ɵɵconditional(ctx_r1.WizardStep === 1 ? 11 : -1);
1403
1394
  i0.ɵɵadvance();
1404
- i0.ɵɵconditional(ctx_r0.WizardStep === 2 ? 12 : -1);
1395
+ i0.ɵɵconditional(ctx_r1.WizardStep === 2 ? 12 : -1);
1405
1396
  i0.ɵɵadvance();
1406
- i0.ɵɵconditional(ctx_r0.WizardStep === 3 ? 13 : -1);
1397
+ i0.ɵɵconditional(ctx_r1.WizardStep === 3 ? 13 : -1);
1407
1398
  i0.ɵɵadvance(4);
1408
- i0.ɵɵconditional(ctx_r0.WizardStep > 1 ? 17 : -1);
1399
+ i0.ɵɵconditional(ctx_r1.WizardStep > 1 ? 17 : -1);
1409
1400
  i0.ɵɵadvance();
1410
- i0.ɵɵproperty("disabled", ctx_r0.IsNextDisabled || ctx_r0.IsSaving);
1401
+ i0.ɵɵproperty("disabled", ctx_r1.IsNextDisabled || ctx_r1.IsSaving);
1411
1402
  i0.ɵɵadvance();
1412
- i0.ɵɵconditional(ctx_r0.IsSaving ? 19 : 20);
1403
+ i0.ɵɵconditional(ctx_r1.IsSaving ? 19 : 20);
1413
1404
  } }
1414
- function ConnectionsComponent_Conditional_13_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1415
- i0.ɵɵelementStart(0, "div", 246);
1416
- i0.ɵɵelement(1, "mj-loading", 247);
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);
1417
1408
  i0.ɵɵelementEnd();
1418
1409
  } }
1419
- function ConnectionsComponent_Conditional_13_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) {
1420
1411
  const _r47 = i0.ɵɵgetCurrentView();
1421
- i0.ɵɵelementStart(0, "div", 255)(1, "div", 258);
1422
- i0.ɵɵelement(2, "i", 222);
1412
+ i0.ɵɵelementStart(0, "div", 253)(1, "div", 256);
1413
+ i0.ɵɵelement(2, "i", 220);
1423
1414
  i0.ɵɵelementStart(3, "span");
1424
1415
  i0.ɵɵtext(4);
1425
1416
  i0.ɵɵelementEnd()();
1426
- i0.ɵɵelementStart(5, "button", 259);
1427
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_13_Conditional_9_Conditional_17_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r47); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.ClearEditCredential()); });
1428
- i0.ɵɵelement(6, "i", 121);
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);
1429
1420
  i0.ɵɵelementEnd()();
1430
1421
  } if (rf & 2) {
1431
- const ctx_r0 = i0.ɵɵnextContext(3);
1422
+ const ctx_r1 = i0.ɵɵnextContext(3);
1432
1423
  i0.ɵɵadvance(4);
1433
- i0.ɵɵtextInterpolate(ctx_r0.EditCredential.Name);
1424
+ i0.ɵɵtextInterpolate(ctx_r1.EditCredential.Name);
1434
1425
  } }
1435
- function ConnectionsComponent_Conditional_13_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) {
1436
1427
  const _r49 = i0.ɵɵgetCurrentView();
1437
- i0.ɵɵelementStart(0, "div", 264);
1438
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_13_Conditional_9_Conditional_18_Conditional_4_For_2_Template_div_click_0_listener() { const cred_r50 = i0.ɵɵrestoreView(_r49).$implicit; const ctx_r0 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r0.SelectEditCredential(cred_r50)); });
1439
- i0.ɵɵelement(1, "i", 222);
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);
1440
1431
  i0.ɵɵelementStart(2, "span");
1441
1432
  i0.ɵɵtext(3);
1442
1433
  i0.ɵɵelementEnd()();
@@ -1445,145 +1436,145 @@ function ConnectionsComponent_Conditional_13_Conditional_9_Conditional_18_Condit
1445
1436
  i0.ɵɵadvance(3);
1446
1437
  i0.ɵɵtextInterpolate(cred_r50.Name);
1447
1438
  } }
1448
- function ConnectionsComponent_Conditional_13_Conditional_9_Conditional_18_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1449
- i0.ɵɵelementStart(0, "div", 262);
1450
- i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_13_Conditional_9_Conditional_18_Conditional_4_For_2_Template, 4, 1, "div", 263, _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);
1451
1442
  i0.ɵɵelementEnd();
1452
1443
  } if (rf & 2) {
1453
- const ctx_r0 = i0.ɵɵnextContext(4);
1444
+ const ctx_r1 = i0.ɵɵnextContext(4);
1454
1445
  i0.ɵɵadvance();
1455
- i0.ɵɵrepeater(ctx_r0.EditCredentials);
1446
+ i0.ɵɵrepeater(ctx_r1.EditCredentials);
1456
1447
  } }
1457
- function ConnectionsComponent_Conditional_13_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) {
1458
1449
  const _r48 = i0.ɵɵgetCurrentView();
1459
- i0.ɵɵelementStart(0, "div", 260)(1, "button", 261);
1460
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_13_Conditional_9_Conditional_18_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r48); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.OpenEditCredentialDialog()); });
1461
- i0.ɵɵelement(2, "i", 15);
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);
1462
1453
  i0.ɵɵtext(3, " New Credential ");
1463
1454
  i0.ɵɵelementEnd()();
1464
- i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_13_Conditional_9_Conditional_18_Conditional_4_Template, 3, 0, "div", 262);
1455
+ i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_12_Conditional_9_Conditional_18_Conditional_4_Template, 3, 0, "div", 260);
1465
1456
  } if (rf & 2) {
1466
- const ctx_r0 = i0.ɵɵnextContext(3);
1457
+ const ctx_r1 = i0.ɵɵnextContext(3);
1467
1458
  i0.ɵɵadvance(4);
1468
- i0.ɵɵconditional(ctx_r0.EditCredentials.length > 0 ? 4 : -1);
1459
+ i0.ɵɵconditional(ctx_r1.EditCredentials.length > 0 ? 4 : -1);
1469
1460
  } }
1470
- function ConnectionsComponent_Conditional_13_Conditional_9_Conditional_31_Template(rf, ctx) { if (rf & 1) {
1471
- i0.ɵɵelement(0, "i", 44);
1461
+ function ConnectionsComponent_Conditional_12_Conditional_9_Conditional_31_Template(rf, ctx) { if (rf & 1) {
1462
+ i0.ɵɵelement(0, "i", 42);
1472
1463
  i0.ɵɵtext(1, " Saving... ");
1473
1464
  } }
1474
- function ConnectionsComponent_Conditional_13_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) {
1475
1466
  i0.ɵɵtext(0, " Save Changes ");
1476
1467
  } }
1477
- function ConnectionsComponent_Conditional_13_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1468
+ function ConnectionsComponent_Conditional_12_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1478
1469
  const _r46 = i0.ɵɵgetCurrentView();
1479
- i0.ɵɵelementStart(0, "div", 248)(1, "div", 249)(2, "label", 250);
1470
+ i0.ɵɵelementStart(0, "div", 246)(1, "div", 247)(2, "label", 248);
1480
1471
  i0.ɵɵtext(3, "Connection Name");
1481
1472
  i0.ɵɵelementEnd();
1482
- i0.ɵɵelementStart(4, "input", 251);
1483
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_13_Conditional_9_Template_input_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r46); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.EditName, $event) || (ctx_r0.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); });
1484
1475
  i0.ɵɵelementEnd()();
1485
- i0.ɵɵelementStart(5, "div", 249)(6, "label", 250);
1476
+ i0.ɵɵelementStart(5, "div", 247)(6, "label", 248);
1486
1477
  i0.ɵɵtext(7, "Status");
1487
1478
  i0.ɵɵelementEnd();
1488
- i0.ɵɵelementStart(8, "div", 252)(9, "label", 253)(10, "input", 138);
1489
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_13_Conditional_9_Template_input_ngModelChange_10_listener($event) { i0.ɵɵrestoreView(_r46); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.EditIsActive, $event) || (ctx_r0.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); });
1490
1481
  i0.ɵɵelementEnd();
1491
- i0.ɵɵelement(11, "span", 165);
1482
+ i0.ɵɵelement(11, "span", 163);
1492
1483
  i0.ɵɵelementEnd();
1493
- i0.ɵɵelementStart(12, "span", 254);
1484
+ i0.ɵɵelementStart(12, "span", 252);
1494
1485
  i0.ɵɵtext(13);
1495
1486
  i0.ɵɵelementEnd()()();
1496
- i0.ɵɵelementStart(14, "div", 249)(15, "label", 250);
1487
+ i0.ɵɵelementStart(14, "div", 247)(15, "label", 248);
1497
1488
  i0.ɵɵtext(16, "Credential");
1498
1489
  i0.ɵɵelementEnd();
1499
- i0.ɵɵconditionalCreate(17, ConnectionsComponent_Conditional_13_Conditional_9_Conditional_17_Template, 7, 1, "div", 255)(18, ConnectionsComponent_Conditional_13_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);
1500
1491
  i0.ɵɵelementEnd();
1501
- i0.ɵɵelementStart(19, "div", 249)(20, "label", 250);
1492
+ i0.ɵɵelementStart(19, "div", 247)(20, "label", 248);
1502
1493
  i0.ɵɵtext(21, "Integration");
1503
1494
  i0.ɵɵelementEnd();
1504
- i0.ɵɵelementStart(22, "div", 256);
1495
+ i0.ɵɵelementStart(22, "div", 254);
1505
1496
  i0.ɵɵtext(23);
1506
1497
  i0.ɵɵelementEnd()();
1507
- i0.ɵɵelementStart(24, "div", 249)(25, "label", 250);
1498
+ i0.ɵɵelementStart(24, "div", 247)(25, "label", 248);
1508
1499
  i0.ɵɵtext(26, "Company");
1509
1500
  i0.ɵɵelementEnd();
1510
- i0.ɵɵelementStart(27, "div", 256);
1501
+ i0.ɵɵelementStart(27, "div", 254);
1511
1502
  i0.ɵɵtext(28);
1512
1503
  i0.ɵɵelementEnd()()();
1513
- i0.ɵɵelementStart(29, "div", 257)(30, "button", 57);
1514
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_13_Conditional_9_Template_button_click_30_listener() { i0.ɵɵrestoreView(_r46); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SaveEditChanges()); });
1515
- i0.ɵɵconditionalCreate(31, ConnectionsComponent_Conditional_13_Conditional_9_Conditional_31_Template, 2, 0)(32, ConnectionsComponent_Conditional_13_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);
1516
1507
  i0.ɵɵelementEnd();
1517
- i0.ɵɵelementStart(33, "button", 45);
1518
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_13_Conditional_9_Template_button_click_33_listener() { i0.ɵɵrestoreView(_r46); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.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()); });
1519
1510
  i0.ɵɵtext(34, " Cancel ");
1520
1511
  i0.ɵɵelementEnd()();
1521
1512
  } if (rf & 2) {
1522
- const ctx_r0 = i0.ɵɵnextContext(2);
1513
+ const ctx_r1 = i0.ɵɵnextContext(2);
1523
1514
  i0.ɵɵadvance(4);
1524
- i0.ɵɵtwoWayProperty("ngModel", ctx_r0.EditName);
1515
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.EditName);
1525
1516
  i0.ɵɵadvance(6);
1526
- i0.ɵɵtwoWayProperty("ngModel", ctx_r0.EditIsActive);
1517
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.EditIsActive);
1527
1518
  i0.ɵɵadvance(2);
1528
- i0.ɵɵclassProp("active", ctx_r0.EditIsActive);
1519
+ i0.ɵɵclassProp("active", ctx_r1.EditIsActive);
1529
1520
  i0.ɵɵadvance();
1530
- i0.ɵɵtextInterpolate1(" ", ctx_r0.EditIsActive ? "Active" : "Inactive", " ");
1521
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.EditIsActive ? "Active" : "Inactive", " ");
1531
1522
  i0.ɵɵadvance(4);
1532
- i0.ɵɵconditional(ctx_r0.EditCredential ? 17 : 18);
1523
+ i0.ɵɵconditional(ctx_r1.EditCredential ? 17 : 18);
1533
1524
  i0.ɵɵadvance(6);
1534
- i0.ɵɵtextInterpolate1(" ", ctx_r0.EditingSummary.Integration.Integration, " ");
1525
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.EditingSummary.Integration.Integration, " ");
1535
1526
  i0.ɵɵadvance(5);
1536
- i0.ɵɵtextInterpolate1(" ", ctx_r0.EditingSummary.Integration.Company, " ");
1527
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.EditingSummary.Integration.Company, " ");
1537
1528
  i0.ɵɵadvance(2);
1538
- i0.ɵɵproperty("disabled", ctx_r0.IsEditSaving || !ctx_r0.EditName.trim());
1529
+ i0.ɵɵproperty("disabled", ctx_r1.IsEditSaving || !ctx_r1.EditName.trim());
1539
1530
  i0.ɵɵadvance();
1540
- i0.ɵɵconditional(ctx_r0.IsEditSaving ? 31 : 32);
1531
+ i0.ɵɵconditional(ctx_r1.IsEditSaving ? 31 : 32);
1541
1532
  } }
1542
- function ConnectionsComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1533
+ function ConnectionsComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1543
1534
  const _r45 = i0.ɵɵgetCurrentView();
1544
- i0.ɵɵelementStart(0, "div", 242)(1, "div", 243)(2, "div", 244);
1535
+ i0.ɵɵelementStart(0, "div", 240)(1, "div", 241)(2, "div", 242);
1545
1536
  i0.ɵɵelement(3, "i");
1546
1537
  i0.ɵɵelementEnd();
1547
1538
  i0.ɵɵelementStart(4, "span");
1548
1539
  i0.ɵɵtext(5, "Configure Integration");
1549
1540
  i0.ɵɵelementEnd()();
1550
- i0.ɵɵelementStart(6, "button", 245);
1551
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_13_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r45); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.CloseEditPanel()); });
1552
- i0.ɵɵelement(7, "i", 121);
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);
1553
1544
  i0.ɵɵelementEnd()();
1554
- i0.ɵɵconditionalCreate(8, ConnectionsComponent_Conditional_13_Conditional_8_Template, 2, 0, "div", 246)(9, ConnectionsComponent_Conditional_13_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);
1555
1546
  } if (rf & 2) {
1556
- const ctx_r0 = i0.ɵɵnextContext();
1547
+ const ctx_r1 = i0.ɵɵnextContext();
1557
1548
  i0.ɵɵadvance(2);
1558
- i0.ɵɵstyleProp("background-color", ctx_r0.GetIconBrandColor(ctx_r0.EditingSummary.Integration.Integration));
1549
+ i0.ɵɵstyleProp("background-color", ctx_r1.GetIconBrandColor(ctx_r1.EditingSummary.Integration.Integration));
1559
1550
  i0.ɵɵadvance();
1560
- i0.ɵɵclassMap(ctx_r0.GetIntegrationIcon(ctx_r0.EditingSummary.Integration.Integration, ctx_r0.EditingSummary.Icon));
1551
+ i0.ɵɵclassMap(ctx_r1.GetIntegrationIcon(ctx_r1.EditingSummary.Integration.Integration, ctx_r1.EditingSummary.Icon));
1561
1552
  i0.ɵɵadvance(5);
1562
- i0.ɵɵconditional(ctx_r0.IsEditLoading ? 8 : 9);
1553
+ i0.ɵɵconditional(ctx_r1.IsEditLoading ? 8 : 9);
1563
1554
  } }
1564
- function ConnectionsComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
1555
+ function ConnectionsComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1565
1556
  const _r51 = i0.ɵɵgetCurrentView();
1566
- i0.ɵɵelementStart(0, "mj-credential-dialog", 265);
1567
- i0.ɵɵlistener("close", function ConnectionsComponent_Conditional_14_Template_mj_credential_dialog_close_0_listener($event) { i0.ɵɵrestoreView(_r51); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.EditPanelOpen ? ctx_r0.OnEditCredentialDialogClose($event) : ctx_r0.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)); });
1568
1559
  i0.ɵɵelementEnd();
1569
1560
  } if (rf & 2) {
1570
- const ctx_r0 = i0.ɵɵnextContext();
1571
- i0.ɵɵproperty("Visible", true)("PreselectedTypeId", ctx_r0.PreselectedCredentialTypeId);
1561
+ const ctx_r1 = i0.ɵɵnextContext();
1562
+ i0.ɵɵproperty("Visible", true)("PreselectedTypeId", ctx_r1.PreselectedCredentialTypeId);
1572
1563
  } }
1573
- function ConnectionsComponent_Conditional_15_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1564
+ function ConnectionsComponent_Conditional_14_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1574
1565
  i0.ɵɵtext(0);
1575
1566
  } if (rf & 2) {
1576
- const ctx_r0 = i0.ɵɵnextContext(2);
1577
- i0.ɵɵtextInterpolate1(" ", ctx_r0.AddMapSourceObjectName, " ");
1567
+ const ctx_r1 = i0.ɵɵnextContext(2);
1568
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.AddMapSourceObjectName, " ");
1578
1569
  } }
1579
- function ConnectionsComponent_Conditional_15_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1580
- i0.ɵɵelementStart(0, "span", 277);
1570
+ function ConnectionsComponent_Conditional_14_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1571
+ i0.ɵɵelementStart(0, "span", 275);
1581
1572
  i0.ɵɵtext(1, "Select a source object in the Add Map form first");
1582
1573
  i0.ɵɵelementEnd();
1583
1574
  } }
1584
- function ConnectionsComponent_Conditional_15_Conditional_29_For_2_Template(rf, ctx) { if (rf & 1) {
1585
- i0.ɵɵelementStart(0, "div", 288);
1586
- i0.ɵɵelement(1, "i", 128);
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);
1587
1578
  i0.ɵɵtext(2);
1588
1579
  i0.ɵɵelementEnd();
1589
1580
  } if (rf & 2) {
@@ -1591,45 +1582,45 @@ function ConnectionsComponent_Conditional_15_Conditional_29_For_2_Template(rf, c
1591
1582
  i0.ɵɵadvance(2);
1592
1583
  i0.ɵɵtextInterpolate1(" ", warn_r53);
1593
1584
  } }
1594
- function ConnectionsComponent_Conditional_15_Conditional_29_Template(rf, ctx) { if (rf & 1) {
1595
- i0.ɵɵelementStart(0, "div", 282);
1596
- i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_15_Conditional_29_For_2_Template, 3, 1, "div", 288, 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);
1597
1588
  i0.ɵɵelementEnd();
1598
1589
  } if (rf & 2) {
1599
- const ctx_r0 = i0.ɵɵnextContext(2);
1590
+ const ctx_r1 = i0.ɵɵnextContext(2);
1600
1591
  i0.ɵɵadvance();
1601
- i0.ɵɵrepeater(ctx_r0.DDLPreviewWarnings);
1592
+ i0.ɵɵrepeater(ctx_r1.DDLPreviewWarnings);
1602
1593
  } }
1603
- function ConnectionsComponent_Conditional_15_Conditional_30_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1604
- i0.ɵɵelement(0, "i", 149);
1594
+ function ConnectionsComponent_Conditional_14_Conditional_30_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1595
+ i0.ɵɵelement(0, "i", 147);
1605
1596
  i0.ɵɵtext(1, " Copied ");
1606
1597
  } }
1607
- function ConnectionsComponent_Conditional_15_Conditional_30_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1608
- i0.ɵɵelement(0, "i", 292);
1598
+ function ConnectionsComponent_Conditional_14_Conditional_30_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1599
+ i0.ɵɵelement(0, "i", 290);
1609
1600
  i0.ɵɵtext(1, " Copy ");
1610
1601
  } }
1611
- function ConnectionsComponent_Conditional_15_Conditional_30_Template(rf, ctx) { if (rf & 1) {
1602
+ function ConnectionsComponent_Conditional_14_Conditional_30_Template(rf, ctx) { if (rf & 1) {
1612
1603
  const _r54 = i0.ɵɵgetCurrentView();
1613
- i0.ɵɵelementStart(0, "div", 283)(1, "div", 289)(2, "span");
1604
+ i0.ɵɵelementStart(0, "div", 281)(1, "div", 287)(2, "span");
1614
1605
  i0.ɵɵtext(3, "SQL Preview");
1615
1606
  i0.ɵɵelementEnd();
1616
- i0.ɵɵelementStart(4, "button", 290);
1617
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_15_Conditional_30_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r54); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.CopyDDLToClipboard()); });
1618
- i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_15_Conditional_30_Conditional_5_Template, 2, 0)(6, ConnectionsComponent_Conditional_15_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);
1619
1610
  i0.ɵɵelementEnd()();
1620
- i0.ɵɵelementStart(7, "pre", 291);
1611
+ i0.ɵɵelementStart(7, "pre", 289);
1621
1612
  i0.ɵɵtext(8);
1622
1613
  i0.ɵɵelementEnd()();
1623
1614
  } if (rf & 2) {
1624
- const ctx_r0 = i0.ɵɵnextContext(2);
1615
+ const ctx_r1 = i0.ɵɵnextContext(2);
1625
1616
  i0.ɵɵadvance(5);
1626
- i0.ɵɵconditional(ctx_r0.DDLCopied ? 5 : 6);
1617
+ i0.ɵɵconditional(ctx_r1.DDLCopied ? 5 : 6);
1627
1618
  i0.ɵɵadvance(3);
1628
- i0.ɵɵtextInterpolate(ctx_r0.DDLPreview);
1619
+ i0.ɵɵtextInterpolate(ctx_r1.DDLPreview);
1629
1620
  } }
1630
- function ConnectionsComponent_Conditional_15_Conditional_31_Template(rf, ctx) { if (rf & 1) {
1631
- i0.ɵɵelementStart(0, "div", 284)(1, "h4");
1632
- i0.ɵɵelement(2, "i", 293);
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);
1633
1624
  i0.ɵɵtext(3, " Next Steps");
1634
1625
  i0.ɵɵelementEnd();
1635
1626
  i0.ɵɵelementStart(4, "ol")(5, "li");
@@ -1645,80 +1636,80 @@ function ConnectionsComponent_Conditional_15_Conditional_31_Template(rf, ctx) {
1645
1636
  i0.ɵɵtext(12, "Refresh the page \u2014 the new entity will appear in the entity picker");
1646
1637
  i0.ɵɵelementEnd()()();
1647
1638
  } }
1648
- function ConnectionsComponent_Conditional_15_Conditional_34_Template(rf, ctx) { if (rf & 1) {
1649
- i0.ɵɵelement(0, "i", 44);
1639
+ function ConnectionsComponent_Conditional_14_Conditional_34_Template(rf, ctx) { if (rf & 1) {
1640
+ i0.ɵɵelement(0, "i", 42);
1650
1641
  i0.ɵɵtext(1, " Generating... ");
1651
1642
  } }
1652
- function ConnectionsComponent_Conditional_15_Conditional_35_Template(rf, ctx) { if (rf & 1) {
1653
- i0.ɵɵelement(0, "i", 294);
1643
+ function ConnectionsComponent_Conditional_14_Conditional_35_Template(rf, ctx) { if (rf & 1) {
1644
+ i0.ɵɵelement(0, "i", 292);
1654
1645
  i0.ɵɵtext(1, " Generate SQL ");
1655
1646
  } }
1656
- function ConnectionsComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
1647
+ function ConnectionsComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
1657
1648
  const _r52 = i0.ɵɵgetCurrentView();
1658
- i0.ɵɵelementStart(0, "div", 266);
1659
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_15_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r52); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.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()); });
1660
1651
  i0.ɵɵelementEnd();
1661
- i0.ɵɵelementStart(1, "div", 267)(2, "div", 268)(3, "h3");
1652
+ i0.ɵɵelementStart(1, "div", 265)(2, "div", 266)(3, "h3");
1662
1653
  i0.ɵɵtext(4, "Create New Entity Table");
1663
1654
  i0.ɵɵelementEnd();
1664
- i0.ɵɵelementStart(5, "button", 269);
1665
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_15_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r52); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.CloseNewEntityDialog()); });
1666
- i0.ɵɵelement(6, "i", 121);
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);
1667
1658
  i0.ɵɵelementEnd()();
1668
- i0.ɵɵelementStart(7, "div", 270)(8, "p", 271);
1659
+ i0.ɵɵelementStart(7, "div", 268)(8, "p", 269);
1669
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. ");
1670
1661
  i0.ɵɵelementEnd();
1671
- i0.ɵɵelementStart(10, "div", 272)(11, "div", 273)(12, "div", 274)(13, "label", 275);
1662
+ i0.ɵɵelementStart(10, "div", 270)(11, "div", 271)(12, "div", 272)(13, "label", 273);
1672
1663
  i0.ɵɵtext(14, "Source Object");
1673
1664
  i0.ɵɵelementEnd();
1674
- i0.ɵɵelementStart(15, "div", 276);
1675
- i0.ɵɵconditionalCreate(16, ConnectionsComponent_Conditional_15_Conditional_16_Template, 1, 1)(17, ConnectionsComponent_Conditional_15_Conditional_17_Template, 2, 0, "span", 277);
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);
1676
1667
  i0.ɵɵelementEnd()()();
1677
- i0.ɵɵelementStart(18, "div", 273)(19, "div", 274)(20, "label", 275);
1668
+ i0.ɵɵelementStart(18, "div", 271)(19, "div", 272)(20, "label", 273);
1678
1669
  i0.ɵɵtext(21, "Schema");
1679
1670
  i0.ɵɵelementEnd();
1680
- i0.ɵɵelementStart(22, "input", 278);
1681
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_15_Template_input_ngModelChange_22_listener($event) { i0.ɵɵrestoreView(_r52); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.NewEntitySchema, $event) || (ctx_r0.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); });
1682
1673
  i0.ɵɵelementEnd()();
1683
- i0.ɵɵelementStart(23, "span", 279);
1674
+ i0.ɵɵelementStart(23, "span", 277);
1684
1675
  i0.ɵɵtext(24, ".");
1685
1676
  i0.ɵɵelementEnd();
1686
- i0.ɵɵelementStart(25, "div", 280)(26, "label", 275);
1677
+ i0.ɵɵelementStart(25, "div", 278)(26, "label", 273);
1687
1678
  i0.ɵɵtext(27, "Table Name");
1688
1679
  i0.ɵɵelementEnd();
1689
- i0.ɵɵelementStart(28, "input", 281);
1690
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_15_Template_input_ngModelChange_28_listener($event) { i0.ɵɵrestoreView(_r52); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.NewEntityTable, $event) || (ctx_r0.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); });
1691
1682
  i0.ɵɵelementEnd()()()();
1692
- i0.ɵɵconditionalCreate(29, ConnectionsComponent_Conditional_15_Conditional_29_Template, 3, 0, "div", 282);
1693
- i0.ɵɵconditionalCreate(30, ConnectionsComponent_Conditional_15_Conditional_30_Template, 9, 2, "div", 283);
1694
- i0.ɵɵconditionalCreate(31, ConnectionsComponent_Conditional_15_Conditional_31_Template, 13, 0, "div", 284);
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);
1695
1686
  i0.ɵɵelementEnd();
1696
- i0.ɵɵelementStart(32, "div", 285)(33, "button", 286);
1697
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_15_Template_button_click_33_listener() { i0.ɵɵrestoreView(_r52); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.PreviewDDL()); });
1698
- i0.ɵɵconditionalCreate(34, ConnectionsComponent_Conditional_15_Conditional_34_Template, 2, 0)(35, ConnectionsComponent_Conditional_15_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);
1699
1690
  i0.ɵɵelementEnd();
1700
- i0.ɵɵelementStart(36, "button", 287);
1701
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_15_Template_button_click_36_listener() { i0.ɵɵrestoreView(_r52); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.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()); });
1702
1693
  i0.ɵɵtext(37, " Done ");
1703
1694
  i0.ɵɵelementEnd()()();
1704
1695
  } if (rf & 2) {
1705
- const ctx_r0 = i0.ɵɵnextContext();
1696
+ const ctx_r1 = i0.ɵɵnextContext();
1706
1697
  i0.ɵɵadvance(16);
1707
- i0.ɵɵconditional(ctx_r0.AddMapSourceObjectName ? 16 : 17);
1698
+ i0.ɵɵconditional(ctx_r1.AddMapSourceObjectName ? 16 : 17);
1708
1699
  i0.ɵɵadvance(6);
1709
- i0.ɵɵtwoWayProperty("ngModel", ctx_r0.NewEntitySchema);
1700
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.NewEntitySchema);
1710
1701
  i0.ɵɵadvance(6);
1711
- i0.ɵɵtwoWayProperty("ngModel", ctx_r0.NewEntityTable);
1702
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.NewEntityTable);
1712
1703
  i0.ɵɵadvance();
1713
- i0.ɵɵconditional(ctx_r0.DDLPreviewWarnings.length > 0 ? 29 : -1);
1704
+ i0.ɵɵconditional(ctx_r1.DDLPreviewWarnings.length > 0 ? 29 : -1);
1714
1705
  i0.ɵɵadvance();
1715
- i0.ɵɵconditional(ctx_r0.DDLPreview ? 30 : -1);
1706
+ i0.ɵɵconditional(ctx_r1.DDLPreview ? 30 : -1);
1716
1707
  i0.ɵɵadvance();
1717
- i0.ɵɵconditional(ctx_r0.DDLPreview ? 31 : -1);
1708
+ i0.ɵɵconditional(ctx_r1.DDLPreview ? 31 : -1);
1718
1709
  i0.ɵɵadvance(2);
1719
- i0.ɵɵproperty("disabled", !ctx_r0.CanGenerateSQL || ctx_r0.IsGeneratingDDL);
1710
+ i0.ɵɵproperty("disabled", !ctx_r1.CanGenerateSQL || ctx_r1.IsGeneratingDDL);
1720
1711
  i0.ɵɵadvance();
1721
- i0.ɵɵconditional(ctx_r0.IsGeneratingDDL ? 34 : 35);
1712
+ i0.ɵɵconditional(ctx_r1.IsGeneratingDDL ? 34 : 35);
1722
1713
  } }
1723
1714
  /** Brand color mapping for known integration names */
1724
1715
  const BRAND_COLOR_MAP = [
@@ -3088,56 +3079,52 @@ let ConnectionsComponent = class ConnectionsComponent extends BaseResourceCompon
3088
3079
  } if (rf & 2) {
3089
3080
  let _t;
3090
3081
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.entityTreeDropdown = _t.first);
3091
- } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 16, vars: 19, consts: [["entityTreeDropdown", ""], ["Title", "Integrations", "Icon", "fa-solid fa-plug", "Subtitle", "Connected systems and data sources"], ["meta", ""], ["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"], [3, "Count", "Label"], ["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) {
3092
- i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 1);
3093
- i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_2_Template, 2, 2, "div", 2);
3094
- i0.ɵɵelementStart(3, "div", 3)(4, "mj-refresh-button", 4);
3095
- i0.ɵɵlistener("Clicked", function ConnectionsComponent_Template_mj_refresh_button_Clicked_4_listener() { return ctx.LoadData(); });
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(); });
3096
3085
  i0.ɵɵelementEnd();
3097
- i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_5_Template, 3, 0, "button", 5);
3086
+ i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_4_Template, 3, 0, "button", 4);
3098
3087
  i0.ɵɵelementEnd()();
3099
- i0.ɵɵelementStart(6, "mj-page-body", 6)(7, "div", 7);
3100
- i0.ɵɵconditionalCreate(8, ConnectionsComponent_Conditional_8_Template, 3, 3);
3101
- i0.ɵɵconditionalCreate(9, ConnectionsComponent_Conditional_9_Template, 3, 1, "div", 8);
3102
- i0.ɵɵconditionalCreate(10, ConnectionsComponent_Conditional_10_Template, 21, 6, "div", 9);
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);
3103
3092
  i0.ɵɵelementEnd();
3104
- i0.ɵɵelementStart(11, "div", 10);
3105
- i0.ɵɵlistener("click", function ConnectionsComponent_Template_div_click_11_listener() { return ctx.CloseEditPanel(); });
3093
+ i0.ɵɵelementStart(10, "div", 9);
3094
+ i0.ɵɵlistener("click", function ConnectionsComponent_Template_div_click_10_listener() { return ctx.CloseEditPanel(); });
3106
3095
  i0.ɵɵelementEnd();
3107
- i0.ɵɵelementStart(12, "div", 11);
3108
- i0.ɵɵconditionalCreate(13, ConnectionsComponent_Conditional_13_Template, 10, 5);
3096
+ i0.ɵɵelementStart(11, "div", 10);
3097
+ i0.ɵɵconditionalCreate(12, ConnectionsComponent_Conditional_12_Template, 10, 5);
3109
3098
  i0.ɵɵelementEnd();
3110
- i0.ɵɵconditionalCreate(14, ConnectionsComponent_Conditional_14_Template, 1, 2, "mj-credential-dialog", 12);
3111
- i0.ɵɵconditionalCreate(15, ConnectionsComponent_Conditional_15_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);
3112
3101
  i0.ɵɵelementEnd()();
3113
3102
  } if (rf & 2) {
3114
- i0.ɵɵadvance(2);
3115
- i0.ɵɵconditional(!ctx.WizardOpen && !ctx.SelectedSummary && ctx.Connections.length > 0 ? 2 : -1);
3116
- i0.ɵɵadvance(2);
3103
+ i0.ɵɵadvance(3);
3117
3104
  i0.ɵɵproperty("Loading", ctx.IsLoading);
3118
3105
  i0.ɵɵadvance();
3119
- i0.ɵɵconditional(!ctx.WizardOpen && !ctx.SelectedSummary ? 5 : -1);
3106
+ i0.ɵɵconditional(!ctx.WizardOpen && !ctx.SelectedSummary ? 4 : -1);
3120
3107
  i0.ɵɵadvance();
3121
3108
  i0.ɵɵproperty("Flex", true)("Padding", false);
3122
3109
  i0.ɵɵadvance();
3123
3110
  i0.ɵɵclassProp("detail-active", !!ctx.SelectedSummary)("editor-active", !!ctx.EditorEntityMap);
3124
3111
  i0.ɵɵadvance();
3125
- i0.ɵɵconditional(!ctx.WizardOpen && !ctx.SelectedSummary ? 8 : -1);
3112
+ i0.ɵɵconditional(!ctx.WizardOpen && !ctx.SelectedSummary ? 7 : -1);
3126
3113
  i0.ɵɵadvance();
3127
- i0.ɵɵconditional(!ctx.WizardOpen && ctx.SelectedSummary ? 9 : -1);
3114
+ i0.ɵɵconditional(!ctx.WizardOpen && ctx.SelectedSummary ? 8 : -1);
3128
3115
  i0.ɵɵadvance();
3129
- i0.ɵɵconditional(ctx.WizardOpen ? 10 : -1);
3116
+ i0.ɵɵconditional(ctx.WizardOpen ? 9 : -1);
3130
3117
  i0.ɵɵadvance();
3131
3118
  i0.ɵɵclassProp("open", ctx.EditPanelOpen);
3132
3119
  i0.ɵɵadvance();
3133
3120
  i0.ɵɵclassProp("open", ctx.EditPanelOpen);
3134
3121
  i0.ɵɵadvance();
3135
- i0.ɵɵconditional(ctx.EditingSummary ? 13 : -1);
3122
+ i0.ɵɵconditional(ctx.EditingSummary ? 12 : -1);
3136
3123
  i0.ɵɵadvance();
3137
- i0.ɵɵconditional(ctx.ShowCredentialDialog ? 14 : -1);
3124
+ i0.ɵɵconditional(ctx.ShowCredentialDialog ? 13 : -1);
3138
3125
  i0.ɵɵadvance();
3139
- i0.ɵɵconditional(ctx.ShowCreateEntity ? 15 : -1);
3140
- } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.CheckboxControlValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.MJButtonDirective, i2.MJPageLayoutComponent, i2.MJPageHeaderComponent, i2.MJPageBodyComponent, i2.MJStatBadgeComponent, 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}"] });
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}"] });
3141
3128
  };
3142
3129
  ConnectionsComponent = ConnectionsComponent_1 = __decorate([
3143
3130
  RegisterClass(BaseResourceComponent, 'IntegrationConnections')
@@ -3145,7 +3132,7 @@ ConnectionsComponent = ConnectionsComponent_1 = __decorate([
3145
3132
  export { ConnectionsComponent };
3146
3133
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConnectionsComponent, [{
3147
3134
  type: Component,
3148
- 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 @if (!WizardOpen && !SelectedSummary && Connections.length > 0) {\n <div meta>\n <mj-stat-badge\n [Count]=\"Connections.length\"\n [Label]=\"Connections.length === 1 ? 'integration' : 'integrations'\">\n </mj-stat-badge>\n </div>\n }\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"] }]
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"] }]
3149
3136
  }], null, { entityTreeDropdown: [{
3150
3137
  type: ViewChild,
3151
3138
  args: ['entityTreeDropdown']