@memberjunction/ng-core-entity-forms 5.14.0 → 5.16.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 (59) hide show
  1. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +55 -33
  2. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  3. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +340 -315
  4. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  5. package/dist/lib/custom/Entities/entity-form.component.d.ts +35 -2
  6. package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
  7. package/dist/lib/custom/Entities/entity-form.component.js +917 -632
  8. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  9. package/dist/lib/generated/Entities/MJAICredentialBinding/mjaicredentialbinding.form.component.d.ts.map +1 -1
  10. package/dist/lib/generated/Entities/MJAICredentialBinding/mjaicredentialbinding.form.component.js +16 -4
  11. package/dist/lib/generated/Entities/MJAICredentialBinding/mjaicredentialbinding.form.component.js.map +1 -1
  12. package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js +117 -113
  13. package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js.map +1 -1
  14. package/dist/lib/generated/Entities/MJAIModelType/mjaimodeltype.form.component.d.ts.map +1 -1
  15. package/dist/lib/generated/Entities/MJAIModelType/mjaimodeltype.form.component.js +23 -13
  16. package/dist/lib/generated/Entities/MJAIModelType/mjaimodeltype.form.component.js.map +1 -1
  17. package/dist/lib/generated/Entities/MJAIModelVendor/mjaimodelvendor.form.component.js +15 -11
  18. package/dist/lib/generated/Entities/MJAIModelVendor/mjaimodelvendor.form.component.js.map +1 -1
  19. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js +91 -87
  20. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js.map +1 -1
  21. package/dist/lib/generated/Entities/MJAIPromptModel/mjaipromptmodel.form.component.js +2 -2
  22. package/dist/lib/generated/Entities/MJAIPromptModel/mjaipromptmodel.form.component.js.map +1 -1
  23. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.d.ts.map +1 -1
  24. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +13 -15
  25. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
  26. package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js +2 -2
  27. package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js.map +1 -1
  28. package/dist/lib/generated/Entities/MJCompanyIntegration/mjcompanyintegration.form.component.js +39 -37
  29. package/dist/lib/generated/Entities/MJCompanyIntegration/mjcompanyintegration.form.component.js.map +1 -1
  30. package/dist/lib/generated/Entities/MJCompanyIntegrationRun/mjcompanyintegrationrun.form.component.js +29 -27
  31. package/dist/lib/generated/Entities/MJCompanyIntegrationRun/mjcompanyintegrationrun.form.component.js.map +1 -1
  32. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js +2 -2
  33. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js.map +1 -1
  34. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
  35. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +109 -73
  36. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
  37. package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.d.ts +10 -0
  38. package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.d.ts.map +1 -0
  39. package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js +99 -0
  40. package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js.map +1 -0
  41. package/dist/lib/generated/Entities/MJEntityOrganicKeyRelatedEntity/mjentityorganickeyrelatedentity.form.component.d.ts +10 -0
  42. package/dist/lib/generated/Entities/MJEntityOrganicKeyRelatedEntity/mjentityorganickeyrelatedentity.form.component.d.ts.map +1 -0
  43. package/dist/lib/generated/Entities/MJEntityOrganicKeyRelatedEntity/mjentityorganickeyrelatedentity.form.component.js +87 -0
  44. package/dist/lib/generated/Entities/MJEntityOrganicKeyRelatedEntity/mjentityorganickeyrelatedentity.form.component.js.map +1 -0
  45. package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.d.ts.map +1 -1
  46. package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js +22 -4
  47. package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js.map +1 -1
  48. package/dist/lib/generated/Entities/MJScheduledJobRun/mjscheduledjobrun.form.component.d.ts.map +1 -1
  49. package/dist/lib/generated/Entities/MJScheduledJobRun/mjscheduledjobrun.form.component.js +22 -4
  50. package/dist/lib/generated/Entities/MJScheduledJobRun/mjscheduledjobrun.form.component.js.map +1 -1
  51. package/dist/lib/generated/generated-forms.module.d.ts +137 -135
  52. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  53. package/dist/lib/generated/generated-forms.module.js +49 -43
  54. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  55. package/dist/public-api.d.ts +23 -0
  56. package/dist/public-api.d.ts.map +1 -1
  57. package/dist/public-api.js +28 -3
  58. package/dist/public-api.js.map +1 -1
  59. package/package.json +32 -32
@@ -24,17 +24,20 @@ const _c1 = a0 => [a0];
24
24
  const _c2 = () => [];
25
25
  const _forTrack0 = ($index, $item) => $item.ID;
26
26
  const _forTrack1 = ($index, $item) => $item.EntityName;
27
+ const _forTrack2 = ($index, $item) => $item.OrganicKey.ID;
28
+ const _forTrack3 = ($index, $item) => $item.Info.ID;
29
+ const _forTrack4 = ($index, $item) => $item.OrganicKey.ID + $item.SourceEntityName;
27
30
  function MJEntityFormComponentExtended_Conditional_0_Conditional_11_Template(rf, ctx) { if (rf & 1) {
28
31
  i0.ɵɵelementStart(0, "span", 8);
29
- i0.ɵɵelement(1, "i", 41);
32
+ i0.ɵɵelement(1, "i", 42);
30
33
  i0.ɵɵtext(2, " Virtual ");
31
34
  i0.ɵɵelementEnd();
32
35
  } }
33
36
  function MJEntityFormComponentExtended_Conditional_0_Conditional_12_Template(rf, ctx) { if (rf & 1) {
34
37
  const _r2 = i0.ɵɵgetCurrentView();
35
- i0.ɵɵelementStart(0, "span", 42);
38
+ i0.ɵɵelementStart(0, "span", 43);
36
39
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_12_Template_span_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.NavigateToEntity(ctx_r2.ParentChain[0])); });
37
- i0.ɵɵelement(1, "i", 43);
40
+ i0.ɵɵelement(1, "i", 44);
38
41
  i0.ɵɵtext(2);
39
42
  i0.ɵɵelementEnd();
40
43
  } if (rf & 2) {
@@ -43,17 +46,17 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_12_Template(rf,
43
46
  i0.ɵɵtextInterpolate1(" IS-A ", ctx_r2.ParentChain[0] == null ? null : ctx_r2.ParentChain[0].Name, " ");
44
47
  } }
45
48
  function MJEntityFormComponentExtended_Conditional_0_Conditional_13_Conditional_3_Template(rf, ctx) { if (rf & 1) {
46
- i0.ɵɵelementStart(0, "span", 46);
47
- i0.ɵɵelement(1, "i", 47);
49
+ i0.ɵɵelementStart(0, "span", 47);
50
+ i0.ɵɵelement(1, "i", 48);
48
51
  i0.ɵɵtext(2, " Overlapping Subtypes ");
49
52
  i0.ɵɵelementEnd();
50
53
  } }
51
54
  function MJEntityFormComponentExtended_Conditional_0_Conditional_13_Template(rf, ctx) { if (rf & 1) {
52
- i0.ɵɵelementStart(0, "span", 44);
53
- i0.ɵɵelement(1, "i", 45);
55
+ i0.ɵɵelementStart(0, "span", 45);
56
+ i0.ɵɵelement(1, "i", 46);
54
57
  i0.ɵɵtext(2);
55
58
  i0.ɵɵelementEnd();
56
- i0.ɵɵconditionalCreate(3, MJEntityFormComponentExtended_Conditional_0_Conditional_13_Conditional_3_Template, 3, 0, "span", 46);
59
+ i0.ɵɵconditionalCreate(3, MJEntityFormComponentExtended_Conditional_0_Conditional_13_Conditional_3_Template, 3, 0, "span", 47);
57
60
  } if (rf & 2) {
58
61
  const ctx_r2 = i0.ɵɵnextContext(2);
59
62
  i0.ɵɵadvance(2);
@@ -63,7 +66,7 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_13_Template(rf,
63
66
  } }
64
67
  function MJEntityFormComponentExtended_Conditional_0_Conditional_14_Template(rf, ctx) { if (rf & 1) {
65
68
  i0.ɵɵelementStart(0, "div", 10);
66
- i0.ɵɵelement(1, "i", 48);
69
+ i0.ɵɵelement(1, "i", 49);
67
70
  i0.ɵɵtext(2);
68
71
  i0.ɵɵelementEnd();
69
72
  } if (rf & 2) {
@@ -93,11 +96,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_42_Template(rf,
93
96
  } }
94
97
  function MJEntityFormComponentExtended_Conditional_0_Conditional_43_Template(rf, ctx) { if (rf & 1) {
95
98
  i0.ɵɵelementStart(0, "span", 23);
96
- i0.ɵɵelement(1, "i", 49);
99
+ i0.ɵɵelement(1, "i", 50);
97
100
  i0.ɵɵelementEnd();
98
101
  } }
99
102
  function MJEntityFormComponentExtended_Conditional_0_For_49_Conditional_4_Template(rf, ctx) { if (rf & 1) {
100
- i0.ɵɵelementStart(0, "span", 52);
103
+ i0.ɵɵelementStart(0, "span", 53);
101
104
  i0.ɵɵtext(1);
102
105
  i0.ɵɵelementEnd();
103
106
  } if (rf & 2) {
@@ -107,13 +110,13 @@ function MJEntityFormComponentExtended_Conditional_0_For_49_Conditional_4_Templa
107
110
  } }
108
111
  function MJEntityFormComponentExtended_Conditional_0_For_49_Template(rf, ctx) { if (rf & 1) {
109
112
  const _r4 = i0.ɵɵgetCurrentView();
110
- i0.ɵɵelementStart(0, "button", 50);
113
+ i0.ɵɵelementStart(0, "button", 51);
111
114
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_For_49_Template_button_click_0_listener() { const item_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.setActiveSection(item_r5.id)); });
112
115
  i0.ɵɵelement(1, "i");
113
- i0.ɵɵelementStart(2, "span", 51);
116
+ i0.ɵɵelementStart(2, "span", 52);
114
117
  i0.ɵɵtext(3);
115
118
  i0.ɵɵelementEnd();
116
- i0.ɵɵconditionalCreate(4, MJEntityFormComponentExtended_Conditional_0_For_49_Conditional_4_Template, 2, 1, "span", 52);
119
+ i0.ɵɵconditionalCreate(4, MJEntityFormComponentExtended_Conditional_0_For_49_Conditional_4_Template, 2, 1, "span", 53);
117
120
  i0.ɵɵelementEnd();
118
121
  } if (rf & 2) {
119
122
  const item_r5 = ctx.$implicit;
@@ -152,8 +155,8 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
152
155
  i0.ɵɵelementEnd();
153
156
  } }
154
157
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_For_64_Template(rf, ctx) { if (rf & 1) {
155
- i0.ɵɵelementStart(0, "span", 72);
156
- i0.ɵɵelement(1, "i", 84);
158
+ i0.ɵɵelementStart(0, "span", 73);
159
+ i0.ɵɵelement(1, "i", 85);
157
160
  i0.ɵɵtext(2);
158
161
  i0.ɵɵelementEnd();
159
162
  } if (rf & 2) {
@@ -162,17 +165,17 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_For_64_Templ
162
165
  i0.ɵɵtextInterpolate1(" ", cap_r7, " ");
163
166
  } }
164
167
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_65_Template(rf, ctx) { if (rf & 1) {
165
- i0.ɵɵelementStart(0, "span", 73);
166
- i0.ɵɵelement(1, "i", 39);
168
+ i0.ɵɵelementStart(0, "span", 74);
169
+ i0.ɵɵelement(1, "i", 40);
167
170
  i0.ɵɵtext(2, " No API ");
168
171
  i0.ɵɵelementEnd();
169
172
  } }
170
173
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_4_Template(rf, ctx) { if (rf & 1) {
171
- i0.ɵɵelementStart(0, "div", 85);
172
- i0.ɵɵelement(1, "i", 41);
174
+ i0.ɵɵelementStart(0, "div", 86);
175
+ i0.ɵɵelement(1, "i", 42);
173
176
  i0.ɵɵelementStart(2, "span");
174
177
  i0.ɵɵtext(3, "Virtual Entity \u2014 read-only view backed by ");
175
- i0.ɵɵelementStart(4, "span", 87);
178
+ i0.ɵɵelementStart(4, "span", 88);
176
179
  i0.ɵɵtext(5);
177
180
  i0.ɵɵelementEnd()()();
178
181
  } if (rf & 2) {
@@ -182,8 +185,8 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
182
185
  } }
183
186
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_For_7_Template(rf, ctx) { if (rf & 1) {
184
187
  const _r8 = i0.ɵɵgetCurrentView();
185
- i0.ɵɵelement(0, "i", 95);
186
- i0.ɵɵelementStart(1, "span", 96);
188
+ i0.ɵɵelement(0, "i", 96);
189
+ i0.ɵɵelementStart(1, "span", 97);
187
190
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_For_7_Template_span_click_1_listener() { const parent_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.NavigateToEntity(parent_r9)); });
188
191
  i0.ɵɵtext(2);
189
192
  i0.ɵɵelementEnd();
@@ -195,15 +198,15 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
195
198
  i0.ɵɵtextInterpolate1(" ", parent_r9.Name, " ");
196
199
  } }
197
200
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_Conditional_4_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
198
- i0.ɵɵelement(0, "i", 104);
201
+ i0.ɵɵelement(0, "i", 105);
199
202
  } }
200
203
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_Conditional_4_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
201
- i0.ɵɵelement(0, "i", 105);
204
+ i0.ɵɵelement(0, "i", 106);
202
205
  } }
203
206
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_Conditional_4_For_2_For_10_Template(rf, ctx) { if (rf & 1) {
204
- i0.ɵɵelementStart(0, "span", 108);
207
+ i0.ɵɵelementStart(0, "span", 109);
205
208
  i0.ɵɵtext(1);
206
- i0.ɵɵelementStart(2, "span", 109);
209
+ i0.ɵɵelementStart(2, "span", 110);
207
210
  i0.ɵɵtext(3);
208
211
  i0.ɵɵelementEnd()();
209
212
  } if (rf & 2) {
@@ -215,15 +218,15 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
215
218
  i0.ɵɵtextInterpolate(field_r11.Type);
216
219
  } }
217
220
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_Conditional_4_For_2_Template(rf, ctx) { if (rf & 1) {
218
- i0.ɵɵelementStart(0, "div", 101)(1, "div", 102)(2, "span", 103);
219
- i0.ɵɵconditionalCreate(3, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_Conditional_4_For_2_Conditional_3_Template, 1, 0, "i", 104)(4, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_Conditional_4_For_2_Conditional_4_Template, 1, 0, "i", 105);
221
+ i0.ɵɵelementStart(0, "div", 102)(1, "div", 103)(2, "span", 104);
222
+ i0.ɵɵconditionalCreate(3, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_Conditional_4_For_2_Conditional_3_Template, 1, 0, "i", 105)(4, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_Conditional_4_For_2_Conditional_4_Template, 1, 0, "i", 106);
220
223
  i0.ɵɵtext(5);
221
224
  i0.ɵɵelementEnd();
222
- i0.ɵɵelementStart(6, "span", 106);
225
+ i0.ɵɵelementStart(6, "span", 107);
223
226
  i0.ɵɵtext(7);
224
227
  i0.ɵɵelementEnd()();
225
- i0.ɵɵelementStart(8, "div", 107);
226
- i0.ɵɵrepeaterCreate(9, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_Conditional_4_For_2_For_10_Template, 4, 3, "span", 108, _forTrack0);
228
+ i0.ɵɵelementStart(8, "div", 108);
229
+ i0.ɵɵrepeaterCreate(9, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_Conditional_4_For_2_For_10_Template, 4, 3, "span", 109, _forTrack0);
227
230
  i0.ɵɵelementEnd()();
228
231
  } if (rf & 2) {
229
232
  const group_r12 = ctx.$implicit;
@@ -238,8 +241,8 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
238
241
  i0.ɵɵrepeater(group_r12.Fields);
239
242
  } }
240
243
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_Conditional_4_Template(rf, ctx) { if (rf & 1) {
241
- i0.ɵɵelementStart(0, "div", 99);
242
- i0.ɵɵrepeaterCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_Conditional_4_For_2_Template, 11, 8, "div", 100, _forTrack1);
244
+ i0.ɵɵelementStart(0, "div", 100);
245
+ i0.ɵɵrepeaterCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_Conditional_4_For_2_Template, 11, 8, "div", 101, _forTrack1);
243
246
  i0.ɵɵelementEnd();
244
247
  } if (rf & 2) {
245
248
  const ctx_r2 = i0.ɵɵnextContext(6);
@@ -248,12 +251,12 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
248
251
  } }
249
252
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_Template(rf, ctx) { if (rf & 1) {
250
253
  const _r10 = i0.ɵɵgetCurrentView();
251
- i0.ɵɵelementStart(0, "div", 93)(1, "div", 97);
254
+ i0.ɵɵelementStart(0, "div", 94)(1, "div", 98);
252
255
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.isaFieldInspectorExpanded = !ctx_r2.isaFieldInspectorExpanded); });
253
- i0.ɵɵelement(2, "i", 98);
256
+ i0.ɵɵelement(2, "i", 99);
254
257
  i0.ɵɵtext(3, " Field Source Inspector ");
255
258
  i0.ɵɵelementEnd();
256
- i0.ɵɵconditionalCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_Conditional_4_Template, 3, 0, "div", 99);
259
+ i0.ɵɵconditionalCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_Conditional_4_Template, 3, 0, "div", 100);
257
260
  i0.ɵɵelementEnd();
258
261
  } if (rf & 2) {
259
262
  const ctx_r2 = i0.ɵɵnextContext(5);
@@ -264,9 +267,9 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
264
267
  } }
265
268
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_13_For_5_Template(rf, ctx) { if (rf & 1) {
266
269
  const _r13 = i0.ɵɵgetCurrentView();
267
- i0.ɵɵelementStart(0, "span", 112);
270
+ i0.ɵɵelementStart(0, "span", 113);
268
271
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_13_For_5_Template_span_click_0_listener() { const sibling_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r2.NavigateToEntity(sibling_r14)); });
269
- i0.ɵɵelement(1, "i", 113);
272
+ i0.ɵɵelement(1, "i", 114);
270
273
  i0.ɵɵtext(2);
271
274
  i0.ɵɵelementEnd();
272
275
  } if (rf & 2) {
@@ -276,11 +279,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
276
279
  i0.ɵɵtextInterpolate1(" ", sibling_r14.Name, " ");
277
280
  } }
278
281
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_13_Template(rf, ctx) { if (rf & 1) {
279
- i0.ɵɵelementStart(0, "div", 94)(1, "div", 89);
282
+ i0.ɵɵelementStart(0, "div", 95)(1, "div", 90);
280
283
  i0.ɵɵtext(2);
281
284
  i0.ɵɵelementEnd();
282
- i0.ɵɵelementStart(3, "div", 110);
283
- i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_13_For_5_Template, 3, 2, "span", 111, _forTrack0);
285
+ i0.ɵɵelementStart(3, "div", 111);
286
+ i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_13_For_5_Template, 3, 2, "span", 112, _forTrack0);
284
287
  i0.ɵɵelementEnd()();
285
288
  } if (rf & 2) {
286
289
  const ctx_r2 = i0.ɵɵnextContext(5);
@@ -290,21 +293,21 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
290
293
  i0.ɵɵrepeater(ctx_r2.SiblingEntities);
291
294
  } }
292
295
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Template(rf, ctx) { if (rf & 1) {
293
- i0.ɵɵelementStart(0, "div", 88)(1, "div", 89);
296
+ i0.ɵɵelementStart(0, "div", 89)(1, "div", 90);
294
297
  i0.ɵɵtext(2, "Inheritance Chain");
295
298
  i0.ɵɵelementEnd();
296
- i0.ɵɵelementStart(3, "div", 90)(4, "span", 91);
299
+ i0.ɵɵelementStart(3, "div", 91)(4, "span", 92);
297
300
  i0.ɵɵtext(5);
298
301
  i0.ɵɵelementEnd();
299
302
  i0.ɵɵrepeaterCreate(6, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_For_7_Template, 3, 2, null, null, _forTrack0);
300
303
  i0.ɵɵelementEnd();
301
- i0.ɵɵelementStart(8, "div", 92);
302
- i0.ɵɵelement(9, "i", 57);
304
+ i0.ɵɵelementStart(8, "div", 93);
305
+ i0.ɵɵelement(9, "i", 58);
303
306
  i0.ɵɵelementStart(10, "span");
304
307
  i0.ɵɵtext(11);
305
308
  i0.ɵɵelementEnd()()();
306
- i0.ɵɵconditionalCreate(12, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_Template, 5, 2, "div", 93);
307
- i0.ɵɵconditionalCreate(13, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_13_Template, 6, 2, "div", 94);
309
+ i0.ɵɵconditionalCreate(12, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_Template, 5, 2, "div", 94);
310
+ i0.ɵɵconditionalCreate(13, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_13_Template, 6, 2, "div", 95);
308
311
  } if (rf & 2) {
309
312
  const ctx_r2 = i0.ɵɵnextContext(4);
310
313
  i0.ɵɵadvance(5);
@@ -319,7 +322,7 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
319
322
  i0.ɵɵconditional(ctx_r2.SiblingEntities.length > 0 ? 13 : -1);
320
323
  } }
321
324
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_6_For_5_Conditional_4_Template(rf, ctx) { if (rf & 1) {
322
- i0.ɵɵelement(0, "i", 49);
325
+ i0.ɵɵelement(0, "i", 50);
323
326
  } }
324
327
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_6_For_5_Conditional_5_Template(rf, ctx) { if (rf & 1) {
325
328
  i0.ɵɵtext(0);
@@ -330,12 +333,12 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
330
333
  } }
331
334
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_6_For_5_Template(rf, ctx) { if (rf & 1) {
332
335
  const _r15 = i0.ɵɵgetCurrentView();
333
- i0.ɵɵelementStart(0, "span", 115);
336
+ i0.ɵɵelementStart(0, "span", 116);
334
337
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_6_For_5_Template_span_click_0_listener() { const childCount_r16 = i0.ɵɵrestoreView(_r15).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.NavigateToEntity(childCount_r16.EntityInfo)); });
335
- i0.ɵɵelement(1, "i", 116);
338
+ i0.ɵɵelement(1, "i", 117);
336
339
  i0.ɵɵtext(2);
337
- i0.ɵɵelementStart(3, "span", 117);
338
- i0.ɵɵconditionalCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_6_For_5_Conditional_4_Template, 1, 0, "i", 49)(5, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_6_For_5_Conditional_5_Template, 2, 3);
340
+ i0.ɵɵelementStart(3, "span", 118);
341
+ i0.ɵɵconditionalCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_6_For_5_Conditional_4_Template, 1, 0, "i", 50)(5, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_6_For_5_Conditional_5_Template, 2, 3);
339
342
  i0.ɵɵelementEnd()();
340
343
  } if (rf & 2) {
341
344
  const childCount_r16 = ctx.$implicit;
@@ -346,11 +349,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
346
349
  i0.ɵɵconditional(childCount_r16.IsLoading ? 4 : 5);
347
350
  } }
348
351
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_6_Template(rf, ctx) { if (rf & 1) {
349
- i0.ɵɵelementStart(0, "div", 86)(1, "div", 89);
352
+ i0.ɵɵelementStart(0, "div", 87)(1, "div", 90);
350
353
  i0.ɵɵtext(2, "Child Types");
351
354
  i0.ɵɵelementEnd();
352
- i0.ɵɵelementStart(3, "div", 110);
353
- i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_6_For_5_Template, 6, 3, "span", 114, _forTrack1);
355
+ i0.ɵɵelementStart(3, "div", 111);
356
+ i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_6_For_5_Template, 6, 3, "span", 115, _forTrack1);
354
357
  i0.ɵɵelementEnd()();
355
358
  } if (rf & 2) {
356
359
  const ctx_r2 = i0.ɵɵnextContext(4);
@@ -358,13 +361,13 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
358
361
  i0.ɵɵrepeater(ctx_r2.childEntityCounts);
359
362
  } }
360
363
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Template(rf, ctx) { if (rf & 1) {
361
- i0.ɵɵelementStart(0, "div", 74)(1, "h3", 69);
362
- i0.ɵɵelement(2, "i", 48);
364
+ i0.ɵɵelementStart(0, "div", 75)(1, "h3", 70);
365
+ i0.ɵɵelement(2, "i", 49);
363
366
  i0.ɵɵtext(3, " Type Hierarchy ");
364
367
  i0.ɵɵelementEnd();
365
- i0.ɵɵconditionalCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_4_Template, 6, 1, "div", 85);
368
+ i0.ɵɵconditionalCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_4_Template, 6, 1, "div", 86);
366
369
  i0.ɵɵconditionalCreate(5, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Template, 14, 6);
367
- i0.ɵɵconditionalCreate(6, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_6_Template, 6, 0, "div", 86);
370
+ i0.ɵɵconditionalCreate(6, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_6_Template, 6, 0, "div", 87);
368
371
  i0.ɵɵelementEnd();
369
372
  } if (rf & 2) {
370
373
  const ctx_r2 = i0.ɵɵnextContext(3);
@@ -376,10 +379,10 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
376
379
  i0.ɵɵconditional(ctx_r2.IsParentType ? 6 : -1);
377
380
  } }
378
381
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_92_Template(rf, ctx) { if (rf & 1) {
379
- i0.ɵɵelementStart(0, "div", 78)(1, "span", 79);
382
+ i0.ɵɵelementStart(0, "div", 79)(1, "span", 80);
380
383
  i0.ɵɵtext(2, "SP Create");
381
384
  i0.ɵɵelementEnd();
382
- i0.ɵɵelementStart(3, "span", 83);
385
+ i0.ɵɵelementStart(3, "span", 84);
383
386
  i0.ɵɵtext(4);
384
387
  i0.ɵɵelementEnd()();
385
388
  } if (rf & 2) {
@@ -388,10 +391,10 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
388
391
  i0.ɵɵtextInterpolate(ctx_r2.entity.spCreate);
389
392
  } }
390
393
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_93_Template(rf, ctx) { if (rf & 1) {
391
- i0.ɵɵelementStart(0, "div", 78)(1, "span", 79);
394
+ i0.ɵɵelementStart(0, "div", 79)(1, "span", 80);
392
395
  i0.ɵɵtext(2, "SP Update");
393
396
  i0.ɵɵelementEnd();
394
- i0.ɵɵelementStart(3, "span", 83);
397
+ i0.ɵɵelementStart(3, "span", 84);
395
398
  i0.ɵɵtext(4);
396
399
  i0.ɵɵelementEnd()();
397
400
  } if (rf & 2) {
@@ -400,10 +403,10 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
400
403
  i0.ɵɵtextInterpolate(ctx_r2.entity.spUpdate);
401
404
  } }
402
405
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_94_Template(rf, ctx) { if (rf & 1) {
403
- i0.ɵɵelementStart(0, "div", 78)(1, "span", 79);
406
+ i0.ɵɵelementStart(0, "div", 79)(1, "span", 80);
404
407
  i0.ɵɵtext(2, "SP Delete");
405
408
  i0.ɵɵelementEnd();
406
- i0.ɵɵelementStart(3, "span", 83);
409
+ i0.ɵɵelementStart(3, "span", 84);
407
410
  i0.ɵɵtext(4);
408
411
  i0.ɵɵelementEnd()();
409
412
  } if (rf & 2) {
@@ -412,10 +415,10 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
412
415
  i0.ɵɵtextInterpolate(ctx_r2.entity.spDelete);
413
416
  } }
414
417
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_110_Template(rf, ctx) { if (rf & 1) {
415
- i0.ɵɵelementStart(0, "div", 78)(1, "span", 79);
418
+ i0.ɵɵelementStart(0, "div", 79)(1, "span", 80);
416
419
  i0.ɵɵtext(2, "Subclass");
417
420
  i0.ɵɵelementEnd();
418
- i0.ɵɵelementStart(3, "span", 83);
421
+ i0.ɵɵelementStart(3, "span", 84);
419
422
  i0.ɵɵtext(4);
420
423
  i0.ɵɵelementEnd()();
421
424
  } if (rf & 2) {
@@ -425,17 +428,17 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
425
428
  } }
426
429
  function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Template(rf, ctx) { if (rf & 1) {
427
430
  const _r6 = i0.ɵɵgetCurrentView();
428
- i0.ɵɵelementStart(0, "section", 28)(1, "div", 53)(2, "div", 54)(3, "div", 55);
431
+ i0.ɵɵelementStart(0, "section", 28)(1, "div", 54)(2, "div", 55)(3, "div", 56);
429
432
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.setActiveSection("fields")); });
430
- i0.ɵɵelementStart(4, "div", 56);
431
- i0.ɵɵelement(5, "i", 57);
433
+ i0.ɵɵelementStart(4, "div", 57);
434
+ i0.ɵɵelement(5, "i", 58);
432
435
  i0.ɵɵelementStart(6, "span");
433
436
  i0.ɵɵtext(7, "Fields");
434
437
  i0.ɵɵelementEnd()();
435
- i0.ɵɵelementStart(8, "div", 58)(9, "div", 59);
438
+ i0.ɵɵelementStart(8, "div", 59)(9, "div", 60);
436
439
  i0.ɵɵtext(10);
437
440
  i0.ɵɵelementEnd();
438
- i0.ɵɵelementStart(11, "div", 60)(12, "span");
441
+ i0.ɵɵelementStart(11, "div", 61)(12, "span");
439
442
  i0.ɵɵtext(13);
440
443
  i0.ɵɵelementEnd();
441
444
  i0.ɵɵelementStart(14, "span");
@@ -443,114 +446,114 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Template(rf,
443
446
  i0.ɵɵelementEnd();
444
447
  i0.ɵɵconditionalCreate(16, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_16_Template, 2, 1, "span");
445
448
  i0.ɵɵelementEnd()();
446
- i0.ɵɵelementStart(17, "div", 61);
447
- i0.ɵɵelement(18, "i", 62);
449
+ i0.ɵɵelementStart(17, "div", 62);
450
+ i0.ɵɵelement(18, "i", 63);
448
451
  i0.ɵɵelementEnd()();
449
- i0.ɵɵelementStart(19, "div", 63);
452
+ i0.ɵɵelementStart(19, "div", 64);
450
453
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Template_div_click_19_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.setActiveSection("relationships")); });
451
- i0.ɵɵelementStart(20, "div", 56);
452
- i0.ɵɵelement(21, "i", 64);
454
+ i0.ɵɵelementStart(20, "div", 57);
455
+ i0.ɵɵelement(21, "i", 65);
453
456
  i0.ɵɵelementStart(22, "span");
454
457
  i0.ɵɵtext(23, "Relationships");
455
458
  i0.ɵɵelementEnd()();
456
- i0.ɵɵelementStart(24, "div", 58)(25, "div", 59);
459
+ i0.ɵɵelementStart(24, "div", 59)(25, "div", 60);
457
460
  i0.ɵɵtext(26);
458
461
  i0.ɵɵelementEnd();
459
- i0.ɵɵelementStart(27, "div", 60)(28, "span");
462
+ i0.ɵɵelementStart(27, "div", 61)(28, "span");
460
463
  i0.ɵɵtext(29);
461
464
  i0.ɵɵelementEnd();
462
465
  i0.ɵɵelementStart(30, "span");
463
466
  i0.ɵɵtext(31);
464
467
  i0.ɵɵelementEnd()()();
465
- i0.ɵɵelementStart(32, "div", 61);
466
- i0.ɵɵelement(33, "i", 62);
468
+ i0.ɵɵelementStart(32, "div", 62);
469
+ i0.ɵɵelement(33, "i", 63);
467
470
  i0.ɵɵelementEnd()();
468
- i0.ɵɵelementStart(34, "div", 65);
471
+ i0.ɵɵelementStart(34, "div", 66);
469
472
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Template_div_click_34_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.setActiveSection("permissions")); });
470
- i0.ɵɵelementStart(35, "div", 56);
471
- i0.ɵɵelement(36, "i", 66);
473
+ i0.ɵɵelementStart(35, "div", 57);
474
+ i0.ɵɵelement(36, "i", 67);
472
475
  i0.ɵɵelementStart(37, "span");
473
476
  i0.ɵɵtext(38, "Security");
474
477
  i0.ɵɵelementEnd()();
475
- i0.ɵɵelementStart(39, "div", 58)(40, "div", 59);
478
+ i0.ɵɵelementStart(39, "div", 59)(40, "div", 60);
476
479
  i0.ɵɵtext(41);
477
480
  i0.ɵɵelementEnd();
478
- i0.ɵɵelementStart(42, "div", 60)(43, "span");
481
+ i0.ɵɵelementStart(42, "div", 61)(43, "span");
479
482
  i0.ɵɵtext(44, "Roles configured");
480
483
  i0.ɵɵelementEnd()()();
481
- i0.ɵɵelementStart(45, "div", 61);
482
- i0.ɵɵelement(46, "i", 62);
484
+ i0.ɵɵelementStart(45, "div", 62);
485
+ i0.ɵɵelement(46, "i", 63);
483
486
  i0.ɵɵelementEnd()();
484
- i0.ɵɵelementStart(47, "div", 67)(48, "div", 56);
487
+ i0.ɵɵelementStart(47, "div", 68)(48, "div", 57);
485
488
  i0.ɵɵelement(49, "i", 22);
486
489
  i0.ɵɵelementStart(50, "span");
487
490
  i0.ɵɵtext(51, "Data");
488
491
  i0.ɵɵelementEnd()();
489
- i0.ɵɵelementStart(52, "div", 58)(53, "div", 59);
492
+ i0.ɵɵelementStart(52, "div", 59)(53, "div", 60);
490
493
  i0.ɵɵtext(54);
491
494
  i0.ɵɵelementEnd();
492
- i0.ɵɵelementStart(55, "div", 60);
495
+ i0.ɵɵelementStart(55, "div", 61);
493
496
  i0.ɵɵconditionalCreate(56, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_56_Template, 3, 4, "span");
494
497
  i0.ɵɵconditionalCreate(57, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_57_Template, 2, 0, "span");
495
498
  i0.ɵɵelementEnd()()()();
496
- i0.ɵɵelementStart(58, "div", 68)(59, "h3", 69);
497
- i0.ɵɵelement(60, "i", 70);
499
+ i0.ɵɵelementStart(58, "div", 69)(59, "h3", 70);
500
+ i0.ɵɵelement(60, "i", 71);
498
501
  i0.ɵɵtext(61, " Capabilities ");
499
502
  i0.ɵɵelementEnd();
500
- i0.ɵɵelementStart(62, "div", 71);
501
- i0.ɵɵrepeaterCreate(63, MJEntityFormComponentExtended_Conditional_0_Conditional_51_For_64_Template, 3, 1, "span", 72, i0.ɵɵrepeaterTrackByIdentity);
502
- i0.ɵɵconditionalCreate(65, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_65_Template, 3, 0, "span", 73);
503
+ i0.ɵɵelementStart(62, "div", 72);
504
+ i0.ɵɵrepeaterCreate(63, MJEntityFormComponentExtended_Conditional_0_Conditional_51_For_64_Template, 3, 1, "span", 73, i0.ɵɵrepeaterTrackByIdentity);
505
+ i0.ɵɵconditionalCreate(65, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_65_Template, 3, 0, "span", 74);
503
506
  i0.ɵɵelementEnd()();
504
- i0.ɵɵconditionalCreate(66, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Template, 7, 3, "div", 74);
505
- i0.ɵɵelementStart(67, "div", 75)(68, "h3", 69);
506
- i0.ɵɵelement(69, "i", 76);
507
+ i0.ɵɵconditionalCreate(66, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Template, 7, 3, "div", 75);
508
+ i0.ɵɵelementStart(67, "div", 76)(68, "h3", 70);
509
+ i0.ɵɵelement(69, "i", 77);
507
510
  i0.ɵɵtext(70, " Database ");
508
511
  i0.ɵɵelementEnd();
509
- i0.ɵɵelementStart(71, "div", 77)(72, "div", 78)(73, "span", 79);
512
+ i0.ɵɵelementStart(71, "div", 78)(72, "div", 79)(73, "span", 80);
510
513
  i0.ɵɵtext(74, "Schema");
511
514
  i0.ɵɵelementEnd();
512
- i0.ɵɵelementStart(75, "span", 80);
515
+ i0.ɵɵelementStart(75, "span", 81);
513
516
  i0.ɵɵtext(76);
514
517
  i0.ɵɵelementEnd()();
515
- i0.ɵɵelementStart(77, "div", 78)(78, "span", 79);
518
+ i0.ɵɵelementStart(77, "div", 79)(78, "span", 80);
516
519
  i0.ɵɵtext(79, "Table");
517
520
  i0.ɵɵelementEnd();
518
- i0.ɵɵelementStart(80, "span", 80);
521
+ i0.ɵɵelementStart(80, "span", 81);
519
522
  i0.ɵɵtext(81);
520
523
  i0.ɵɵelementEnd()();
521
- i0.ɵɵelementStart(82, "div", 78)(83, "span", 79);
524
+ i0.ɵɵelementStart(82, "div", 79)(83, "span", 80);
522
525
  i0.ɵɵtext(84, "View");
523
526
  i0.ɵɵelementEnd();
524
- i0.ɵɵelementStart(85, "span", 80);
527
+ i0.ɵɵelementStart(85, "span", 81);
525
528
  i0.ɵɵtext(86);
526
529
  i0.ɵɵelementEnd()();
527
- i0.ɵɵelementStart(87, "div", 78)(88, "span", 79);
530
+ i0.ɵɵelementStart(87, "div", 79)(88, "span", 80);
528
531
  i0.ɵɵtext(89, "Delete Type");
529
532
  i0.ɵɵelementEnd();
530
- i0.ɵɵelementStart(90, "span", 80);
533
+ i0.ɵɵelementStart(90, "span", 81);
531
534
  i0.ɵɵtext(91);
532
535
  i0.ɵɵelementEnd()();
533
- i0.ɵɵconditionalCreate(92, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_92_Template, 5, 1, "div", 78);
534
- i0.ɵɵconditionalCreate(93, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_93_Template, 5, 1, "div", 78);
535
- i0.ɵɵconditionalCreate(94, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_94_Template, 5, 1, "div", 78);
536
+ i0.ɵɵconditionalCreate(92, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_92_Template, 5, 1, "div", 79);
537
+ i0.ɵɵconditionalCreate(93, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_93_Template, 5, 1, "div", 79);
538
+ i0.ɵɵconditionalCreate(94, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_94_Template, 5, 1, "div", 79);
536
539
  i0.ɵɵelementEnd()();
537
- i0.ɵɵelementStart(95, "div", 81)(96, "h3", 69);
538
- i0.ɵɵelement(97, "i", 82);
540
+ i0.ɵɵelementStart(95, "div", 82)(96, "h3", 70);
541
+ i0.ɵɵelement(97, "i", 83);
539
542
  i0.ɵɵtext(98, " Code Generation ");
540
543
  i0.ɵɵelementEnd();
541
- i0.ɵɵelementStart(99, "div", 77)(100, "div", 78)(101, "span", 79);
544
+ i0.ɵɵelementStart(99, "div", 78)(100, "div", 79)(101, "span", 80);
542
545
  i0.ɵɵtext(102, "Class Name");
543
546
  i0.ɵɵelementEnd();
544
- i0.ɵɵelementStart(103, "span", 83);
547
+ i0.ɵɵelementStart(103, "span", 84);
545
548
  i0.ɵɵtext(104);
546
549
  i0.ɵɵelementEnd()();
547
- i0.ɵɵelementStart(105, "div", 78)(106, "span", 79);
550
+ i0.ɵɵelementStart(105, "div", 79)(106, "span", 80);
548
551
  i0.ɵɵtext(107, "Code Name");
549
552
  i0.ɵɵelementEnd();
550
- i0.ɵɵelementStart(108, "span", 83);
553
+ i0.ɵɵelementStart(108, "span", 84);
551
554
  i0.ɵɵtext(109);
552
555
  i0.ɵɵelementEnd()();
553
- i0.ɵɵconditionalCreate(110, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_110_Template, 5, 1, "div", 78);
556
+ i0.ɵɵconditionalCreate(110, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_110_Template, 5, 1, "div", 79);
554
557
  i0.ɵɵelementEnd()()()();
555
558
  } if (rf & 2) {
556
559
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -605,13 +608,13 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Template(rf,
605
608
  } }
606
609
  function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_11_Template(rf, ctx) { if (rf & 1) {
607
610
  const _r18 = i0.ɵɵgetCurrentView();
608
- i0.ɵɵelementStart(0, "div", 127)(1, "button", 131);
611
+ i0.ɵɵelementStart(0, "div", 128)(1, "button", 132);
609
612
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_11_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.expandAllFieldGroups()); });
610
- i0.ɵɵelement(2, "i", 132);
613
+ i0.ɵɵelement(2, "i", 133);
611
614
  i0.ɵɵelementEnd();
612
- i0.ɵɵelementStart(3, "button", 133);
615
+ i0.ɵɵelementStart(3, "button", 134);
613
616
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_11_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.collapseAllFieldGroups()); });
614
- i0.ɵɵelement(4, "i", 134);
617
+ i0.ɵɵelement(4, "i", 135);
615
618
  i0.ɵɵelementEnd()();
616
619
  } if (rf & 2) {
617
620
  const ctx_r2 = i0.ɵɵnextContext(3);
@@ -621,15 +624,15 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_
621
624
  i0.ɵɵproperty("disabled", ctx_r2.allFieldGroupsCollapsed);
622
625
  } }
623
626
  function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
624
- i0.ɵɵelementStart(0, "span", 151);
627
+ i0.ɵɵelementStart(0, "span", 152);
625
628
  i0.ɵɵtext(1, "Required");
626
629
  i0.ɵɵelementEnd();
627
630
  } }
628
631
  function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
629
632
  const _r23 = i0.ɵɵgetCurrentView();
630
- i0.ɵɵelementStart(0, "span", 158);
633
+ i0.ɵɵelementStart(0, "span", 159);
631
634
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Conditional_12_Template_span_click_0_listener($event) { i0.ɵɵrestoreView(_r23); const field_r22 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(6); ctx_r2.navigateToRelatedEntity(field_r22); return i0.ɵɵresetView($event.stopPropagation()); });
632
- i0.ɵɵelement(1, "i", 62);
635
+ i0.ɵɵelement(1, "i", 63);
633
636
  i0.ɵɵtext(2);
634
637
  i0.ɵɵelementEnd();
635
638
  } if (rf & 2) {
@@ -639,23 +642,23 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_
639
642
  i0.ɵɵtextInterpolate1(" ", ctx_r2.getRelatedEntityName(field_r22), " ");
640
643
  } }
641
644
  function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
642
- i0.ɵɵelementStart(0, "span", 154);
645
+ i0.ɵɵelementStart(0, "span", 155);
643
646
  i0.ɵɵtext(1, "PK");
644
647
  i0.ɵɵelementEnd();
645
648
  } }
646
649
  function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
647
- i0.ɵɵelementStart(0, "span", 155);
650
+ i0.ɵɵelementStart(0, "span", 156);
648
651
  i0.ɵɵtext(1, "FK");
649
652
  i0.ɵɵelementEnd();
650
653
  } }
651
654
  function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
652
- i0.ɵɵelementStart(0, "span", 156);
653
- i0.ɵɵelement(1, "i", 66);
655
+ i0.ɵɵelementStart(0, "span", 157);
656
+ i0.ɵɵelement(1, "i", 67);
654
657
  i0.ɵɵelementEnd();
655
658
  } }
656
659
  function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
657
- i0.ɵɵelementStart(0, "span", 157);
658
- i0.ɵɵelement(1, "i", 43);
660
+ i0.ɵɵelementStart(0, "span", 158);
661
+ i0.ɵɵelement(1, "i", 44);
659
662
  i0.ɵɵtext(2);
660
663
  i0.ɵɵelementEnd();
661
664
  } if (rf & 2) {
@@ -667,28 +670,28 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_
667
670
  } }
668
671
  function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Template(rf, ctx) { if (rf & 1) {
669
672
  const _r21 = i0.ɵɵgetCurrentView();
670
- i0.ɵɵelementStart(0, "div", 144);
673
+ i0.ɵɵelementStart(0, "div", 145);
671
674
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Template_div_click_0_listener() { const field_r22 = i0.ɵɵrestoreView(_r21).$implicit; const ctx_r2 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r2.selectField(field_r22)); });
672
- i0.ɵɵelementStart(1, "div", 145);
675
+ i0.ɵɵelementStart(1, "div", 146);
673
676
  i0.ɵɵelement(2, "i");
674
677
  i0.ɵɵelementEnd();
675
- i0.ɵɵelementStart(3, "div", 146)(4, "div", 147);
678
+ i0.ɵɵelementStart(3, "div", 147)(4, "div", 148);
676
679
  i0.ɵɵtext(5);
677
680
  i0.ɵɵelementEnd();
678
- i0.ɵɵelementStart(6, "div", 148);
681
+ i0.ɵɵelementStart(6, "div", 149);
679
682
  i0.ɵɵtext(7);
680
683
  i0.ɵɵelementEnd();
681
- i0.ɵɵelementStart(8, "div", 149)(9, "span", 150);
684
+ i0.ɵɵelementStart(8, "div", 150)(9, "span", 151);
682
685
  i0.ɵɵtext(10);
683
686
  i0.ɵɵelementEnd();
684
- i0.ɵɵconditionalCreate(11, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Conditional_11_Template, 2, 0, "span", 151);
685
- i0.ɵɵconditionalCreate(12, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Conditional_12_Template, 3, 1, "span", 152);
687
+ i0.ɵɵconditionalCreate(11, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Conditional_11_Template, 2, 0, "span", 152);
688
+ i0.ɵɵconditionalCreate(12, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Conditional_12_Template, 3, 1, "span", 153);
686
689
  i0.ɵɵelementEnd()();
687
- i0.ɵɵelementStart(13, "div", 153);
688
- i0.ɵɵconditionalCreate(14, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Conditional_14_Template, 2, 0, "span", 154);
689
- i0.ɵɵconditionalCreate(15, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Conditional_15_Template, 2, 0, "span", 155);
690
- i0.ɵɵconditionalCreate(16, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Conditional_16_Template, 2, 0, "span", 156);
691
- i0.ɵɵconditionalCreate(17, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Conditional_17_Template, 3, 2, "span", 157);
690
+ i0.ɵɵelementStart(13, "div", 154);
691
+ i0.ɵɵconditionalCreate(14, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Conditional_14_Template, 2, 0, "span", 155);
692
+ i0.ɵɵconditionalCreate(15, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Conditional_15_Template, 2, 0, "span", 156);
693
+ i0.ɵɵconditionalCreate(16, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Conditional_16_Template, 2, 0, "span", 157);
694
+ i0.ɵɵconditionalCreate(17, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Conditional_17_Template, 3, 2, "span", 158);
692
695
  i0.ɵɵelementEnd()();
693
696
  } if (rf & 2) {
694
697
  const field_r22 = ctx.$implicit;
@@ -716,8 +719,8 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_
716
719
  i0.ɵɵconditional(ctx_r2.IsInheritedField(field_r22) ? 17 : -1);
717
720
  } }
718
721
  function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
719
- i0.ɵɵelementStart(0, "div", 142);
720
- i0.ɵɵrepeaterCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Template, 18, 13, "div", 143, i0.ɵɵrepeaterTrackByIdentity);
722
+ i0.ɵɵelementStart(0, "div", 143);
723
+ i0.ɵɵrepeaterCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_For_2_Template, 18, 13, "div", 144, i0.ɵɵrepeaterTrackByIdentity);
721
724
  i0.ɵɵelementEnd();
722
725
  } if (rf & 2) {
723
726
  const group_r20 = i0.ɵɵnextContext().$implicit;
@@ -726,16 +729,16 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_
726
729
  } }
727
730
  function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Template(rf, ctx) { if (rf & 1) {
728
731
  const _r19 = i0.ɵɵgetCurrentView();
729
- i0.ɵɵelementStart(0, "div", 136)(1, "div", 137);
732
+ i0.ɵɵelementStart(0, "div", 137)(1, "div", 138);
730
733
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Template_div_click_1_listener() { const group_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.toggleFieldGroup(group_r20.id)); });
731
- i0.ɵɵelement(2, "i", 138)(3, "i", 139);
732
- i0.ɵɵelementStart(4, "span", 140);
734
+ i0.ɵɵelement(2, "i", 139)(3, "i", 140);
735
+ i0.ɵɵelementStart(4, "span", 141);
733
736
  i0.ɵɵtext(5);
734
737
  i0.ɵɵelementEnd();
735
- i0.ɵɵelementStart(6, "span", 141);
738
+ i0.ɵɵelementStart(6, "span", 142);
736
739
  i0.ɵɵtext(7);
737
740
  i0.ɵɵelementEnd()();
738
- i0.ɵɵconditionalCreate(8, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_Template, 3, 0, "div", 142);
741
+ i0.ɵɵconditionalCreate(8, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Conditional_8_Template, 3, 0, "div", 143);
739
742
  i0.ɵɵelementEnd();
740
743
  } if (rf & 2) {
741
744
  const group_r20 = ctx.$implicit;
@@ -753,8 +756,8 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_
753
756
  i0.ɵɵconditional(ctx_r2.isFieldGroupExpanded(group_r20.id) ? 8 : -1);
754
757
  } }
755
758
  function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_Template(rf, ctx) { if (rf & 1) {
756
- i0.ɵɵelementStart(0, "div", 129);
757
- i0.ɵɵrepeaterCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Template, 9, 8, "div", 135, i0.ɵɵrepeaterTrackByIdentity);
759
+ i0.ɵɵelementStart(0, "div", 130);
760
+ i0.ɵɵrepeaterCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Template, 9, 8, "div", 136, i0.ɵɵrepeaterTrackByIdentity);
758
761
  i0.ɵɵelementEnd();
759
762
  } if (rf & 2) {
760
763
  const ctx_r2 = i0.ɵɵnextContext(3);
@@ -762,7 +765,7 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_
762
765
  i0.ɵɵrepeater(ctx_r2.getFilteredFieldGroups());
763
766
  } }
764
767
  function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_15_Template(rf, ctx) { if (rf & 1) {
765
- i0.ɵɵelementStart(0, "span", 183);
768
+ i0.ɵɵelementStart(0, "span", 184);
766
769
  i0.ɵɵtext(1);
767
770
  i0.ɵɵelementEnd();
768
771
  } if (rf & 2) {
@@ -771,30 +774,30 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_
771
774
  i0.ɵɵtextInterpolate(field_r26.Length);
772
775
  } }
773
776
  function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_16_Template(rf, ctx) { if (rf & 1) {
774
- i0.ɵɵelementStart(0, "span", 184);
777
+ i0.ɵɵelementStart(0, "span", 185);
775
778
  i0.ɵɵtext(1, "\u2014");
776
779
  i0.ɵɵelementEnd();
777
780
  } }
778
781
  function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_23_Template(rf, ctx) { if (rf & 1) {
779
- i0.ɵɵelementStart(0, "span", 188);
780
- i0.ɵɵelement(1, "i", 194);
782
+ i0.ɵɵelementStart(0, "span", 189);
783
+ i0.ɵɵelement(1, "i", 195);
781
784
  i0.ɵɵtext(2, " PK ");
782
785
  i0.ɵɵelementEnd();
783
786
  } }
784
787
  function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_24_Template(rf, ctx) { if (rf & 1) {
785
- i0.ɵɵelementStart(0, "span", 189);
788
+ i0.ɵɵelementStart(0, "span", 190);
786
789
  i0.ɵɵelement(1, "i", 20);
787
790
  i0.ɵɵtext(2, " FK ");
788
791
  i0.ɵɵelementEnd();
789
792
  } }
790
793
  function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_25_Template(rf, ctx) { if (rf & 1) {
791
- i0.ɵɵelementStart(0, "span", 190);
792
- i0.ɵɵelement(1, "i", 66);
794
+ i0.ɵɵelementStart(0, "span", 191);
795
+ i0.ɵɵelement(1, "i", 67);
793
796
  i0.ɵɵelementEnd();
794
797
  } }
795
798
  function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_26_Template(rf, ctx) { if (rf & 1) {
796
- i0.ɵɵelementStart(0, "span", 191);
797
- i0.ɵɵelement(1, "i", 43);
799
+ i0.ɵɵelementStart(0, "span", 192);
800
+ i0.ɵɵelement(1, "i", 44);
798
801
  i0.ɵɵtext(2);
799
802
  i0.ɵɵelementEnd();
800
803
  } if (rf & 2) {
@@ -806,37 +809,37 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_
806
809
  } }
807
810
  function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Template(rf, ctx) { if (rf & 1) {
808
811
  const _r25 = i0.ɵɵgetCurrentView();
809
- i0.ɵɵelementStart(0, "div", 172);
812
+ i0.ɵɵelementStart(0, "div", 173);
810
813
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Template_div_click_0_listener() { const field_r26 = i0.ɵɵrestoreView(_r25).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.selectField(field_r26)); });
811
- i0.ɵɵelementStart(1, "div", 173)(2, "span", 174);
814
+ i0.ɵɵelementStart(1, "div", 174)(2, "span", 175);
812
815
  i0.ɵɵtext(3);
813
816
  i0.ɵɵelementEnd()();
814
- i0.ɵɵelementStart(4, "div", 175);
815
- i0.ɵɵelement(5, "i", 176);
816
- i0.ɵɵelementStart(6, "span", 177);
817
+ i0.ɵɵelementStart(4, "div", 176);
818
+ i0.ɵɵelement(5, "i", 177);
819
+ i0.ɵɵelementStart(6, "span", 178);
817
820
  i0.ɵɵtext(7);
818
821
  i0.ɵɵelementEnd()();
819
- i0.ɵɵelementStart(8, "div", 178)(9, "span", 179);
822
+ i0.ɵɵelementStart(8, "div", 179)(9, "span", 180);
820
823
  i0.ɵɵtext(10);
821
824
  i0.ɵɵelementEnd()();
822
- i0.ɵɵelementStart(11, "div", 180)(12, "span", 181);
825
+ i0.ɵɵelementStart(11, "div", 181)(12, "span", 182);
823
826
  i0.ɵɵtext(13);
824
827
  i0.ɵɵelementEnd()();
825
- i0.ɵɵelementStart(14, "div", 182);
826
- i0.ɵɵconditionalCreate(15, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_15_Template, 2, 1, "span", 183);
827
- i0.ɵɵconditionalCreate(16, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_16_Template, 2, 0, "span", 184);
828
+ i0.ɵɵelementStart(14, "div", 183);
829
+ i0.ɵɵconditionalCreate(15, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_15_Template, 2, 1, "span", 184);
830
+ i0.ɵɵconditionalCreate(16, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_16_Template, 2, 0, "span", 185);
828
831
  i0.ɵɵelementEnd();
829
- i0.ɵɵelementStart(17, "div", 185)(18, "span", 186);
832
+ i0.ɵɵelementStart(17, "div", 186)(18, "span", 187);
830
833
  i0.ɵɵelement(19, "i");
831
834
  i0.ɵɵtext(20);
832
835
  i0.ɵɵelementEnd()();
833
- i0.ɵɵelementStart(21, "div", 167)(22, "div", 187);
834
- i0.ɵɵconditionalCreate(23, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_23_Template, 3, 0, "span", 188);
835
- i0.ɵɵconditionalCreate(24, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_24_Template, 3, 0, "span", 189);
836
- i0.ɵɵconditionalCreate(25, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_25_Template, 2, 0, "span", 190);
837
- i0.ɵɵconditionalCreate(26, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_26_Template, 3, 2, "span", 191);
836
+ i0.ɵɵelementStart(21, "div", 168)(22, "div", 188);
837
+ i0.ɵɵconditionalCreate(23, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_23_Template, 3, 0, "span", 189);
838
+ i0.ɵɵconditionalCreate(24, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_24_Template, 3, 0, "span", 190);
839
+ i0.ɵɵconditionalCreate(25, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_25_Template, 2, 0, "span", 191);
840
+ i0.ɵɵconditionalCreate(26, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_26_Template, 3, 2, "span", 192);
838
841
  i0.ɵɵelementEnd()();
839
- i0.ɵɵelementStart(27, "div", 192)(28, "span", 193);
842
+ i0.ɵɵelementStart(27, "div", 193)(28, "span", 194);
840
843
  i0.ɵɵtext(29);
841
844
  i0.ɵɵelementEnd()()();
842
845
  } if (rf & 2) {
@@ -877,56 +880,56 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_
877
880
  i0.ɵɵtextInterpolate(field_r26.Description || "\u2014");
878
881
  } }
879
882
  function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_Conditional_28_Template(rf, ctx) { if (rf & 1) {
880
- i0.ɵɵelementStart(0, "div", 171);
881
- i0.ɵɵelement(1, "i", 120);
883
+ i0.ɵɵelementStart(0, "div", 172);
884
+ i0.ɵɵelement(1, "i", 121);
882
885
  i0.ɵɵelementStart(2, "span");
883
886
  i0.ɵɵtext(3, "No fields match your search");
884
887
  i0.ɵɵelementEnd()();
885
888
  } }
886
889
  function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_Template(rf, ctx) { if (rf & 1) {
887
890
  const _r24 = i0.ɵɵgetCurrentView();
888
- i0.ɵɵelementStart(0, "div", 130)(1, "div", 159)(2, "div", 160);
891
+ i0.ɵɵelementStart(0, "div", 131)(1, "div", 160)(2, "div", 161);
889
892
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_Template_div_click_2_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.sortFieldList("Sequence")); });
890
893
  i0.ɵɵtext(3, " # ");
891
- i0.ɵɵelement(4, "i", 161);
894
+ i0.ɵɵelement(4, "i", 162);
892
895
  i0.ɵɵelementEnd();
893
- i0.ɵɵelementStart(5, "div", 162);
896
+ i0.ɵɵelementStart(5, "div", 163);
894
897
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_Template_div_click_5_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.sortFieldList("Name")); });
895
898
  i0.ɵɵtext(6, " Field Name ");
896
- i0.ɵɵelement(7, "i", 161);
899
+ i0.ɵɵelement(7, "i", 162);
897
900
  i0.ɵɵelementEnd();
898
- i0.ɵɵelementStart(8, "div", 163);
901
+ i0.ɵɵelementStart(8, "div", 164);
899
902
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_Template_div_click_8_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.sortFieldList("DisplayName")); });
900
903
  i0.ɵɵtext(9, " Display Name ");
901
- i0.ɵɵelement(10, "i", 161);
904
+ i0.ɵɵelement(10, "i", 162);
902
905
  i0.ɵɵelementEnd();
903
- i0.ɵɵelementStart(11, "div", 164);
906
+ i0.ɵɵelementStart(11, "div", 165);
904
907
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_Template_div_click_11_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.sortFieldList("Type")); });
905
908
  i0.ɵɵtext(12, " Type ");
906
- i0.ɵɵelement(13, "i", 161);
909
+ i0.ɵɵelement(13, "i", 162);
907
910
  i0.ɵɵelementEnd();
908
- i0.ɵɵelementStart(14, "div", 165);
911
+ i0.ɵɵelementStart(14, "div", 166);
909
912
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_Template_div_click_14_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.sortFieldList("Length")); });
910
913
  i0.ɵɵtext(15, " Length ");
911
- i0.ɵɵelement(16, "i", 161);
914
+ i0.ɵɵelement(16, "i", 162);
912
915
  i0.ɵɵelementEnd();
913
- i0.ɵɵelementStart(17, "div", 166);
916
+ i0.ɵɵelementStart(17, "div", 167);
914
917
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_Template_div_click_17_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.sortFieldList("AllowsNull")); });
915
918
  i0.ɵɵtext(18, " Required ");
916
- i0.ɵɵelement(19, "i", 161);
919
+ i0.ɵɵelement(19, "i", 162);
917
920
  i0.ɵɵelementEnd();
918
- i0.ɵɵelementStart(20, "div", 167);
921
+ i0.ɵɵelementStart(20, "div", 168);
919
922
  i0.ɵɵtext(21, "Flags");
920
923
  i0.ɵɵelementEnd();
921
- i0.ɵɵelementStart(22, "div", 168);
924
+ i0.ɵɵelementStart(22, "div", 169);
922
925
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_Template_div_click_22_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.sortFieldList("Description")); });
923
926
  i0.ɵɵtext(23, " Description ");
924
- i0.ɵɵelement(24, "i", 161);
927
+ i0.ɵɵelement(24, "i", 162);
925
928
  i0.ɵɵelementEnd()();
926
- i0.ɵɵelementStart(25, "div", 169);
927
- i0.ɵɵrepeaterCreate(26, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Template, 30, 23, "div", 170, i0.ɵɵrepeaterTrackByIdentity);
929
+ i0.ɵɵelementStart(25, "div", 170);
930
+ i0.ɵɵrepeaterCreate(26, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Template, 30, 23, "div", 171, i0.ɵɵrepeaterTrackByIdentity);
928
931
  i0.ɵɵelementEnd();
929
- i0.ɵɵconditionalCreate(28, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_Conditional_28_Template, 4, 0, "div", 171);
932
+ i0.ɵɵconditionalCreate(28, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_Conditional_28_Template, 4, 0, "div", 172);
930
933
  i0.ɵɵelementEnd();
931
934
  } if (rf & 2) {
932
935
  const ctx_r2 = i0.ɵɵnextContext(3);
@@ -965,24 +968,24 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_
965
968
  } }
966
969
  function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Template(rf, ctx) { if (rf & 1) {
967
970
  const _r17 = i0.ɵɵgetCurrentView();
968
- i0.ɵɵelementStart(0, "section", 29)(1, "div", 118)(2, "div", 119);
969
- i0.ɵɵelement(3, "i", 120);
970
- i0.ɵɵelementStart(4, "input", 121);
971
+ i0.ɵɵelementStart(0, "section", 29)(1, "div", 119)(2, "div", 120);
972
+ i0.ɵɵelement(3, "i", 121);
973
+ i0.ɵɵelementStart(4, "input", 122);
971
974
  i0.ɵɵlistener("ngModelChange", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Template_input_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onFieldSearch($event)); });
972
975
  i0.ɵɵelementEnd()();
973
- i0.ɵɵelementStart(5, "div", 122)(6, "div", 123)(7, "button", 124);
976
+ i0.ɵɵelementStart(5, "div", 123)(6, "div", 124)(7, "button", 125);
974
977
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.fieldViewMode = "grouped"); });
975
- i0.ɵɵelement(8, "i", 48);
978
+ i0.ɵɵelement(8, "i", 49);
976
979
  i0.ɵɵelementEnd();
977
- i0.ɵɵelementStart(9, "button", 125);
980
+ i0.ɵɵelementStart(9, "button", 126);
978
981
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.fieldViewMode = "list"); });
979
- i0.ɵɵelement(10, "i", 126);
982
+ i0.ɵɵelement(10, "i", 127);
980
983
  i0.ɵɵelementEnd()();
981
- i0.ɵɵconditionalCreate(11, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_11_Template, 5, 2, "div", 127);
984
+ i0.ɵɵconditionalCreate(11, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_11_Template, 5, 2, "div", 128);
982
985
  i0.ɵɵelementEnd()();
983
- i0.ɵɵelementStart(12, "div", 128);
984
- i0.ɵɵconditionalCreate(13, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_Template, 3, 0, "div", 129);
985
- i0.ɵɵconditionalCreate(14, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_Template, 29, 22, "div", 130);
986
+ i0.ɵɵelementStart(12, "div", 129);
987
+ i0.ɵɵconditionalCreate(13, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_Template, 3, 0, "div", 130);
988
+ i0.ɵɵconditionalCreate(14, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_Template, 29, 22, "div", 131);
986
989
  i0.ɵɵelementEnd()();
987
990
  } if (rf & 2) {
988
991
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -1001,7 +1004,7 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Template(rf,
1001
1004
  } }
1002
1005
  function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_9_For_5_Template(rf, ctx) { if (rf & 1) {
1003
1006
  const _r28 = i0.ɵɵgetCurrentView();
1004
- i0.ɵɵelementStart(0, "button", 203);
1007
+ i0.ɵɵelementStart(0, "button", 204);
1005
1008
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_9_For_5_Template_button_click_0_listener() { const d_r29 = i0.ɵɵrestoreView(_r28).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.setErdDepth(d_r29)); });
1006
1009
  i0.ɵɵtext(1);
1007
1010
  i0.ɵɵelementEnd();
@@ -1014,11 +1017,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_
1014
1017
  i0.ɵɵtextInterpolate1(" ", d_r29, " ");
1015
1018
  } }
1016
1019
  function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1017
- i0.ɵɵelementStart(0, "div", 197)(1, "span", 200);
1020
+ i0.ɵɵelementStart(0, "div", 198)(1, "span", 201);
1018
1021
  i0.ɵɵtext(2, "Depth:");
1019
1022
  i0.ɵɵelementEnd();
1020
- i0.ɵɵelementStart(3, "div", 201);
1021
- i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_9_For_5_Template, 2, 4, "button", 202, i0.ɵɵrepeaterTrackByIdentity);
1023
+ i0.ɵɵelementStart(3, "div", 202);
1024
+ i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_9_For_5_Template, 2, 4, "button", 203, i0.ɵɵrepeaterTrackByIdentity);
1022
1025
  i0.ɵɵelementEnd()();
1023
1026
  } if (rf & 2) {
1024
1027
  i0.ɵɵadvance(4);
@@ -1026,7 +1029,7 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_
1026
1029
  } }
1027
1030
  function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1028
1031
  const _r30 = i0.ɵɵgetCurrentView();
1029
- i0.ɵɵelementStart(0, "div", 198)(1, "mj-erd-composite", 204);
1032
+ i0.ɵɵelementStart(0, "div", 199)(1, "mj-erd-composite", 205);
1030
1033
  i0.ɵɵlistener("stateChange", function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_11_Template_mj_erd_composite_stateChange_1_listener($event) { i0.ɵɵrestoreView(_r30); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onERDStateChange($event)); })("openRecord", function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_11_Template_mj_erd_composite_openRecord_1_listener($event) { i0.ɵɵrestoreView(_r30); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onERDOpenRecord($event)); });
1031
1034
  i0.ɵɵelementEnd()();
1032
1035
  } if (rf & 2) {
@@ -1036,7 +1039,7 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_
1036
1039
  } }
1037
1040
  function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_9_For_8_Template(rf, ctx) { if (rf & 1) {
1038
1041
  const _r31 = i0.ɵɵgetCurrentView();
1039
- i0.ɵɵelementStart(0, "span", 217);
1042
+ i0.ɵɵelementStart(0, "span", 218);
1040
1043
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_9_For_8_Template_span_click_0_listener() { const field_r32 = i0.ɵɵrestoreView(_r31).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.selectField(field_r32)); });
1041
1044
  i0.ɵɵelement(1, "i", 20);
1042
1045
  i0.ɵɵtext(2);
@@ -1048,14 +1051,14 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_
1048
1051
  i0.ɵɵtextInterpolate1(" ", field_r32.Name, " ");
1049
1052
  } }
1050
1053
  function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_9_Template(rf, ctx) { if (rf & 1) {
1051
- i0.ɵɵelementStart(0, "div", 209)(1, "div", 212)(2, "div", 213);
1052
- i0.ɵɵelement(3, "i", 62);
1054
+ i0.ɵɵelementStart(0, "div", 210)(1, "div", 213)(2, "div", 214);
1055
+ i0.ɵɵelement(3, "i", 63);
1053
1056
  i0.ɵɵelementEnd();
1054
- i0.ɵɵelementStart(4, "div", 214);
1057
+ i0.ɵɵelementStart(4, "div", 215);
1055
1058
  i0.ɵɵtext(5);
1056
1059
  i0.ɵɵelementEnd()();
1057
- i0.ɵɵelementStart(6, "div", 215);
1058
- i0.ɵɵrepeaterCreate(7, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_9_For_8_Template, 3, 2, "span", 216, i0.ɵɵrepeaterTrackByIdentity);
1060
+ i0.ɵɵelementStart(6, "div", 216);
1061
+ i0.ɵɵrepeaterCreate(7, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_9_For_8_Template, 3, 2, "span", 217, i0.ɵɵrepeaterTrackByIdentity);
1059
1062
  i0.ɵɵelementEnd()();
1060
1063
  } if (rf & 2) {
1061
1064
  const group_r33 = ctx.$implicit;
@@ -1065,18 +1068,18 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_
1065
1068
  i0.ɵɵrepeater(group_r33.fields);
1066
1069
  } }
1067
1070
  function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1068
- i0.ɵɵelementStart(0, "div", 210)(1, "p");
1071
+ i0.ɵɵelementStart(0, "div", 211)(1, "p");
1069
1072
  i0.ɵɵtext(2, "No outgoing relationships");
1070
1073
  i0.ɵɵelementEnd()();
1071
1074
  } }
1072
1075
  function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_19_For_8_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1073
- i0.ɵɵelement(0, "i", 221);
1076
+ i0.ɵɵelement(0, "i", 222);
1074
1077
  } }
1075
1078
  function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_19_For_8_Template(rf, ctx) { if (rf & 1) {
1076
- i0.ɵɵelementStart(0, "span", 220);
1079
+ i0.ɵɵelementStart(0, "span", 221);
1077
1080
  i0.ɵɵelement(1, "i", 20);
1078
1081
  i0.ɵɵtext(2);
1079
- i0.ɵɵconditionalCreate(3, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_19_For_8_Conditional_3_Template, 1, 0, "i", 221);
1082
+ i0.ɵɵconditionalCreate(3, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_19_For_8_Conditional_3_Template, 1, 0, "i", 222);
1080
1083
  i0.ɵɵelementEnd();
1081
1084
  } if (rf & 2) {
1082
1085
  const field_r34 = ctx.$implicit;
@@ -1087,14 +1090,14 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_
1087
1090
  i0.ɵɵconditional(field_r34.bundleInAPI ? 3 : -1);
1088
1091
  } }
1089
1092
  function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_19_Template(rf, ctx) { if (rf & 1) {
1090
- i0.ɵɵelementStart(0, "div", 209)(1, "div", 212)(2, "div", 218);
1091
- i0.ɵɵelement(3, "i", 219);
1093
+ i0.ɵɵelementStart(0, "div", 210)(1, "div", 213)(2, "div", 219);
1094
+ i0.ɵɵelement(3, "i", 220);
1092
1095
  i0.ɵɵelementEnd();
1093
- i0.ɵɵelementStart(4, "div", 214);
1096
+ i0.ɵɵelementStart(4, "div", 215);
1094
1097
  i0.ɵɵtext(5);
1095
1098
  i0.ɵɵelementEnd()();
1096
- i0.ɵɵelementStart(6, "div", 215);
1097
- i0.ɵɵrepeaterCreate(7, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_19_For_8_Template, 4, 3, "span", 220, i0.ɵɵrepeaterTrackByIdentity);
1099
+ i0.ɵɵelementStart(6, "div", 216);
1100
+ i0.ɵɵrepeaterCreate(7, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_19_For_8_Template, 4, 3, "span", 221, i0.ɵɵrepeaterTrackByIdentity);
1098
1101
  i0.ɵɵelementEnd()();
1099
1102
  } if (rf & 2) {
1100
1103
  const group_r35 = ctx.$implicit;
@@ -1104,30 +1107,30 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_
1104
1107
  i0.ɵɵrepeater(group_r35.fields);
1105
1108
  } }
1106
1109
  function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_Conditional_20_Template(rf, ctx) { if (rf & 1) {
1107
- i0.ɵɵelementStart(0, "div", 210)(1, "p");
1110
+ i0.ɵɵelementStart(0, "div", 211)(1, "p");
1108
1111
  i0.ɵɵtext(2, "No incoming relationships");
1109
1112
  i0.ɵɵelementEnd()();
1110
1113
  } }
1111
1114
  function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1112
- i0.ɵɵelementStart(0, "div", 199)(1, "div", 205)(2, "h3", 206);
1113
- i0.ɵɵelement(3, "i", 207);
1115
+ i0.ɵɵelementStart(0, "div", 200)(1, "div", 206)(2, "h3", 207);
1116
+ i0.ɵɵelement(3, "i", 208);
1114
1117
  i0.ɵɵtext(4, " Outgoing (References to other entities) ");
1115
- i0.ɵɵelementStart(5, "span", 141);
1118
+ i0.ɵɵelementStart(5, "span", 142);
1116
1119
  i0.ɵɵtext(6);
1117
1120
  i0.ɵɵelementEnd()();
1118
- i0.ɵɵelementStart(7, "div", 208);
1119
- i0.ɵɵrepeaterCreate(8, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_9_Template, 9, 1, "div", 209, i0.ɵɵrepeaterTrackByIdentity);
1120
- i0.ɵɵconditionalCreate(10, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_Conditional_10_Template, 3, 0, "div", 210);
1121
+ i0.ɵɵelementStart(7, "div", 209);
1122
+ i0.ɵɵrepeaterCreate(8, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_9_Template, 9, 1, "div", 210, i0.ɵɵrepeaterTrackByIdentity);
1123
+ i0.ɵɵconditionalCreate(10, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_Conditional_10_Template, 3, 0, "div", 211);
1121
1124
  i0.ɵɵelementEnd()();
1122
- i0.ɵɵelementStart(11, "div", 205)(12, "h3", 206);
1123
- i0.ɵɵelement(13, "i", 211);
1125
+ i0.ɵɵelementStart(11, "div", 206)(12, "h3", 207);
1126
+ i0.ɵɵelement(13, "i", 212);
1124
1127
  i0.ɵɵtext(14, " Incoming (Entities that reference this one) ");
1125
- i0.ɵɵelementStart(15, "span", 141);
1128
+ i0.ɵɵelementStart(15, "span", 142);
1126
1129
  i0.ɵɵtext(16);
1127
1130
  i0.ɵɵelementEnd()();
1128
- i0.ɵɵelementStart(17, "div", 208);
1129
- i0.ɵɵrepeaterCreate(18, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_19_Template, 9, 1, "div", 209, i0.ɵɵrepeaterTrackByIdentity);
1130
- i0.ɵɵconditionalCreate(20, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_Conditional_20_Template, 3, 0, "div", 210);
1131
+ i0.ɵɵelementStart(17, "div", 209);
1132
+ i0.ɵɵrepeaterCreate(18, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_19_Template, 9, 1, "div", 210, i0.ɵɵrepeaterTrackByIdentity);
1133
+ i0.ɵɵconditionalCreate(20, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_Conditional_20_Template, 3, 0, "div", 211);
1131
1134
  i0.ɵɵelementEnd()()();
1132
1135
  } if (rf & 2) {
1133
1136
  const ctx_r2 = i0.ɵɵnextContext(3);
@@ -1146,21 +1149,21 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_
1146
1149
  } }
1147
1150
  function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Template(rf, ctx) { if (rf & 1) {
1148
1151
  const _r27 = i0.ɵɵgetCurrentView();
1149
- i0.ɵɵelementStart(0, "section", 30)(1, "div", 118)(2, "div", 195)(3, "button", 196);
1152
+ i0.ɵɵelementStart(0, "section", 30)(1, "div", 119)(2, "div", 196)(3, "button", 197);
1150
1153
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r27); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.relationshipViewMode = "diagram"); });
1151
- i0.ɵɵelement(4, "i", 64);
1154
+ i0.ɵɵelement(4, "i", 65);
1152
1155
  i0.ɵɵtext(5, " Diagram ");
1153
1156
  i0.ɵɵelementEnd();
1154
- i0.ɵɵelementStart(6, "button", 196);
1157
+ i0.ɵɵelementStart(6, "button", 197);
1155
1158
  i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r27); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.relationshipViewMode = "list"); });
1156
- i0.ɵɵelement(7, "i", 126);
1159
+ i0.ɵɵelement(7, "i", 127);
1157
1160
  i0.ɵɵtext(8, " List ");
1158
1161
  i0.ɵɵelementEnd()();
1159
- i0.ɵɵconditionalCreate(9, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_9_Template, 6, 1, "div", 197);
1162
+ i0.ɵɵconditionalCreate(9, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_9_Template, 6, 1, "div", 198);
1160
1163
  i0.ɵɵelementEnd();
1161
- i0.ɵɵelementStart(10, "div", 53);
1162
- i0.ɵɵconditionalCreate(11, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_11_Template, 2, 7, "div", 198);
1163
- i0.ɵɵconditionalCreate(12, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_Template, 21, 4, "div", 199);
1164
+ i0.ɵɵelementStart(10, "div", 54);
1165
+ i0.ɵɵconditionalCreate(11, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_11_Template, 2, 7, "div", 199);
1166
+ i0.ɵɵconditionalCreate(12, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_Template, 21, 4, "div", 200);
1164
1167
  i0.ɵɵelementEnd()();
1165
1168
  } if (rf & 2) {
1166
1169
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -1175,145 +1178,368 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Template(rf,
1175
1178
  i0.ɵɵadvance();
1176
1179
  i0.ɵɵconditional(ctx_r2.relationshipViewMode === "list" ? 12 : -1);
1177
1180
  } }
1178
- function MJEntityFormComponentExtended_Conditional_0_Conditional_54_For_20_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1179
- i0.ɵɵelementStart(0, "span", 232);
1181
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1182
+ i0.ɵɵelementStart(0, "div", 223);
1183
+ i0.ɵɵelement(1, "i", 224);
1184
+ i0.ɵɵelementStart(2, "h3");
1185
+ i0.ɵɵtext(3, "No Organic Keys");
1186
+ i0.ɵɵelementEnd();
1187
+ i0.ɵɵelementStart(4, "p");
1188
+ i0.ɵɵtext(5, "This entity has no organic key relationships configured. Organic keys enable cross-system matching by shared business data like email addresses, phone numbers, or domain names \u2014 without requiring foreign key constraints.");
1189
+ i0.ɵɵelementEnd()();
1190
+ } }
1191
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_For_8_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1192
+ i0.ɵɵelementStart(0, "p", 233);
1193
+ i0.ɵɵtext(1);
1194
+ i0.ɵɵelementEnd();
1195
+ } if (rf & 2) {
1196
+ const okGroup_r36 = i0.ɵɵnextContext().$implicit;
1197
+ i0.ɵɵadvance();
1198
+ i0.ɵɵtextInterpolate(okGroup_r36.OrganicKey.Description);
1199
+ } }
1200
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_For_8_For_13_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1201
+ i0.ɵɵelementStart(0, "span", 243);
1202
+ i0.ɵɵtext(1, "Direct");
1203
+ i0.ɵɵelementEnd();
1204
+ i0.ɵɵelementStart(2, "span", 244);
1205
+ i0.ɵɵtext(3);
1206
+ i0.ɵɵelementEnd();
1207
+ } if (rf & 2) {
1208
+ const target_r38 = i0.ɵɵnextContext().$implicit;
1209
+ const okGroup_r36 = i0.ɵɵnextContext().$implicit;
1210
+ i0.ɵɵadvance(3);
1211
+ i0.ɵɵtextInterpolate2("", okGroup_r36.OrganicKey.MatchFieldNames, " \u2192 ", target_r38.Info.RelatedEntityFieldNames);
1212
+ } }
1213
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_For_8_For_13_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1214
+ i0.ɵɵelementStart(0, "span", 245);
1215
+ i0.ɵɵtext(1, "Transitive");
1216
+ i0.ɵɵelementEnd();
1217
+ i0.ɵɵelementStart(2, "span", 246);
1218
+ i0.ɵɵtext(3);
1219
+ i0.ɵɵelementEnd();
1220
+ } if (rf & 2) {
1221
+ const target_r38 = i0.ɵɵnextContext().$implicit;
1222
+ i0.ɵɵadvance(2);
1223
+ i0.ɵɵproperty("title", target_r38.Info.TransitiveObjectName || "");
1224
+ i0.ɵɵadvance();
1225
+ i0.ɵɵtextInterpolate1("via ", target_r38.Info.TransitiveObjectName);
1226
+ } }
1227
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_For_8_For_13_Template(rf, ctx) { if (rf & 1) {
1228
+ const _r37 = i0.ɵɵgetCurrentView();
1229
+ i0.ɵɵelementStart(0, "div", 236);
1230
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_For_8_For_13_Template_div_click_0_listener() { const target_r38 = i0.ɵɵrestoreView(_r37).$implicit; const ctx_r2 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r2.NavigateToEntityByID(target_r38.Info.RelatedEntityID)); });
1231
+ i0.ɵɵelementStart(1, "div", 214);
1232
+ i0.ɵɵelement(2, "i", 63);
1233
+ i0.ɵɵelementEnd();
1234
+ i0.ɵɵelementStart(3, "div", 237)(4, "div", 238);
1235
+ i0.ɵɵelement(5, "i", 239);
1236
+ i0.ɵɵelementStart(6, "span", 240);
1237
+ i0.ɵɵtext(7);
1238
+ i0.ɵɵelementEnd();
1239
+ i0.ɵɵelement(8, "i", 241);
1240
+ i0.ɵɵelementEnd();
1241
+ i0.ɵɵelementStart(9, "div", 242);
1242
+ i0.ɵɵconditionalCreate(10, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_For_8_For_13_Conditional_10_Template, 4, 2)(11, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_For_8_For_13_Conditional_11_Template, 4, 2);
1243
+ i0.ɵɵelementEnd()()();
1244
+ } if (rf & 2) {
1245
+ const target_r38 = ctx.$implicit;
1246
+ i0.ɵɵadvance(5);
1247
+ i0.ɵɵclassMap(target_r38.EntityIcon);
1248
+ i0.ɵɵadvance(2);
1249
+ i0.ɵɵtextInterpolate(target_r38.Info.DisplayName || target_r38.EntityName);
1250
+ i0.ɵɵadvance(3);
1251
+ i0.ɵɵconditional(target_r38.Info.IsDirectMatch ? 10 : 11);
1252
+ } }
1253
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_For_8_Template(rf, ctx) { if (rf & 1) {
1254
+ i0.ɵɵelementStart(0, "div", 226)(1, "div", 227)(2, "div", 228);
1255
+ i0.ɵɵelement(3, "i", 229);
1256
+ i0.ɵɵtext(4);
1257
+ i0.ɵɵelementEnd();
1258
+ i0.ɵɵelementStart(5, "div", 230)(6, "span", 231);
1259
+ i0.ɵɵtext(7);
1260
+ i0.ɵɵelementEnd();
1261
+ i0.ɵɵelementStart(8, "span", 232);
1262
+ i0.ɵɵtext(9);
1263
+ i0.ɵɵelementEnd()()();
1264
+ i0.ɵɵconditionalCreate(10, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_For_8_Conditional_10_Template, 2, 1, "p", 233);
1265
+ i0.ɵɵelementStart(11, "div", 234);
1266
+ i0.ɵɵrepeaterCreate(12, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_For_8_For_13_Template, 12, 4, "div", 235, _forTrack3);
1267
+ i0.ɵɵelementEnd()();
1268
+ } if (rf & 2) {
1269
+ const okGroup_r36 = ctx.$implicit;
1270
+ i0.ɵɵadvance(4);
1271
+ i0.ɵɵtextInterpolate1(" ", okGroup_r36.OrganicKey.Name, " ");
1272
+ i0.ɵɵadvance(3);
1273
+ i0.ɵɵtextInterpolate(okGroup_r36.OrganicKey.NormalizationStrategy);
1274
+ i0.ɵɵadvance(2);
1275
+ i0.ɵɵtextInterpolate(okGroup_r36.OrganicKey.MatchFieldNames);
1276
+ i0.ɵɵadvance();
1277
+ i0.ɵɵconditional(okGroup_r36.OrganicKey.Description ? 10 : -1);
1278
+ i0.ɵɵadvance(2);
1279
+ i0.ɵɵrepeater(okGroup_r36.RelatedEntities);
1280
+ } }
1281
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_Template(rf, ctx) { if (rf & 1) {
1282
+ i0.ɵɵelementStart(0, "div", 206)(1, "h3", 207);
1283
+ i0.ɵɵelement(2, "i", 208);
1284
+ i0.ɵɵtext(3, " Outgoing (Matches from this entity) ");
1285
+ i0.ɵɵelementStart(4, "span", 142);
1286
+ i0.ɵɵtext(5);
1287
+ i0.ɵɵelementEnd()();
1288
+ i0.ɵɵelementStart(6, "div", 225);
1289
+ i0.ɵɵrepeaterCreate(7, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_For_8_Template, 14, 4, "div", 226, _forTrack2);
1290
+ i0.ɵɵelementEnd()();
1291
+ } if (rf & 2) {
1292
+ const ctx_r2 = i0.ɵɵnextContext(4);
1293
+ i0.ɵɵadvance(5);
1294
+ i0.ɵɵtextInterpolate(ctx_r2.organicKeysOutgoing.length);
1295
+ i0.ɵɵadvance(2);
1296
+ i0.ɵɵrepeater(ctx_r2.organicKeysOutgoing);
1297
+ } }
1298
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_1_For_8_Conditional_20_Template(rf, ctx) { if (rf & 1) {
1299
+ i0.ɵɵelementStart(0, "div", 250)(1, "span", 251);
1300
+ i0.ɵɵtext(2, "Matched via:");
1301
+ i0.ɵɵelementEnd();
1302
+ i0.ɵɵelementStart(3, "span", 252);
1303
+ i0.ɵɵtext(4);
1304
+ i0.ɵɵelementEnd()();
1305
+ } if (rf & 2) {
1306
+ const incoming_r40 = i0.ɵɵnextContext().$implicit;
1307
+ i0.ɵɵadvance(4);
1308
+ i0.ɵɵtextInterpolate(incoming_r40.RelatedEntityConfig.RelatedEntityFieldNames);
1309
+ } }
1310
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_1_For_8_Conditional_21_Template(rf, ctx) { if (rf & 1) {
1311
+ i0.ɵɵelementStart(0, "div", 250)(1, "span", 251);
1312
+ i0.ɵɵtext(2, "Bridge:");
1313
+ i0.ɵɵelementEnd();
1314
+ i0.ɵɵelementStart(3, "span", 252);
1315
+ i0.ɵɵtext(4);
1316
+ i0.ɵɵelementEnd()();
1317
+ } if (rf & 2) {
1318
+ const incoming_r40 = i0.ɵɵnextContext().$implicit;
1319
+ i0.ɵɵadvance(4);
1320
+ i0.ɵɵtextInterpolate(incoming_r40.RelatedEntityConfig.TransitiveObjectName);
1321
+ } }
1322
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_1_For_8_Template(rf, ctx) { if (rf & 1) {
1323
+ const _r39 = i0.ɵɵgetCurrentView();
1324
+ i0.ɵɵelementStart(0, "div", 248);
1325
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_1_For_8_Template_div_click_0_listener() { const incoming_r40 = i0.ɵɵrestoreView(_r39).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.NavigateToEntityByID(incoming_r40.SourceEntityID)); });
1326
+ i0.ɵɵelementStart(1, "div", 227)(2, "div", 228)(3, "div", 219);
1327
+ i0.ɵɵelement(4, "i", 220);
1328
+ i0.ɵɵelementEnd();
1329
+ i0.ɵɵelement(5, "i", 239);
1330
+ i0.ɵɵtext(6);
1331
+ i0.ɵɵelement(7, "i", 241);
1332
+ i0.ɵɵelementEnd();
1333
+ i0.ɵɵelementStart(8, "div", 230)(9, "span", 249);
1334
+ i0.ɵɵtext(10);
1335
+ i0.ɵɵelementEnd()()();
1336
+ i0.ɵɵelementStart(11, "div", 250)(12, "span", 251);
1337
+ i0.ɵɵtext(13, "Key:");
1338
+ i0.ɵɵelementEnd();
1339
+ i0.ɵɵelementStart(14, "span", 252);
1340
+ i0.ɵɵtext(15);
1341
+ i0.ɵɵelementEnd();
1342
+ i0.ɵɵelementStart(16, "span", 232);
1343
+ i0.ɵɵtext(17);
1344
+ i0.ɵɵelementEnd();
1345
+ i0.ɵɵelementStart(18, "span", 231);
1346
+ i0.ɵɵtext(19);
1347
+ i0.ɵɵelementEnd()();
1348
+ i0.ɵɵconditionalCreate(20, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_1_For_8_Conditional_20_Template, 5, 1, "div", 250)(21, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_1_For_8_Conditional_21_Template, 5, 1, "div", 250);
1349
+ i0.ɵɵelementEnd();
1350
+ } if (rf & 2) {
1351
+ const incoming_r40 = ctx.$implicit;
1352
+ i0.ɵɵadvance(5);
1353
+ i0.ɵɵclassMap(incoming_r40.SourceEntityIcon);
1354
+ i0.ɵɵadvance();
1355
+ i0.ɵɵtextInterpolate1(" ", incoming_r40.SourceEntityName, " ");
1356
+ i0.ɵɵadvance(3);
1357
+ i0.ɵɵclassProp("direct", incoming_r40.MatchType === "Direct")("transitive", incoming_r40.MatchType === "Transitive");
1358
+ i0.ɵɵadvance();
1359
+ i0.ɵɵtextInterpolate(incoming_r40.MatchType);
1360
+ i0.ɵɵadvance(5);
1361
+ i0.ɵɵtextInterpolate(incoming_r40.OrganicKey.Name);
1362
+ i0.ɵɵadvance(2);
1363
+ i0.ɵɵtextInterpolate(incoming_r40.OrganicKey.MatchFieldNames);
1364
+ i0.ɵɵadvance(2);
1365
+ i0.ɵɵtextInterpolate(incoming_r40.OrganicKey.NormalizationStrategy);
1366
+ i0.ɵɵadvance();
1367
+ i0.ɵɵconditional(incoming_r40.RelatedEntityConfig.IsDirectMatch ? 20 : 21);
1368
+ } }
1369
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1370
+ i0.ɵɵelementStart(0, "div", 206)(1, "h3", 207);
1371
+ i0.ɵɵelement(2, "i", 212);
1372
+ i0.ɵɵtext(3, " Incoming (Other entities matching to this one) ");
1373
+ i0.ɵɵelementStart(4, "span", 142);
1374
+ i0.ɵɵtext(5);
1375
+ i0.ɵɵelementEnd()();
1376
+ i0.ɵɵelementStart(6, "div", 225);
1377
+ i0.ɵɵrepeaterCreate(7, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_1_For_8_Template, 22, 12, "div", 247, _forTrack4);
1378
+ i0.ɵɵelementEnd()();
1379
+ } if (rf & 2) {
1380
+ const ctx_r2 = i0.ɵɵnextContext(4);
1381
+ i0.ɵɵadvance(5);
1382
+ i0.ɵɵtextInterpolate(ctx_r2.organicKeysIncoming.length);
1383
+ i0.ɵɵadvance(2);
1384
+ i0.ɵɵrepeater(ctx_r2.organicKeysIncoming);
1385
+ } }
1386
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1387
+ i0.ɵɵconditionalCreate(0, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_Template, 9, 1, "div", 206);
1388
+ i0.ɵɵconditionalCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_1_Template, 9, 1, "div", 206);
1389
+ } if (rf & 2) {
1390
+ const ctx_r2 = i0.ɵɵnextContext(3);
1391
+ i0.ɵɵconditional(ctx_r2.organicKeysOutgoing.length > 0 ? 0 : -1);
1392
+ i0.ɵɵadvance();
1393
+ i0.ɵɵconditional(ctx_r2.organicKeysIncoming.length > 0 ? 1 : -1);
1394
+ } }
1395
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Template(rf, ctx) { if (rf & 1) {
1396
+ i0.ɵɵelementStart(0, "section", 31)(1, "div", 54);
1397
+ i0.ɵɵconditionalCreate(2, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_2_Template, 6, 0, "div", 223)(3, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Template, 2, 2);
1398
+ i0.ɵɵelementEnd()();
1399
+ } if (rf & 2) {
1400
+ const ctx_r2 = i0.ɵɵnextContext(2);
1401
+ i0.ɵɵadvance(2);
1402
+ i0.ɵɵconditional(ctx_r2.organicKeysOutgoing.length === 0 && ctx_r2.organicKeysIncoming.length === 0 ? 2 : 3);
1403
+ } }
1404
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1405
+ i0.ɵɵelementStart(0, "span", 263);
1180
1406
  i0.ɵɵtext(1, "R");
1181
1407
  i0.ɵɵelementEnd();
1182
1408
  } }
1183
- function MJEntityFormComponentExtended_Conditional_0_Conditional_54_For_20_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1184
- i0.ɵɵelementStart(0, "span", 233);
1409
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1410
+ i0.ɵɵelementStart(0, "span", 264);
1185
1411
  i0.ɵɵtext(1, "C");
1186
1412
  i0.ɵɵelementEnd();
1187
1413
  } }
1188
- function MJEntityFormComponentExtended_Conditional_0_Conditional_54_For_20_Conditional_14_Template(rf, ctx) { if (rf & 1) {
1189
- i0.ɵɵelementStart(0, "span", 234);
1414
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Conditional_14_Template(rf, ctx) { if (rf & 1) {
1415
+ i0.ɵɵelementStart(0, "span", 265);
1190
1416
  i0.ɵɵtext(1, "U");
1191
1417
  i0.ɵɵelementEnd();
1192
1418
  } }
1193
- function MJEntityFormComponentExtended_Conditional_0_Conditional_54_For_20_Conditional_15_Template(rf, ctx) { if (rf & 1) {
1194
- i0.ɵɵelementStart(0, "span", 235);
1419
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Conditional_15_Template(rf, ctx) { if (rf & 1) {
1420
+ i0.ɵɵelementStart(0, "span", 266);
1195
1421
  i0.ɵɵtext(1, "D");
1196
1422
  i0.ɵɵelementEnd();
1197
1423
  } }
1198
- function MJEntityFormComponentExtended_Conditional_0_Conditional_54_For_20_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1199
- i0.ɵɵelementStart(0, "span", 236);
1424
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1425
+ i0.ɵɵelementStart(0, "span", 267);
1200
1426
  i0.ɵɵtext(1, "None");
1201
1427
  i0.ɵɵelementEnd();
1202
1428
  } }
1203
- function MJEntityFormComponentExtended_Conditional_0_Conditional_54_For_20_Template(rf, ctx) { if (rf & 1) {
1204
- i0.ɵɵelementStart(0, "tr")(1, "td", 229);
1429
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Template(rf, ctx) { if (rf & 1) {
1430
+ i0.ɵɵelementStart(0, "tr")(1, "td", 260);
1205
1431
  i0.ɵɵtext(2);
1206
1432
  i0.ɵɵelementEnd();
1207
- i0.ɵɵelementStart(3, "td", 224);
1208
- i0.ɵɵelement(4, "i", 230);
1433
+ i0.ɵɵelementStart(3, "td", 255);
1434
+ i0.ɵɵelement(4, "i", 261);
1209
1435
  i0.ɵɵelementEnd();
1210
- i0.ɵɵelementStart(5, "td", 224);
1211
- i0.ɵɵelement(6, "i", 230);
1436
+ i0.ɵɵelementStart(5, "td", 255);
1437
+ i0.ɵɵelement(6, "i", 261);
1212
1438
  i0.ɵɵelementEnd();
1213
- i0.ɵɵelementStart(7, "td", 224);
1214
- i0.ɵɵelement(8, "i", 230);
1439
+ i0.ɵɵelementStart(7, "td", 255);
1440
+ i0.ɵɵelement(8, "i", 261);
1215
1441
  i0.ɵɵelementEnd();
1216
- i0.ɵɵelementStart(9, "td", 224);
1217
- i0.ɵɵelement(10, "i", 230);
1442
+ i0.ɵɵelementStart(9, "td", 255);
1443
+ i0.ɵɵelement(10, "i", 261);
1218
1444
  i0.ɵɵelementEnd();
1219
- i0.ɵɵelementStart(11, "td", 231);
1220
- i0.ɵɵconditionalCreate(12, MJEntityFormComponentExtended_Conditional_0_Conditional_54_For_20_Conditional_12_Template, 2, 0, "span", 232);
1221
- i0.ɵɵconditionalCreate(13, MJEntityFormComponentExtended_Conditional_0_Conditional_54_For_20_Conditional_13_Template, 2, 0, "span", 233);
1222
- i0.ɵɵconditionalCreate(14, MJEntityFormComponentExtended_Conditional_0_Conditional_54_For_20_Conditional_14_Template, 2, 0, "span", 234);
1223
- i0.ɵɵconditionalCreate(15, MJEntityFormComponentExtended_Conditional_0_Conditional_54_For_20_Conditional_15_Template, 2, 0, "span", 235);
1224
- i0.ɵɵconditionalCreate(16, MJEntityFormComponentExtended_Conditional_0_Conditional_54_For_20_Conditional_16_Template, 2, 0, "span", 236);
1445
+ i0.ɵɵelementStart(11, "td", 262);
1446
+ i0.ɵɵconditionalCreate(12, MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Conditional_12_Template, 2, 0, "span", 263);
1447
+ i0.ɵɵconditionalCreate(13, MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Conditional_13_Template, 2, 0, "span", 264);
1448
+ i0.ɵɵconditionalCreate(14, MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Conditional_14_Template, 2, 0, "span", 265);
1449
+ i0.ɵɵconditionalCreate(15, MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Conditional_15_Template, 2, 0, "span", 266);
1450
+ i0.ɵɵconditionalCreate(16, MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Conditional_16_Template, 2, 0, "span", 267);
1225
1451
  i0.ɵɵelementEnd()();
1226
1452
  } if (rf & 2) {
1227
- const perm_r36 = ctx.$implicit;
1453
+ const perm_r41 = ctx.$implicit;
1228
1454
  const ctx_r2 = i0.ɵɵnextContext(3);
1229
1455
  i0.ɵɵadvance(2);
1230
- i0.ɵɵtextInterpolate(ctx_r2.getRoleName(perm_r36));
1456
+ i0.ɵɵtextInterpolate(ctx_r2.getRoleName(perm_r41));
1231
1457
  i0.ɵɵadvance(2);
1232
- i0.ɵɵproperty("ngClass", perm_r36.CanCreate ? "fa-solid fa-check granted" : "fa-solid fa-xmark denied");
1458
+ i0.ɵɵproperty("ngClass", perm_r41.CanCreate ? "fa-solid fa-check granted" : "fa-solid fa-xmark denied");
1233
1459
  i0.ɵɵadvance(2);
1234
- i0.ɵɵproperty("ngClass", perm_r36.CanRead ? "fa-solid fa-check granted" : "fa-solid fa-xmark denied");
1460
+ i0.ɵɵproperty("ngClass", perm_r41.CanRead ? "fa-solid fa-check granted" : "fa-solid fa-xmark denied");
1235
1461
  i0.ɵɵadvance(2);
1236
- i0.ɵɵproperty("ngClass", perm_r36.CanUpdate ? "fa-solid fa-check granted" : "fa-solid fa-xmark denied");
1462
+ i0.ɵɵproperty("ngClass", perm_r41.CanUpdate ? "fa-solid fa-check granted" : "fa-solid fa-xmark denied");
1237
1463
  i0.ɵɵadvance(2);
1238
- i0.ɵɵproperty("ngClass", perm_r36.CanDelete ? "fa-solid fa-check granted" : "fa-solid fa-xmark denied");
1464
+ i0.ɵɵproperty("ngClass", perm_r41.CanDelete ? "fa-solid fa-check granted" : "fa-solid fa-xmark denied");
1239
1465
  i0.ɵɵadvance(2);
1240
- i0.ɵɵconditional(perm_r36.ReadRLSFilterID ? 12 : -1);
1466
+ i0.ɵɵconditional(perm_r41.ReadRLSFilterID ? 12 : -1);
1241
1467
  i0.ɵɵadvance();
1242
- i0.ɵɵconditional(perm_r36.CreateRLSFilterID ? 13 : -1);
1468
+ i0.ɵɵconditional(perm_r41.CreateRLSFilterID ? 13 : -1);
1243
1469
  i0.ɵɵadvance();
1244
- i0.ɵɵconditional(perm_r36.UpdateRLSFilterID ? 14 : -1);
1470
+ i0.ɵɵconditional(perm_r41.UpdateRLSFilterID ? 14 : -1);
1245
1471
  i0.ɵɵadvance();
1246
- i0.ɵɵconditional(perm_r36.DeleteRLSFilterID ? 15 : -1);
1472
+ i0.ɵɵconditional(perm_r41.DeleteRLSFilterID ? 15 : -1);
1247
1473
  i0.ɵɵadvance();
1248
- i0.ɵɵconditional(!perm_r36.ReadRLSFilterID && !perm_r36.CreateRLSFilterID && !perm_r36.UpdateRLSFilterID && !perm_r36.DeleteRLSFilterID ? 16 : -1);
1474
+ i0.ɵɵconditional(!perm_r41.ReadRLSFilterID && !perm_r41.CreateRLSFilterID && !perm_r41.UpdateRLSFilterID && !perm_r41.DeleteRLSFilterID ? 16 : -1);
1249
1475
  } }
1250
- function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_21_Template(rf, ctx) { if (rf & 1) {
1251
- i0.ɵɵelementStart(0, "div", 210);
1476
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_21_Template(rf, ctx) { if (rf & 1) {
1477
+ i0.ɵɵelementStart(0, "div", 211);
1252
1478
  i0.ɵɵelement(1, "i", 21);
1253
1479
  i0.ɵɵelementStart(2, "p");
1254
1480
  i0.ɵɵtext(3, "No permissions configured");
1255
1481
  i0.ɵɵelementEnd()();
1256
1482
  } }
1257
- function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Template(rf, ctx) { if (rf & 1) {
1258
- i0.ɵɵelementStart(0, "section", 31)(1, "div", 53)(2, "div", 222)(3, "table", 223)(4, "thead")(5, "tr")(6, "th");
1483
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_Template(rf, ctx) { if (rf & 1) {
1484
+ i0.ɵɵelementStart(0, "section", 32)(1, "div", 54)(2, "div", 253)(3, "table", 254)(4, "thead")(5, "tr")(6, "th");
1259
1485
  i0.ɵɵtext(7, "Role");
1260
1486
  i0.ɵɵelementEnd();
1261
- i0.ɵɵelementStart(8, "th", 224);
1487
+ i0.ɵɵelementStart(8, "th", 255);
1262
1488
  i0.ɵɵtext(9, "Create");
1263
1489
  i0.ɵɵelementEnd();
1264
- i0.ɵɵelementStart(10, "th", 224);
1490
+ i0.ɵɵelementStart(10, "th", 255);
1265
1491
  i0.ɵɵtext(11, "Read");
1266
1492
  i0.ɵɵelementEnd();
1267
- i0.ɵɵelementStart(12, "th", 224);
1493
+ i0.ɵɵelementStart(12, "th", 255);
1268
1494
  i0.ɵɵtext(13, "Update");
1269
1495
  i0.ɵɵelementEnd();
1270
- i0.ɵɵelementStart(14, "th", 224);
1496
+ i0.ɵɵelementStart(14, "th", 255);
1271
1497
  i0.ɵɵtext(15, "Delete");
1272
1498
  i0.ɵɵelementEnd();
1273
1499
  i0.ɵɵelementStart(16, "th");
1274
1500
  i0.ɵɵtext(17, "RLS");
1275
1501
  i0.ɵɵelementEnd()()();
1276
1502
  i0.ɵɵelementStart(18, "tbody");
1277
- i0.ɵɵrepeaterCreate(19, MJEntityFormComponentExtended_Conditional_0_Conditional_54_For_20_Template, 17, 10, "tr", null, i0.ɵɵrepeaterTrackByIdentity);
1503
+ i0.ɵɵrepeaterCreate(19, MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Template, 17, 10, "tr", null, i0.ɵɵrepeaterTrackByIdentity);
1278
1504
  i0.ɵɵelementEnd()();
1279
- i0.ɵɵconditionalCreate(21, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_21_Template, 4, 0, "div", 210);
1505
+ i0.ɵɵconditionalCreate(21, MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_21_Template, 4, 0, "div", 211);
1280
1506
  i0.ɵɵelementEnd();
1281
- i0.ɵɵelementStart(22, "div", 225)(23, "h3", 69);
1282
- i0.ɵɵelement(24, "i", 226);
1507
+ i0.ɵɵelementStart(22, "div", 256)(23, "h3", 70);
1508
+ i0.ɵɵelement(24, "i", 257);
1283
1509
  i0.ɵɵtext(25, " API Capabilities ");
1284
1510
  i0.ɵɵelementEnd();
1285
- i0.ɵɵelementStart(26, "div", 227)(27, "div", 228);
1286
- i0.ɵɵelement(28, "i", 98);
1511
+ i0.ɵɵelementStart(26, "div", 258)(27, "div", 259);
1512
+ i0.ɵɵelement(28, "i", 99);
1287
1513
  i0.ɵɵelementStart(29, "span");
1288
1514
  i0.ɵɵtext(30, "Include in API");
1289
1515
  i0.ɵɵelementEnd()();
1290
- i0.ɵɵelementStart(31, "div", 228);
1291
- i0.ɵɵelement(32, "i", 98);
1516
+ i0.ɵɵelementStart(31, "div", 259);
1517
+ i0.ɵɵelement(32, "i", 99);
1292
1518
  i0.ɵɵelementStart(33, "span");
1293
1519
  i0.ɵɵtext(34, "Allow All Rows");
1294
1520
  i0.ɵɵelementEnd()();
1295
- i0.ɵɵelementStart(35, "div", 228);
1296
- i0.ɵɵelement(36, "i", 98);
1521
+ i0.ɵɵelementStart(35, "div", 259);
1522
+ i0.ɵɵelement(36, "i", 99);
1297
1523
  i0.ɵɵelementStart(37, "span");
1298
1524
  i0.ɵɵtext(38, "Allow Create");
1299
1525
  i0.ɵɵelementEnd()();
1300
- i0.ɵɵelementStart(39, "div", 228);
1301
- i0.ɵɵelement(40, "i", 98);
1526
+ i0.ɵɵelementStart(39, "div", 259);
1527
+ i0.ɵɵelement(40, "i", 99);
1302
1528
  i0.ɵɵelementStart(41, "span");
1303
1529
  i0.ɵɵtext(42, "Allow Update");
1304
1530
  i0.ɵɵelementEnd()();
1305
- i0.ɵɵelementStart(43, "div", 228);
1306
- i0.ɵɵelement(44, "i", 98);
1531
+ i0.ɵɵelementStart(43, "div", 259);
1532
+ i0.ɵɵelement(44, "i", 99);
1307
1533
  i0.ɵɵelementStart(45, "span");
1308
1534
  i0.ɵɵtext(46, "Allow Delete");
1309
1535
  i0.ɵɵelementEnd()();
1310
- i0.ɵɵelementStart(47, "div", 228);
1311
- i0.ɵɵelement(48, "i", 98);
1536
+ i0.ɵɵelementStart(47, "div", 259);
1537
+ i0.ɵɵelement(48, "i", 99);
1312
1538
  i0.ɵɵelementStart(49, "span");
1313
1539
  i0.ɵɵtext(50, "User Search");
1314
1540
  i0.ɵɵelementEnd()();
1315
- i0.ɵɵelementStart(51, "div", 228);
1316
- i0.ɵɵelement(52, "i", 98);
1541
+ i0.ɵɵelementStart(51, "div", 259);
1542
+ i0.ɵɵelement(52, "i", 99);
1317
1543
  i0.ɵɵelementStart(53, "span");
1318
1544
  i0.ɵɵtext(54, "Custom Resolver");
1319
1545
  i0.ɵɵelementEnd()()()()()();
@@ -1352,105 +1578,105 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Template(rf,
1352
1578
  i0.ɵɵadvance();
1353
1579
  i0.ɵɵproperty("ngClass", ctx_r2.entity.CustomResolverAPI ? "fa-check" : "fa-xmark");
1354
1580
  } }
1355
- function MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1356
- const _r37 = i0.ɵɵgetCurrentView();
1357
- i0.ɵɵelementStart(0, "mj-entity-viewer", 239);
1358
- i0.ɵɵlistener("recordOpened", function MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_2_Template_mj_entity_viewer_recordOpened_0_listener($event) { i0.ɵɵrestoreView(_r37); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.OnRecordOpened($event)); })("addRequested", function MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_2_Template_mj_entity_viewer_addRequested_0_listener() { i0.ɵɵrestoreView(_r37); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.OnAddRequested()); });
1581
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_56_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1582
+ const _r42 = i0.ɵɵgetCurrentView();
1583
+ i0.ɵɵelementStart(0, "mj-entity-viewer", 270);
1584
+ i0.ɵɵlistener("recordOpened", function MJEntityFormComponentExtended_Conditional_0_Conditional_56_Conditional_2_Template_mj_entity_viewer_recordOpened_0_listener($event) { i0.ɵɵrestoreView(_r42); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.OnRecordOpened($event)); })("addRequested", function MJEntityFormComponentExtended_Conditional_0_Conditional_56_Conditional_2_Template_mj_entity_viewer_addRequested_0_listener() { i0.ɵɵrestoreView(_r42); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.OnAddRequested()); });
1359
1585
  i0.ɵɵelementEnd();
1360
1586
  } if (rf & 2) {
1361
1587
  const ctx_r2 = i0.ɵɵnextContext(3);
1362
1588
  i0.ɵɵproperty("entity", ctx_r2.entity)("showGridToolbar", true);
1363
1589
  } }
1364
- function MJEntityFormComponentExtended_Conditional_0_Conditional_55_Template(rf, ctx) { if (rf & 1) {
1365
- i0.ɵɵelementStart(0, "section", 32)(1, "div", 237);
1366
- i0.ɵɵconditionalCreate(2, MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_2_Template, 1, 2, "mj-entity-viewer", 238);
1590
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_56_Template(rf, ctx) { if (rf & 1) {
1591
+ i0.ɵɵelementStart(0, "section", 33)(1, "div", 268);
1592
+ i0.ɵɵconditionalCreate(2, MJEntityFormComponentExtended_Conditional_0_Conditional_56_Conditional_2_Template, 1, 2, "mj-entity-viewer", 269);
1367
1593
  i0.ɵɵelementEnd()();
1368
1594
  } if (rf & 2) {
1369
1595
  const ctx_r2 = i0.ɵɵnextContext(2);
1370
1596
  i0.ɵɵadvance(2);
1371
1597
  i0.ɵɵconditional(ctx_r2.entity ? 2 : -1);
1372
1598
  } }
1373
- function MJEntityFormComponentExtended_Conditional_0_Conditional_56_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1374
- i0.ɵɵelementStart(0, "div", 243);
1375
- i0.ɵɵelement(1, "i", 226);
1599
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1600
+ i0.ɵɵelementStart(0, "div", 274);
1601
+ i0.ɵɵelement(1, "i", 257);
1376
1602
  i0.ɵɵelementStart(2, "span");
1377
1603
  i0.ɵɵtext(3, "API Create");
1378
1604
  i0.ɵɵelementEnd()();
1379
1605
  } }
1380
- function MJEntityFormComponentExtended_Conditional_0_Conditional_56_Conditional_25_Template(rf, ctx) { if (rf & 1) {
1381
- i0.ɵɵelementStart(0, "div", 243);
1382
- i0.ɵɵelement(1, "i", 250);
1606
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_25_Template(rf, ctx) { if (rf & 1) {
1607
+ i0.ɵɵelementStart(0, "div", 274);
1608
+ i0.ɵɵelement(1, "i", 281);
1383
1609
  i0.ɵɵelementStart(2, "span");
1384
1610
  i0.ɵɵtext(3, "Record Changes");
1385
1611
  i0.ɵɵelementEnd()();
1386
1612
  } }
1387
- function MJEntityFormComponentExtended_Conditional_0_Conditional_56_Conditional_26_Template(rf, ctx) { if (rf & 1) {
1388
- i0.ɵɵelementStart(0, "div", 243);
1389
- i0.ɵɵelement(1, "i", 41);
1613
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_26_Template(rf, ctx) { if (rf & 1) {
1614
+ i0.ɵɵelementStart(0, "div", 274);
1615
+ i0.ɵɵelement(1, "i", 42);
1390
1616
  i0.ɵɵelementStart(2, "span");
1391
1617
  i0.ɵɵtext(3, "Access Audit");
1392
1618
  i0.ɵɵelementEnd()();
1393
1619
  } }
1394
- function MJEntityFormComponentExtended_Conditional_0_Conditional_56_Template(rf, ctx) { if (rf & 1) {
1395
- i0.ɵɵelementStart(0, "section", 33)(1, "div", 53)(2, "div", 240)(3, "div", 241)(4, "h4");
1620
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_57_Template(rf, ctx) { if (rf & 1) {
1621
+ i0.ɵɵelementStart(0, "section", 34)(1, "div", 54)(2, "div", 271)(3, "div", 272)(4, "h4");
1396
1622
  i0.ɵɵtext(5, "Data Sources");
1397
1623
  i0.ɵɵelementEnd();
1398
- i0.ɵɵelementStart(6, "div", 242)(7, "div", 243);
1399
- i0.ɵɵelement(8, "i", 244);
1624
+ i0.ɵɵelementStart(6, "div", 273)(7, "div", 274);
1625
+ i0.ɵɵelement(8, "i", 275);
1400
1626
  i0.ɵɵelementStart(9, "span");
1401
1627
  i0.ɵɵtext(10, "Manual Entry");
1402
1628
  i0.ɵɵelementEnd()();
1403
- i0.ɵɵconditionalCreate(11, MJEntityFormComponentExtended_Conditional_0_Conditional_56_Conditional_11_Template, 4, 0, "div", 243);
1629
+ i0.ɵɵconditionalCreate(11, MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_11_Template, 4, 0, "div", 274);
1404
1630
  i0.ɵɵelementEnd()();
1405
- i0.ɵɵelementStart(12, "div", 245);
1406
- i0.ɵɵelement(13, "i", 62);
1631
+ i0.ɵɵelementStart(12, "div", 276);
1632
+ i0.ɵɵelement(13, "i", 63);
1407
1633
  i0.ɵɵelementEnd();
1408
- i0.ɵɵelementStart(14, "div", 246)(15, "div", 247);
1634
+ i0.ɵɵelementStart(14, "div", 277)(15, "div", 278);
1409
1635
  i0.ɵɵelement(16, "i");
1410
1636
  i0.ɵɵelementStart(17, "span");
1411
1637
  i0.ɵɵtext(18);
1412
1638
  i0.ɵɵelementEnd()()();
1413
- i0.ɵɵelementStart(19, "div", 245);
1414
- i0.ɵɵelement(20, "i", 62);
1639
+ i0.ɵɵelementStart(19, "div", 276);
1640
+ i0.ɵɵelement(20, "i", 63);
1415
1641
  i0.ɵɵelementEnd();
1416
- i0.ɵɵelementStart(21, "div", 248)(22, "h4");
1642
+ i0.ɵɵelementStart(21, "div", 279)(22, "h4");
1417
1643
  i0.ɵɵtext(23, "Data Sinks");
1418
1644
  i0.ɵɵelementEnd();
1419
- i0.ɵɵelementStart(24, "div", 242);
1420
- i0.ɵɵconditionalCreate(25, MJEntityFormComponentExtended_Conditional_0_Conditional_56_Conditional_25_Template, 4, 0, "div", 243);
1421
- i0.ɵɵconditionalCreate(26, MJEntityFormComponentExtended_Conditional_0_Conditional_56_Conditional_26_Template, 4, 0, "div", 243);
1422
- i0.ɵɵelementStart(27, "div", 243);
1645
+ i0.ɵɵelementStart(24, "div", 273);
1646
+ i0.ɵɵconditionalCreate(25, MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_25_Template, 4, 0, "div", 274);
1647
+ i0.ɵɵconditionalCreate(26, MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_26_Template, 4, 0, "div", 274);
1648
+ i0.ɵɵelementStart(27, "div", 274);
1423
1649
  i0.ɵɵelement(28, "i", 20);
1424
1650
  i0.ɵɵelementStart(29, "span");
1425
1651
  i0.ɵɵtext(30);
1426
1652
  i0.ɵɵelementEnd()()()()();
1427
- i0.ɵɵelementStart(31, "div", 249)(32, "h3", 69);
1428
- i0.ɵɵelement(33, "i", 250);
1653
+ i0.ɵɵelementStart(31, "div", 280)(32, "h3", 70);
1654
+ i0.ɵɵelement(33, "i", 281);
1429
1655
  i0.ɵɵtext(34, " Tracking Configuration ");
1430
1656
  i0.ɵɵelementEnd();
1431
- i0.ɵɵelementStart(35, "div", 251)(36, "div", 252);
1432
- i0.ɵɵelement(37, "i", 98);
1657
+ i0.ɵɵelementStart(35, "div", 282)(36, "div", 283);
1658
+ i0.ɵɵelement(37, "i", 99);
1433
1659
  i0.ɵɵelementStart(38, "span");
1434
1660
  i0.ɵɵtext(39, "Track Record Changes");
1435
1661
  i0.ɵɵelementEnd()();
1436
- i0.ɵɵelementStart(40, "div", 252);
1437
- i0.ɵɵelement(41, "i", 98);
1662
+ i0.ɵɵelementStart(40, "div", 283);
1663
+ i0.ɵɵelement(41, "i", 99);
1438
1664
  i0.ɵɵelementStart(42, "span");
1439
1665
  i0.ɵɵtext(43, "Audit Record Access");
1440
1666
  i0.ɵɵelementEnd()();
1441
- i0.ɵɵelementStart(44, "div", 252);
1442
- i0.ɵɵelement(45, "i", 98);
1667
+ i0.ɵɵelementStart(44, "div", 283);
1668
+ i0.ɵɵelement(45, "i", 99);
1443
1669
  i0.ɵɵelementStart(46, "span");
1444
1670
  i0.ɵɵtext(47, "Audit View Runs");
1445
1671
  i0.ɵɵelementEnd()();
1446
- i0.ɵɵelementStart(48, "div", 252)(49, "span", 253);
1672
+ i0.ɵɵelementStart(48, "div", 283)(49, "span", 284);
1447
1673
  i0.ɵɵtext(50, "Delete Type:");
1448
1674
  i0.ɵɵelementEnd();
1449
- i0.ɵɵelementStart(51, "span", 254);
1675
+ i0.ɵɵelementStart(51, "span", 285);
1450
1676
  i0.ɵɵtext(52);
1451
1677
  i0.ɵɵelementEnd()();
1452
- i0.ɵɵelementStart(53, "div", 252);
1453
- i0.ɵɵelement(54, "i", 98);
1678
+ i0.ɵɵelementStart(53, "div", 283);
1679
+ i0.ɵɵelement(54, "i", 99);
1454
1680
  i0.ɵɵelementStart(55, "span");
1455
1681
  i0.ɵɵtext(56, "Cascade Deletes");
1456
1682
  i0.ɵɵelementEnd()()()()()();
@@ -1487,7 +1713,7 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_56_Template(rf,
1487
1713
  i0.ɵɵadvance();
1488
1714
  i0.ɵɵproperty("ngClass", ctx_r2.entity.CascadeDeletes ? "fa-check" : "fa-xmark");
1489
1715
  } }
1490
- function MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_15_Template(rf, ctx) { if (rf & 1) {
1716
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_15_Template(rf, ctx) { if (rf & 1) {
1491
1717
  i0.ɵɵelementStart(0, "p");
1492
1718
  i0.ɵɵtext(1, " This entity has change tracking enabled. All modifications to records are stored in the ");
1493
1719
  i0.ɵɵelementStart(2, "code");
@@ -1496,7 +1722,7 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_
1496
1722
  i0.ɵɵtext(4, " table, including the user who made the change, timestamp, and the before/after values. ");
1497
1723
  i0.ɵɵelementEnd();
1498
1724
  } }
1499
- function MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1725
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1500
1726
  i0.ɵɵelementStart(0, "p");
1501
1727
  i0.ɵɵtext(1, " This entity does not have change tracking enabled. To enable it, set ");
1502
1728
  i0.ɵɵelementStart(2, "code");
@@ -1509,19 +1735,19 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_
1509
1735
  i0.ɵɵtext(7, " in the entity metadata. ");
1510
1736
  i0.ɵɵelementEnd();
1511
1737
  } }
1512
- function MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_17_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1738
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_17_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1513
1739
  i0.ɵɵelementStart(0, "li")(1, "code");
1514
1740
  i0.ɵɵtext(2, "__mj_DeletedAt");
1515
1741
  i0.ɵɵelementEnd();
1516
1742
  i0.ɵɵtext(3, " - Soft delete timestamp (when applicable) ");
1517
1743
  i0.ɵɵelementEnd();
1518
1744
  } }
1519
- function MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1520
- i0.ɵɵelementStart(0, "div", 259)(1, "h4");
1745
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1746
+ i0.ɵɵelementStart(0, "div", 290)(1, "h4");
1521
1747
  i0.ɵɵelement(2, "i", 22);
1522
1748
  i0.ɵɵtext(3, " Audit Fields ");
1523
1749
  i0.ɵɵelementEnd();
1524
- i0.ɵɵelementStart(4, "ul", 261)(5, "li")(6, "code");
1750
+ i0.ɵɵelementStart(4, "ul", 292)(5, "li")(6, "code");
1525
1751
  i0.ɵɵtext(7, "__mj_CreatedAt");
1526
1752
  i0.ɵɵelementEnd();
1527
1753
  i0.ɵɵtext(8, " - Record creation timestamp ");
@@ -1531,30 +1757,30 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_
1531
1757
  i0.ɵɵelementEnd();
1532
1758
  i0.ɵɵtext(12, " - Last modification timestamp ");
1533
1759
  i0.ɵɵelementEnd();
1534
- i0.ɵɵconditionalCreate(13, MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_17_Conditional_13_Template, 4, 0, "li");
1760
+ i0.ɵɵconditionalCreate(13, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_17_Conditional_13_Template, 4, 0, "li");
1535
1761
  i0.ɵɵelementEnd()();
1536
1762
  } if (rf & 2) {
1537
1763
  const ctx_r2 = i0.ɵɵnextContext(3);
1538
1764
  i0.ɵɵadvance(13);
1539
1765
  i0.ɵɵconditional(ctx_r2.entity.DeleteType === "Soft" ? 13 : -1);
1540
1766
  } }
1541
- function MJEntityFormComponentExtended_Conditional_0_Conditional_57_Template(rf, ctx) { if (rf & 1) {
1542
- i0.ɵɵelementStart(0, "section", 34)(1, "div", 53)(2, "div", 255)(3, "div", 256);
1543
- i0.ɵɵelement(4, "i", 98);
1544
- i0.ɵɵelementStart(5, "div", 257)(6, "strong");
1767
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Template(rf, ctx) { if (rf & 1) {
1768
+ i0.ɵɵelementStart(0, "section", 35)(1, "div", 54)(2, "div", 286)(3, "div", 287);
1769
+ i0.ɵɵelement(4, "i", 99);
1770
+ i0.ɵɵelementStart(5, "div", 288)(6, "strong");
1545
1771
  i0.ɵɵtext(7, "Record Change Tracking");
1546
1772
  i0.ɵɵelementEnd();
1547
1773
  i0.ɵɵelementStart(8, "span");
1548
1774
  i0.ɵɵtext(9);
1549
1775
  i0.ɵɵelementEnd()()()();
1550
- i0.ɵɵelementStart(10, "div", 258)(11, "div", 259)(12, "h4");
1551
- i0.ɵɵelement(13, "i", 260);
1776
+ i0.ɵɵelementStart(10, "div", 289)(11, "div", 290)(12, "h4");
1777
+ i0.ɵɵelement(13, "i", 291);
1552
1778
  i0.ɵɵtext(14, " About Change Tracking ");
1553
1779
  i0.ɵɵelementEnd();
1554
- i0.ɵɵconditionalCreate(15, MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_15_Template, 5, 0, "p");
1555
- i0.ɵɵconditionalCreate(16, MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_16_Template, 8, 0, "p");
1780
+ i0.ɵɵconditionalCreate(15, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_15_Template, 5, 0, "p");
1781
+ i0.ɵɵconditionalCreate(16, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_16_Template, 8, 0, "p");
1556
1782
  i0.ɵɵelementEnd();
1557
- i0.ɵɵconditionalCreate(17, MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_17_Template, 14, 1, "div", 259);
1783
+ i0.ɵɵconditionalCreate(17, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_17_Template, 14, 1, "div", 290);
1558
1784
  i0.ɵɵelementEnd()()();
1559
1785
  } if (rf & 2) {
1560
1786
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -1571,42 +1797,42 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_57_Template(rf,
1571
1797
  i0.ɵɵadvance();
1572
1798
  i0.ɵɵconditional(ctx_r2.entity.TrackRecordChanges ? 17 : -1);
1573
1799
  } }
1574
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1575
- i0.ɵɵelement(0, "i", 272);
1800
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1801
+ i0.ɵɵelement(0, "i", 303);
1576
1802
  i0.ɵɵtext(1, " Yes \u2014 read-only view ");
1577
1803
  } }
1578
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1579
- i0.ɵɵelement(0, "i", 273);
1804
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1805
+ i0.ɵɵelement(0, "i", 304);
1580
1806
  i0.ɵɵtext(1, " No ");
1581
1807
  } }
1582
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
1583
- const _r38 = i0.ɵɵgetCurrentView();
1584
- i0.ɵɵelementStart(0, "span", 274);
1585
- i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_15_Template_span_click_0_listener() { i0.ɵɵrestoreView(_r38); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.NavigateToEntity(ctx_r2.ParentChain[0])); });
1808
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
1809
+ const _r43 = i0.ɵɵgetCurrentView();
1810
+ i0.ɵɵelementStart(0, "span", 305);
1811
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_15_Template_span_click_0_listener() { i0.ɵɵrestoreView(_r43); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.NavigateToEntity(ctx_r2.ParentChain[0])); });
1586
1812
  i0.ɵɵtext(1);
1587
- i0.ɵɵelement(2, "i", 62);
1813
+ i0.ɵɵelement(2, "i", 63);
1588
1814
  i0.ɵɵelementEnd();
1589
1815
  } if (rf & 2) {
1590
1816
  const ctx_r2 = i0.ɵɵnextContext(4);
1591
1817
  i0.ɵɵadvance();
1592
1818
  i0.ɵɵtextInterpolate1(" ", ctx_r2.ParentChain[0] == null ? null : ctx_r2.ParentChain[0].Name, " ");
1593
1819
  } }
1594
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1595
- i0.ɵɵelementStart(0, "span", 271);
1820
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1821
+ i0.ɵɵelementStart(0, "span", 302);
1596
1822
  i0.ɵɵtext(1, "None");
1597
1823
  i0.ɵɵelementEnd();
1598
1824
  } }
1599
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1600
- i0.ɵɵelementStart(0, "div", 269)(1, "span", 253);
1825
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1826
+ i0.ɵɵelementStart(0, "div", 300)(1, "span", 284);
1601
1827
  i0.ɵɵtext(2, "Full Inheritance Chain");
1602
1828
  i0.ɵɵelementEnd();
1603
- i0.ɵɵelementStart(3, "span", 254);
1829
+ i0.ɵɵelementStart(3, "span", 285);
1604
1830
  i0.ɵɵtext(4);
1605
1831
  i0.ɵɵelementEnd()();
1606
- i0.ɵɵelementStart(5, "div", 269)(6, "span", 253);
1832
+ i0.ɵɵelementStart(5, "div", 300)(6, "span", 284);
1607
1833
  i0.ɵɵtext(7, "Inherited Fields");
1608
1834
  i0.ɵɵelementEnd();
1609
- i0.ɵɵelementStart(8, "span", 254);
1835
+ i0.ɵɵelementStart(8, "span", 285);
1610
1836
  i0.ɵɵtext(9);
1611
1837
  i0.ɵɵelementEnd()();
1612
1838
  } if (rf & 2) {
@@ -1616,96 +1842,96 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_
1616
1842
  i0.ɵɵadvance(5);
1617
1843
  i0.ɵɵtextInterpolate2("", ctx_r2.InheritedFieldCount, " field", ctx_r2.InheritedFieldCount !== 1 ? "s" : "");
1618
1844
  } }
1619
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_18_For_5_Template(rf, ctx) { if (rf & 1) {
1620
- const _r39 = i0.ɵɵgetCurrentView();
1621
- i0.ɵɵelementStart(0, "span", 275);
1622
- i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_18_For_5_Template_span_click_0_listener() { const child_r40 = i0.ɵɵrestoreView(_r39).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.NavigateToEntity(child_r40)); });
1845
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_18_For_5_Template(rf, ctx) { if (rf & 1) {
1846
+ const _r44 = i0.ɵɵgetCurrentView();
1847
+ i0.ɵɵelementStart(0, "span", 306);
1848
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_18_For_5_Template_span_click_0_listener() { const child_r45 = i0.ɵɵrestoreView(_r44).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.NavigateToEntity(child_r45)); });
1623
1849
  i0.ɵɵtext(1);
1624
1850
  i0.ɵɵelementEnd();
1625
1851
  i0.ɵɵtext(2);
1626
1852
  } if (rf & 2) {
1627
- const child_r40 = ctx.$implicit;
1628
- const ɵ$index_1255_r41 = ctx.$index;
1629
- const ɵ$count_1255_r42 = ctx.$count;
1853
+ const child_r45 = ctx.$implicit;
1854
+ const ɵ$index_1409_r46 = ctx.$index;
1855
+ const ɵ$count_1409_r47 = ctx.$count;
1630
1856
  i0.ɵɵadvance();
1631
- i0.ɵɵtextInterpolate(child_r40.Name);
1857
+ i0.ɵɵtextInterpolate(child_r45.Name);
1632
1858
  i0.ɵɵadvance();
1633
- i0.ɵɵtextInterpolate1("", ɵ$index_1255_r41 === ɵ$count_1255_r42 - 1 ? "" : ", ", " ");
1859
+ i0.ɵɵtextInterpolate1("", ɵ$index_1409_r46 === ɵ$count_1409_r47 - 1 ? "" : ", ", " ");
1634
1860
  } }
1635
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
1636
- i0.ɵɵelementStart(0, "div", 269)(1, "span", 253);
1861
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
1862
+ i0.ɵɵelementStart(0, "div", 300)(1, "span", 284);
1637
1863
  i0.ɵɵtext(2, "Child Types");
1638
1864
  i0.ɵɵelementEnd();
1639
- i0.ɵɵelementStart(3, "span", 254);
1640
- i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_18_For_5_Template, 3, 2, null, null, _forTrack0);
1865
+ i0.ɵɵelementStart(3, "span", 285);
1866
+ i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_18_For_5_Template, 3, 2, null, null, _forTrack0);
1641
1867
  i0.ɵɵelementEnd()();
1642
1868
  } if (rf & 2) {
1643
1869
  const ctx_r2 = i0.ɵɵnextContext(4);
1644
1870
  i0.ɵɵadvance(4);
1645
1871
  i0.ɵɵrepeater(ctx_r2.ChildEntities);
1646
1872
  } }
1647
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_19_For_5_Template(rf, ctx) { if (rf & 1) {
1648
- const _r43 = i0.ɵɵgetCurrentView();
1649
- i0.ɵɵelementStart(0, "span", 275);
1650
- i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_19_For_5_Template_span_click_0_listener() { const sibling_r44 = i0.ɵɵrestoreView(_r43).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.NavigateToEntity(sibling_r44)); });
1873
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_19_For_5_Template(rf, ctx) { if (rf & 1) {
1874
+ const _r48 = i0.ɵɵgetCurrentView();
1875
+ i0.ɵɵelementStart(0, "span", 306);
1876
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_19_For_5_Template_span_click_0_listener() { const sibling_r49 = i0.ɵɵrestoreView(_r48).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.NavigateToEntity(sibling_r49)); });
1651
1877
  i0.ɵɵtext(1);
1652
1878
  i0.ɵɵelementEnd();
1653
1879
  i0.ɵɵtext(2);
1654
1880
  } if (rf & 2) {
1655
- const sibling_r44 = ctx.$implicit;
1656
- const ɵ$index_1268_r45 = ctx.$index;
1657
- const ɵ$count_1268_r46 = ctx.$count;
1881
+ const sibling_r49 = ctx.$implicit;
1882
+ const ɵ$index_1422_r50 = ctx.$index;
1883
+ const ɵ$count_1422_r51 = ctx.$count;
1658
1884
  i0.ɵɵadvance();
1659
- i0.ɵɵtextInterpolate(sibling_r44.Name);
1885
+ i0.ɵɵtextInterpolate(sibling_r49.Name);
1660
1886
  i0.ɵɵadvance();
1661
- i0.ɵɵtextInterpolate1("", ɵ$index_1268_r45 === ɵ$count_1268_r46 - 1 ? "" : ", ", " ");
1887
+ i0.ɵɵtextInterpolate1("", ɵ$index_1422_r50 === ɵ$count_1422_r51 - 1 ? "" : ", ", " ");
1662
1888
  } }
1663
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
1664
- i0.ɵɵelementStart(0, "div", 269)(1, "span", 253);
1889
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
1890
+ i0.ɵɵelementStart(0, "div", 300)(1, "span", 284);
1665
1891
  i0.ɵɵtext(2, "Sibling Types");
1666
1892
  i0.ɵɵelementEnd();
1667
- i0.ɵɵelementStart(3, "span", 254);
1668
- i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_19_For_5_Template, 3, 2, null, null, _forTrack0);
1893
+ i0.ɵɵelementStart(3, "span", 285);
1894
+ i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_19_For_5_Template, 3, 2, null, null, _forTrack0);
1669
1895
  i0.ɵɵelementEnd()();
1670
1896
  } if (rf & 2) {
1671
1897
  const ctx_r2 = i0.ɵɵnextContext(4);
1672
1898
  i0.ɵɵadvance(4);
1673
1899
  i0.ɵɵrepeater(ctx_r2.SiblingEntities);
1674
1900
  } }
1675
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_24_Template(rf, ctx) { if (rf & 1) {
1676
- i0.ɵɵelement(0, "i", 276);
1901
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_24_Template(rf, ctx) { if (rf & 1) {
1902
+ i0.ɵɵelement(0, "i", 307);
1677
1903
  i0.ɵɵtext(1, " Enforced \u2014 a parent record can only be one child type ");
1678
1904
  } }
1679
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_25_Template(rf, ctx) { if (rf & 1) {
1680
- i0.ɵɵelementStart(0, "span", 271);
1905
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_25_Template(rf, ctx) { if (rf & 1) {
1906
+ i0.ɵɵelementStart(0, "span", 302);
1681
1907
  i0.ɵɵtext(1, "N/A");
1682
1908
  i0.ɵɵelementEnd();
1683
1909
  } }
1684
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1685
- i0.ɵɵelementStart(0, "div", 262)(1, "h3", 69);
1686
- i0.ɵɵelement(2, "i", 48);
1910
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1911
+ i0.ɵɵelementStart(0, "div", 293)(1, "h3", 70);
1912
+ i0.ɵɵelement(2, "i", 49);
1687
1913
  i0.ɵɵtext(3, " Type Relationship (IS-A) ");
1688
1914
  i0.ɵɵelementEnd();
1689
- i0.ɵɵelementStart(4, "div", 251)(5, "div", 269)(6, "span", 253);
1915
+ i0.ɵɵelementStart(4, "div", 282)(5, "div", 300)(6, "span", 284);
1690
1916
  i0.ɵɵtext(7, "Virtual Entity");
1691
1917
  i0.ɵɵelementEnd();
1692
- i0.ɵɵelementStart(8, "span", 254);
1693
- i0.ɵɵconditionalCreate(9, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_9_Template, 2, 0)(10, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_10_Template, 2, 0);
1918
+ i0.ɵɵelementStart(8, "span", 285);
1919
+ i0.ɵɵconditionalCreate(9, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_9_Template, 2, 0)(10, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_10_Template, 2, 0);
1694
1920
  i0.ɵɵelementEnd()();
1695
- i0.ɵɵelementStart(11, "div", 269)(12, "span", 253);
1921
+ i0.ɵɵelementStart(11, "div", 300)(12, "span", 284);
1696
1922
  i0.ɵɵtext(13, "Parent Entity");
1697
1923
  i0.ɵɵelementEnd();
1698
- i0.ɵɵelementStart(14, "span", 254);
1699
- i0.ɵɵconditionalCreate(15, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_15_Template, 3, 1, "span", 270)(16, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_16_Template, 2, 0, "span", 271);
1924
+ i0.ɵɵelementStart(14, "span", 285);
1925
+ i0.ɵɵconditionalCreate(15, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_15_Template, 3, 1, "span", 301)(16, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_16_Template, 2, 0, "span", 302);
1700
1926
  i0.ɵɵelementEnd()();
1701
- i0.ɵɵconditionalCreate(17, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_17_Template, 10, 3);
1702
- i0.ɵɵconditionalCreate(18, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_18_Template, 6, 0, "div", 269);
1703
- i0.ɵɵconditionalCreate(19, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_19_Template, 6, 0, "div", 269);
1704
- i0.ɵɵelementStart(20, "div", 269)(21, "span", 253);
1927
+ i0.ɵɵconditionalCreate(17, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_17_Template, 10, 3);
1928
+ i0.ɵɵconditionalCreate(18, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_18_Template, 6, 0, "div", 300);
1929
+ i0.ɵɵconditionalCreate(19, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_19_Template, 6, 0, "div", 300);
1930
+ i0.ɵɵelementStart(20, "div", 300)(21, "span", 284);
1705
1931
  i0.ɵɵtext(22, "Disjoint Subtypes");
1706
1932
  i0.ɵɵelementEnd();
1707
- i0.ɵɵelementStart(23, "span", 254);
1708
- i0.ɵɵconditionalCreate(24, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_24_Template, 2, 0)(25, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Conditional_25_Template, 2, 0, "span", 271);
1933
+ i0.ɵɵelementStart(23, "span", 285);
1934
+ i0.ɵɵconditionalCreate(24, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_24_Template, 2, 0)(25, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_25_Template, 2, 0, "span", 302);
1709
1935
  i0.ɵɵelementEnd()()()();
1710
1936
  } if (rf & 2) {
1711
1937
  const ctx_r2 = i0.ɵɵnextContext(3);
@@ -1722,70 +1948,70 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_
1722
1948
  i0.ɵɵadvance(5);
1723
1949
  i0.ɵɵconditional(ctx_r2.IsParentType || ctx_r2.IsChildType ? 24 : 25);
1724
1950
  } }
1725
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_7_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1726
- i0.ɵɵelementStart(0, "div", 279);
1727
- i0.ɵɵelement(1, "mj-code-editor", 282);
1951
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_7_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1952
+ i0.ɵɵelementStart(0, "div", 310);
1953
+ i0.ɵɵelement(1, "mj-code-editor", 313);
1728
1954
  i0.ɵɵelementEnd();
1729
1955
  } if (rf & 2) {
1730
- const setting_r47 = i0.ɵɵnextContext().$implicit;
1956
+ const setting_r52 = i0.ɵɵnextContext().$implicit;
1731
1957
  const ctx_r2 = i0.ɵɵnextContext(4);
1732
1958
  i0.ɵɵadvance();
1733
- i0.ɵɵproperty("value", ctx_r2.formatJsonValue(setting_r47.Value))("readonly", true)("lineWrapping", true);
1959
+ i0.ɵɵproperty("value", ctx_r2.formatJsonValue(setting_r52.Value))("readonly", true)("lineWrapping", true);
1734
1960
  } }
1735
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_7_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1736
- i0.ɵɵelementStart(0, "div", 280);
1961
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_7_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1962
+ i0.ɵɵelementStart(0, "div", 311);
1737
1963
  i0.ɵɵtext(1);
1738
1964
  i0.ɵɵelementEnd();
1739
1965
  } if (rf & 2) {
1740
- const setting_r47 = i0.ɵɵnextContext().$implicit;
1966
+ const setting_r52 = i0.ɵɵnextContext().$implicit;
1741
1967
  i0.ɵɵadvance();
1742
- i0.ɵɵtextInterpolate(setting_r47.Value);
1968
+ i0.ɵɵtextInterpolate(setting_r52.Value);
1743
1969
  } }
1744
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_7_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1745
- i0.ɵɵelementStart(0, "div", 281);
1970
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_7_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1971
+ i0.ɵɵelementStart(0, "div", 312);
1746
1972
  i0.ɵɵtext(1);
1747
1973
  i0.ɵɵelementEnd();
1748
1974
  } if (rf & 2) {
1749
- const setting_r47 = i0.ɵɵnextContext().$implicit;
1975
+ const setting_r52 = i0.ɵɵnextContext().$implicit;
1750
1976
  i0.ɵɵadvance();
1751
- i0.ɵɵtextInterpolate(setting_r47.Comments);
1977
+ i0.ɵɵtextInterpolate(setting_r52.Comments);
1752
1978
  } }
1753
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
1754
- i0.ɵɵelementStart(0, "div", 277)(1, "div", 278);
1979
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
1980
+ i0.ɵɵelementStart(0, "div", 308)(1, "div", 309);
1755
1981
  i0.ɵɵtext(2);
1756
1982
  i0.ɵɵelementEnd();
1757
- i0.ɵɵconditionalCreate(3, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_7_For_2_Conditional_3_Template, 2, 3, "div", 279)(4, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_7_For_2_Conditional_4_Template, 2, 1, "div", 280);
1758
- i0.ɵɵconditionalCreate(5, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_7_For_2_Conditional_5_Template, 2, 1, "div", 281);
1983
+ i0.ɵɵconditionalCreate(3, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_7_For_2_Conditional_3_Template, 2, 3, "div", 310)(4, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_7_For_2_Conditional_4_Template, 2, 1, "div", 311);
1984
+ i0.ɵɵconditionalCreate(5, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_7_For_2_Conditional_5_Template, 2, 1, "div", 312);
1759
1985
  i0.ɵɵelementEnd();
1760
1986
  } if (rf & 2) {
1761
- const setting_r47 = ctx.$implicit;
1987
+ const setting_r52 = ctx.$implicit;
1762
1988
  const ctx_r2 = i0.ɵɵnextContext(4);
1763
1989
  i0.ɵɵadvance(2);
1764
- i0.ɵɵtextInterpolate(setting_r47.Name);
1990
+ i0.ɵɵtextInterpolate(setting_r52.Name);
1765
1991
  i0.ɵɵadvance();
1766
- i0.ɵɵconditional(ctx_r2.isJsonValue(setting_r47.Value) ? 3 : 4);
1992
+ i0.ɵɵconditional(ctx_r2.isJsonValue(setting_r52.Value) ? 3 : 4);
1767
1993
  i0.ɵɵadvance(2);
1768
- i0.ɵɵconditional(setting_r47.Comments ? 5 : -1);
1994
+ i0.ɵɵconditional(setting_r52.Comments ? 5 : -1);
1769
1995
  } }
1770
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_7_Template(rf, ctx) { if (rf & 1) {
1771
- i0.ɵɵelementStart(0, "div", 265);
1772
- i0.ɵɵrepeaterCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_7_For_2_Template, 6, 3, "div", 277, i0.ɵɵrepeaterTrackByIdentity);
1996
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_7_Template(rf, ctx) { if (rf & 1) {
1997
+ i0.ɵɵelementStart(0, "div", 296);
1998
+ i0.ɵɵrepeaterCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_7_For_2_Template, 6, 3, "div", 308, i0.ɵɵrepeaterTrackByIdentity);
1773
1999
  i0.ɵɵelementEnd();
1774
2000
  } if (rf & 2) {
1775
2001
  const ctx_r2 = i0.ɵɵnextContext(3);
1776
2002
  i0.ɵɵadvance();
1777
2003
  i0.ɵɵrepeater(ctx_r2.entity.Settings);
1778
2004
  } }
1779
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1780
- i0.ɵɵelementStart(0, "div", 210)(1, "p");
2005
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_8_Template(rf, ctx) { if (rf & 1) {
2006
+ i0.ɵɵelementStart(0, "div", 211)(1, "p");
1781
2007
  i0.ɵɵtext(2, "No custom settings configured");
1782
2008
  i0.ɵɵelementEnd()();
1783
2009
  } }
1784
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_13_Conditional_7_Template(rf, ctx) { if (rf & 1) {
1785
- i0.ɵɵelementStart(0, "div", 269)(1, "span", 253);
2010
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_13_Conditional_7_Template(rf, ctx) { if (rf & 1) {
2011
+ i0.ɵɵelementStart(0, "div", 300)(1, "span", 284);
1786
2012
  i0.ɵɵtext(2, "Catalog");
1787
2013
  i0.ɵɵelementEnd();
1788
- i0.ɵɵelementStart(3, "span", 285);
2014
+ i0.ɵɵelementStart(3, "span", 316);
1789
2015
  i0.ɵɵtext(4);
1790
2016
  i0.ɵɵelementEnd()();
1791
2017
  } if (rf & 2) {
@@ -1793,11 +2019,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_
1793
2019
  i0.ɵɵadvance(4);
1794
2020
  i0.ɵɵtextInterpolate(ctx_r2.entity.FullTextCatalog);
1795
2021
  } }
1796
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_13_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1797
- i0.ɵɵelementStart(0, "div", 269)(1, "span", 253);
2022
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_13_Conditional_8_Template(rf, ctx) { if (rf & 1) {
2023
+ i0.ɵɵelementStart(0, "div", 300)(1, "span", 284);
1798
2024
  i0.ɵɵtext(2, "Index");
1799
2025
  i0.ɵɵelementEnd();
1800
- i0.ɵɵelementStart(3, "span", 285);
2026
+ i0.ɵɵelementStart(3, "span", 316);
1801
2027
  i0.ɵɵtext(4);
1802
2028
  i0.ɵɵelementEnd()();
1803
2029
  } if (rf & 2) {
@@ -1805,11 +2031,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_
1805
2031
  i0.ɵɵadvance(4);
1806
2032
  i0.ɵɵtextInterpolate(ctx_r2.entity.FullTextIndex);
1807
2033
  } }
1808
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_13_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1809
- i0.ɵɵelementStart(0, "div", 269)(1, "span", 253);
2034
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_13_Conditional_9_Template(rf, ctx) { if (rf & 1) {
2035
+ i0.ɵɵelementStart(0, "div", 300)(1, "span", 284);
1810
2036
  i0.ɵɵtext(2, "Function");
1811
2037
  i0.ɵɵelementEnd();
1812
- i0.ɵɵelementStart(3, "span", 285);
2038
+ i0.ɵɵelementStart(3, "span", 316);
1813
2039
  i0.ɵɵtext(4);
1814
2040
  i0.ɵɵelementEnd()();
1815
2041
  } if (rf & 2) {
@@ -1817,17 +2043,17 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_
1817
2043
  i0.ɵɵadvance(4);
1818
2044
  i0.ɵɵtextInterpolate(ctx_r2.entity.FullTextSearchFunction);
1819
2045
  } }
1820
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1821
- i0.ɵɵelementStart(0, "div", 267)(1, "div", 269)(2, "span", 253);
2046
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_13_Template(rf, ctx) { if (rf & 1) {
2047
+ i0.ɵɵelementStart(0, "div", 298)(1, "div", 300)(2, "span", 284);
1822
2048
  i0.ɵɵtext(3, "Status");
1823
2049
  i0.ɵɵelementEnd();
1824
- i0.ɵɵelementStart(4, "span", 283);
1825
- i0.ɵɵelement(5, "i", 284);
2050
+ i0.ɵɵelementStart(4, "span", 314);
2051
+ i0.ɵɵelement(5, "i", 315);
1826
2052
  i0.ɵɵtext(6, " Enabled ");
1827
2053
  i0.ɵɵelementEnd()();
1828
- i0.ɵɵconditionalCreate(7, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_13_Conditional_7_Template, 5, 1, "div", 269);
1829
- i0.ɵɵconditionalCreate(8, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_13_Conditional_8_Template, 5, 1, "div", 269);
1830
- i0.ɵɵconditionalCreate(9, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_13_Conditional_9_Template, 5, 1, "div", 269);
2054
+ i0.ɵɵconditionalCreate(7, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_13_Conditional_7_Template, 5, 1, "div", 300);
2055
+ i0.ɵɵconditionalCreate(8, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_13_Conditional_8_Template, 5, 1, "div", 300);
2056
+ i0.ɵɵconditionalCreate(9, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_13_Conditional_9_Template, 5, 1, "div", 300);
1831
2057
  i0.ɵɵelementEnd();
1832
2058
  } if (rf & 2) {
1833
2059
  const ctx_r2 = i0.ɵɵnextContext(3);
@@ -1838,16 +2064,16 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_
1838
2064
  i0.ɵɵadvance();
1839
2065
  i0.ɵɵconditional(ctx_r2.entity.FullTextSearchFunction ? 9 : -1);
1840
2066
  } }
1841
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_14_Template(rf, ctx) { if (rf & 1) {
1842
- i0.ɵɵelementStart(0, "div", 210)(1, "p");
2067
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_14_Template(rf, ctx) { if (rf & 1) {
2068
+ i0.ɵɵelementStart(0, "div", 211)(1, "p");
1843
2069
  i0.ɵɵtext(2, "Full-text search is not enabled for this entity");
1844
2070
  i0.ɵɵelementEnd()();
1845
2071
  } }
1846
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_25_Template(rf, ctx) { if (rf & 1) {
1847
- i0.ɵɵelementStart(0, "div", 269)(1, "span", 253);
2072
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_25_Template(rf, ctx) { if (rf & 1) {
2073
+ i0.ɵɵelementStart(0, "div", 300)(1, "span", 284);
1848
2074
  i0.ɵɵtext(2, "Sample Count");
1849
2075
  i0.ɵɵelementEnd();
1850
- i0.ɵɵelementStart(3, "span", 254);
2076
+ i0.ɵɵelementStart(3, "span", 285);
1851
2077
  i0.ɵɵtext(4);
1852
2078
  i0.ɵɵelementEnd()();
1853
2079
  } if (rf & 2) {
@@ -1855,11 +2081,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_
1855
2081
  i0.ɵɵadvance(4);
1856
2082
  i0.ɵɵtextInterpolate(ctx_r2.entity.RowsToPackSampleCount);
1857
2083
  } }
1858
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_26_Template(rf, ctx) { if (rf & 1) {
1859
- i0.ɵɵelementStart(0, "div", 269)(1, "span", 253);
2084
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_26_Template(rf, ctx) { if (rf & 1) {
2085
+ i0.ɵɵelementStart(0, "div", 300)(1, "span", 284);
1860
2086
  i0.ɵɵtext(2, "Sample Method");
1861
2087
  i0.ɵɵelementEnd();
1862
- i0.ɵɵelementStart(3, "span", 254);
2088
+ i0.ɵɵelementStart(3, "span", 285);
1863
2089
  i0.ɵɵtext(4);
1864
2090
  i0.ɵɵelementEnd()();
1865
2091
  } if (rf & 2) {
@@ -1867,35 +2093,35 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_
1867
2093
  i0.ɵɵadvance(4);
1868
2094
  i0.ɵɵtextInterpolate(ctx_r2.entity.RowsToPackSampleMethod);
1869
2095
  } }
1870
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Template(rf, ctx) { if (rf & 1) {
1871
- i0.ɵɵelementStart(0, "section", 35)(1, "div", 53);
1872
- i0.ɵɵconditionalCreate(2, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_2_Template, 26, 6, "div", 262);
1873
- i0.ɵɵelementStart(3, "div", 263)(4, "h3", 69);
1874
- i0.ɵɵelement(5, "i", 264);
2096
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Template(rf, ctx) { if (rf & 1) {
2097
+ i0.ɵɵelementStart(0, "section", 36)(1, "div", 54);
2098
+ i0.ɵɵconditionalCreate(2, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Template, 26, 6, "div", 293);
2099
+ i0.ɵɵelementStart(3, "div", 294)(4, "h3", 70);
2100
+ i0.ɵɵelement(5, "i", 295);
1875
2101
  i0.ɵɵtext(6, " Entity Settings ");
1876
2102
  i0.ɵɵelementEnd();
1877
- i0.ɵɵconditionalCreate(7, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_7_Template, 3, 0, "div", 265);
1878
- i0.ɵɵconditionalCreate(8, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_8_Template, 3, 0, "div", 210);
2103
+ i0.ɵɵconditionalCreate(7, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_7_Template, 3, 0, "div", 296);
2104
+ i0.ɵɵconditionalCreate(8, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_8_Template, 3, 0, "div", 211);
1879
2105
  i0.ɵɵelementEnd();
1880
- i0.ɵɵelementStart(9, "div", 263)(10, "h3", 69);
1881
- i0.ɵɵelement(11, "i", 266);
2106
+ i0.ɵɵelementStart(9, "div", 294)(10, "h3", 70);
2107
+ i0.ɵɵelement(11, "i", 297);
1882
2108
  i0.ɵɵtext(12, " Full-Text Search ");
1883
2109
  i0.ɵɵelementEnd();
1884
- i0.ɵɵconditionalCreate(13, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_13_Template, 10, 3, "div", 267);
1885
- i0.ɵɵconditionalCreate(14, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_14_Template, 3, 0, "div", 210);
2110
+ i0.ɵɵconditionalCreate(13, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_13_Template, 10, 3, "div", 298);
2111
+ i0.ɵɵconditionalCreate(14, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_14_Template, 3, 0, "div", 211);
1886
2112
  i0.ɵɵelementEnd();
1887
- i0.ɵɵelementStart(15, "div", 263)(16, "h3", 69);
1888
- i0.ɵɵelement(17, "i", 268);
2113
+ i0.ɵɵelementStart(15, "div", 294)(16, "h3", 70);
2114
+ i0.ɵɵelement(17, "i", 299);
1889
2115
  i0.ɵɵtext(18, " Schema Packaging ");
1890
2116
  i0.ɵɵelementEnd();
1891
- i0.ɵɵelementStart(19, "div", 251)(20, "div", 269)(21, "span", 253);
2117
+ i0.ɵɵelementStart(19, "div", 282)(20, "div", 300)(21, "span", 284);
1892
2118
  i0.ɵɵtext(22, "Rows to Pack");
1893
2119
  i0.ɵɵelementEnd();
1894
- i0.ɵɵelementStart(23, "span", 254);
2120
+ i0.ɵɵelementStart(23, "span", 285);
1895
2121
  i0.ɵɵtext(24);
1896
2122
  i0.ɵɵelementEnd()();
1897
- i0.ɵɵconditionalCreate(25, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_25_Template, 5, 1, "div", 269);
1898
- i0.ɵɵconditionalCreate(26, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_26_Template, 5, 1, "div", 269);
2123
+ i0.ɵɵconditionalCreate(25, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_25_Template, 5, 1, "div", 300);
2124
+ i0.ɵɵconditionalCreate(26, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_26_Template, 5, 1, "div", 300);
1899
2125
  i0.ɵɵelementEnd()()()();
1900
2126
  } if (rf & 2) {
1901
2127
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -1916,18 +2142,18 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Template(rf,
1916
2142
  i0.ɵɵadvance();
1917
2143
  i0.ɵɵconditional(ctx_r2.entity.RowsToPackSampleMethod ? 26 : -1);
1918
2144
  } }
1919
- function MJEntityFormComponentExtended_Conditional_0_Conditional_61_Template(rf, ctx) { if (rf & 1) {
2145
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_62_Template(rf, ctx) { if (rf & 1) {
1920
2146
  i0.ɵɵelementStart(0, "h3");
1921
2147
  i0.ɵɵtext(1, "Field Details");
1922
2148
  i0.ɵɵelementEnd();
1923
2149
  } }
1924
- function MJEntityFormComponentExtended_Conditional_0_Conditional_62_Template(rf, ctx) { if (rf & 1) {
2150
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_63_Template(rf, ctx) { if (rf & 1) {
1925
2151
  i0.ɵɵelementStart(0, "h3");
1926
2152
  i0.ɵɵtext(1, "Relationship Details");
1927
2153
  i0.ɵɵelementEnd();
1928
2154
  } }
1929
- function MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1930
- i0.ɵɵelementStart(0, "p", 288);
2155
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_6_Template(rf, ctx) { if (rf & 1) {
2156
+ i0.ɵɵelementStart(0, "p", 319);
1931
2157
  i0.ɵɵtext(1);
1932
2158
  i0.ɵɵelementEnd();
1933
2159
  } if (rf & 2) {
@@ -1935,11 +2161,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_
1935
2161
  i0.ɵɵadvance();
1936
2162
  i0.ɵɵtextInterpolate(ctx_r2.selectedField.Description);
1937
2163
  } }
1938
- function MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_26_Template(rf, ctx) { if (rf & 1) {
1939
- i0.ɵɵelementStart(0, "div", 290)(1, "span", 291);
2164
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_26_Template(rf, ctx) { if (rf & 1) {
2165
+ i0.ɵɵelementStart(0, "div", 321)(1, "span", 322);
1940
2166
  i0.ɵɵtext(2, "Default");
1941
2167
  i0.ɵɵelementEnd();
1942
- i0.ɵɵelementStart(3, "span", 292);
2168
+ i0.ɵɵelementStart(3, "span", 323);
1943
2169
  i0.ɵɵtext(4);
1944
2170
  i0.ɵɵelementEnd()();
1945
2171
  } if (rf & 2) {
@@ -1947,24 +2173,24 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_
1947
2173
  i0.ɵɵadvance(4);
1948
2174
  i0.ɵɵtextInterpolate(ctx_r2.selectedField.DefaultValue);
1949
2175
  } }
1950
- function MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_27_Template(rf, ctx) { if (rf & 1) {
1951
- const _r48 = i0.ɵɵgetCurrentView();
1952
- i0.ɵɵelementStart(0, "div", 294)(1, "h5");
1953
- i0.ɵɵelement(2, "i", 43);
2176
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_27_Template(rf, ctx) { if (rf & 1) {
2177
+ const _r53 = i0.ɵɵgetCurrentView();
2178
+ i0.ɵɵelementStart(0, "div", 325)(1, "h5");
2179
+ i0.ɵɵelement(2, "i", 44);
1954
2180
  i0.ɵɵtext(3, " IS-A Inherited Field ");
1955
2181
  i0.ɵɵelementEnd();
1956
- i0.ɵɵelementStart(4, "div", 289)(5, "div", 290)(6, "span", 291);
2182
+ i0.ɵɵelementStart(4, "div", 320)(5, "div", 321)(6, "span", 322);
1957
2183
  i0.ɵɵtext(7, "Source Entity");
1958
2184
  i0.ɵɵelementEnd();
1959
- i0.ɵɵelementStart(8, "span", 295);
1960
- i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_27_Template_span_click_8_listener() { i0.ɵɵrestoreView(_r48); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.NavigateToEntity(ctx_r2.ParentChain[0])); });
2185
+ i0.ɵɵelementStart(8, "span", 326);
2186
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_27_Template_span_click_8_listener() { i0.ɵɵrestoreView(_r53); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.NavigateToEntity(ctx_r2.ParentChain[0])); });
1961
2187
  i0.ɵɵtext(9);
1962
- i0.ɵɵelement(10, "i", 62);
2188
+ i0.ɵɵelement(10, "i", 63);
1963
2189
  i0.ɵɵelementEnd()();
1964
- i0.ɵɵelementStart(11, "div", 290)(12, "span", 291);
2190
+ i0.ɵɵelementStart(11, "div", 321)(12, "span", 322);
1965
2191
  i0.ɵɵtext(13, "Routing");
1966
2192
  i0.ɵɵelementEnd();
1967
- i0.ɵɵelementStart(14, "span", 293);
2193
+ i0.ɵɵelementStart(14, "span", 324);
1968
2194
  i0.ɵɵtext(15, "ORM routes Set/Get to parent");
1969
2195
  i0.ɵɵelementEnd()()()();
1970
2196
  } if (rf & 2) {
@@ -1972,23 +2198,23 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_
1972
2198
  i0.ɵɵadvance(9);
1973
2199
  i0.ɵɵtextInterpolate1(" ", ctx_r2.GetISAFieldSource(ctx_r2.selectedField), " ");
1974
2200
  } }
1975
- function MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_28_Template(rf, ctx) { if (rf & 1) {
1976
- const _r49 = i0.ɵɵgetCurrentView();
1977
- i0.ɵɵelementStart(0, "div", 286)(1, "h5");
2201
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_28_Template(rf, ctx) { if (rf & 1) {
2202
+ const _r54 = i0.ɵɵgetCurrentView();
2203
+ i0.ɵɵelementStart(0, "div", 317)(1, "h5");
1978
2204
  i0.ɵɵtext(2, "Relationship");
1979
2205
  i0.ɵɵelementEnd();
1980
- i0.ɵɵelementStart(3, "div", 289)(4, "div", 290)(5, "span", 291);
2206
+ i0.ɵɵelementStart(3, "div", 320)(4, "div", 321)(5, "span", 322);
1981
2207
  i0.ɵɵtext(6, "Related Entity");
1982
2208
  i0.ɵɵelementEnd();
1983
- i0.ɵɵelementStart(7, "span", 296);
1984
- i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_28_Template_span_click_7_listener() { i0.ɵɵrestoreView(_r49); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.navigateToRelatedEntity(ctx_r2.selectedField)); });
2209
+ i0.ɵɵelementStart(7, "span", 327);
2210
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_28_Template_span_click_7_listener() { i0.ɵɵrestoreView(_r54); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.navigateToRelatedEntity(ctx_r2.selectedField)); });
1985
2211
  i0.ɵɵtext(8);
1986
- i0.ɵɵelement(9, "i", 62);
2212
+ i0.ɵɵelement(9, "i", 63);
1987
2213
  i0.ɵɵelementEnd()();
1988
- i0.ɵɵelementStart(10, "div", 290)(11, "span", 291);
2214
+ i0.ɵɵelementStart(10, "div", 321)(11, "span", 322);
1989
2215
  i0.ɵɵtext(12, "Display Type");
1990
2216
  i0.ɵɵelementEnd();
1991
- i0.ɵɵelementStart(13, "span", 293);
2217
+ i0.ɵɵelementStart(13, "span", 324);
1992
2218
  i0.ɵɵtext(14);
1993
2219
  i0.ɵɵelementEnd()()()();
1994
2220
  } if (rf & 2) {
@@ -1998,20 +2224,20 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_
1998
2224
  i0.ɵɵadvance(6);
1999
2225
  i0.ɵɵtextInterpolate(ctx_r2.selectedField.RelatedEntityDisplayType);
2000
2226
  } }
2001
- function MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_29_Template(rf, ctx) { if (rf & 1) {
2002
- i0.ɵɵelementStart(0, "div", 286)(1, "h5");
2227
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_29_Template(rf, ctx) { if (rf & 1) {
2228
+ i0.ɵɵelementStart(0, "div", 317)(1, "h5");
2003
2229
  i0.ɵɵtext(2, "Encryption");
2004
2230
  i0.ɵɵelementEnd();
2005
- i0.ɵɵelementStart(3, "div", 289)(4, "div", 290)(5, "span", 291);
2231
+ i0.ɵɵelementStart(3, "div", 320)(4, "div", 321)(5, "span", 322);
2006
2232
  i0.ɵɵtext(6, "Encrypted");
2007
2233
  i0.ɵɵelementEnd();
2008
- i0.ɵɵelementStart(7, "span", 293);
2234
+ i0.ɵɵelementStart(7, "span", 324);
2009
2235
  i0.ɵɵtext(8, "Yes");
2010
2236
  i0.ɵɵelementEnd()();
2011
- i0.ɵɵelementStart(9, "div", 290)(10, "span", 291);
2237
+ i0.ɵɵelementStart(9, "div", 321)(10, "span", 322);
2012
2238
  i0.ɵɵtext(11, "Decrypt in API");
2013
2239
  i0.ɵɵelementEnd();
2014
- i0.ɵɵelementStart(12, "span", 293);
2240
+ i0.ɵɵelementStart(12, "span", 324);
2015
2241
  i0.ɵɵtext(13);
2016
2242
  i0.ɵɵelementEnd()()()();
2017
2243
  } if (rf & 2) {
@@ -2019,11 +2245,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_
2019
2245
  i0.ɵɵadvance(13);
2020
2246
  i0.ɵɵtextInterpolate(ctx_r2.selectedField.AllowDecryptInAPI ? "Yes" : "No");
2021
2247
  } }
2022
- function MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_63_Template(rf, ctx) { if (rf & 1) {
2023
- i0.ɵɵelementStart(0, "div", 290)(1, "span", 291);
2248
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_63_Template(rf, ctx) { if (rf & 1) {
2249
+ i0.ɵɵelementStart(0, "div", 321)(1, "span", 322);
2024
2250
  i0.ɵɵtext(2, "Category");
2025
2251
  i0.ɵɵelementEnd();
2026
- i0.ɵɵelementStart(3, "span", 293);
2252
+ i0.ɵɵelementStart(3, "span", 324);
2027
2253
  i0.ɵɵtext(4);
2028
2254
  i0.ɵɵelementEnd()();
2029
2255
  } if (rf & 2) {
@@ -2031,119 +2257,119 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_
2031
2257
  i0.ɵɵadvance(4);
2032
2258
  i0.ɵɵtextInterpolate(ctx_r2.selectedField.Category);
2033
2259
  } }
2034
- function MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_69_For_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
2035
- i0.ɵɵelementStart(0, "span", 299);
2260
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_69_For_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
2261
+ i0.ɵɵelementStart(0, "span", 330);
2036
2262
  i0.ɵɵtext(1);
2037
2263
  i0.ɵɵelementEnd();
2038
2264
  } if (rf & 2) {
2039
- const val_r50 = i0.ɵɵnextContext().$implicit;
2265
+ const val_r55 = i0.ɵɵnextContext().$implicit;
2040
2266
  i0.ɵɵadvance();
2041
- i0.ɵɵtextInterpolate(val_r50.Code);
2267
+ i0.ɵɵtextInterpolate(val_r55.Code);
2042
2268
  } }
2043
- function MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_69_For_5_Template(rf, ctx) { if (rf & 1) {
2044
- i0.ɵɵelementStart(0, "div", 298);
2045
- i0.ɵɵconditionalCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_69_For_5_Conditional_1_Template, 2, 1, "span", 299);
2046
- i0.ɵɵelementStart(2, "span", 300);
2269
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_69_For_5_Template(rf, ctx) { if (rf & 1) {
2270
+ i0.ɵɵelementStart(0, "div", 329);
2271
+ i0.ɵɵconditionalCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_69_For_5_Conditional_1_Template, 2, 1, "span", 330);
2272
+ i0.ɵɵelementStart(2, "span", 331);
2047
2273
  i0.ɵɵtext(3);
2048
2274
  i0.ɵɵelementEnd()();
2049
2275
  } if (rf & 2) {
2050
- const val_r50 = ctx.$implicit;
2276
+ const val_r55 = ctx.$implicit;
2051
2277
  i0.ɵɵadvance();
2052
- i0.ɵɵconditional(val_r50.Code !== val_r50.Value ? 1 : -1);
2278
+ i0.ɵɵconditional(val_r55.Code !== val_r55.Value ? 1 : -1);
2053
2279
  i0.ɵɵadvance(2);
2054
- i0.ɵɵtextInterpolate(val_r50.Value);
2280
+ i0.ɵɵtextInterpolate(val_r55.Value);
2055
2281
  } }
2056
- function MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_69_Template(rf, ctx) { if (rf & 1) {
2057
- i0.ɵɵelementStart(0, "div", 286)(1, "h5");
2282
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_69_Template(rf, ctx) { if (rf & 1) {
2283
+ i0.ɵɵelementStart(0, "div", 317)(1, "h5");
2058
2284
  i0.ɵɵtext(2, "Allowed Values");
2059
2285
  i0.ɵɵelementEnd();
2060
- i0.ɵɵelementStart(3, "div", 297);
2061
- i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_69_For_5_Template, 4, 2, "div", 298, i0.ɵɵrepeaterTrackByIdentity);
2286
+ i0.ɵɵelementStart(3, "div", 328);
2287
+ i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_69_For_5_Template, 4, 2, "div", 329, i0.ɵɵrepeaterTrackByIdentity);
2062
2288
  i0.ɵɵelementEnd()();
2063
2289
  } if (rf & 2) {
2064
2290
  const ctx_r2 = i0.ɵɵnextContext(3);
2065
2291
  i0.ɵɵadvance(4);
2066
2292
  i0.ɵɵrepeater(ctx_r2.selectedField.EntityFieldValues);
2067
2293
  } }
2068
- function MJEntityFormComponentExtended_Conditional_0_Conditional_65_Template(rf, ctx) { if (rf & 1) {
2069
- i0.ɵɵelementStart(0, "div", 40)(1, "div", 286)(2, "h4");
2294
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Template(rf, ctx) { if (rf & 1) {
2295
+ i0.ɵɵelementStart(0, "div", 41)(1, "div", 317)(2, "h4");
2070
2296
  i0.ɵɵtext(3);
2071
2297
  i0.ɵɵelementEnd();
2072
- i0.ɵɵelementStart(4, "div", 287);
2298
+ i0.ɵɵelementStart(4, "div", 318);
2073
2299
  i0.ɵɵtext(5);
2074
2300
  i0.ɵɵelementEnd();
2075
- i0.ɵɵconditionalCreate(6, MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_6_Template, 2, 1, "p", 288);
2301
+ i0.ɵɵconditionalCreate(6, MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_6_Template, 2, 1, "p", 319);
2076
2302
  i0.ɵɵelementEnd();
2077
- i0.ɵɵelementStart(7, "div", 286)(8, "h5");
2303
+ i0.ɵɵelementStart(7, "div", 317)(8, "h5");
2078
2304
  i0.ɵɵtext(9, "Type Information");
2079
2305
  i0.ɵɵelementEnd();
2080
- i0.ɵɵelementStart(10, "div", 289)(11, "div", 290)(12, "span", 291);
2306
+ i0.ɵɵelementStart(10, "div", 320)(11, "div", 321)(12, "span", 322);
2081
2307
  i0.ɵɵtext(13, "SQL Type");
2082
2308
  i0.ɵɵelementEnd();
2083
- i0.ɵɵelementStart(14, "span", 292);
2309
+ i0.ɵɵelementStart(14, "span", 323);
2084
2310
  i0.ɵɵtext(15);
2085
2311
  i0.ɵɵelementEnd()();
2086
- i0.ɵɵelementStart(16, "div", 290)(17, "span", 291);
2312
+ i0.ɵɵelementStart(16, "div", 321)(17, "span", 322);
2087
2313
  i0.ɵɵtext(18, "TypeScript Type");
2088
2314
  i0.ɵɵelementEnd();
2089
- i0.ɵɵelementStart(19, "span", 292);
2315
+ i0.ɵɵelementStart(19, "span", 323);
2090
2316
  i0.ɵɵtext(20);
2091
2317
  i0.ɵɵelementEnd()();
2092
- i0.ɵɵelementStart(21, "div", 290)(22, "span", 291);
2318
+ i0.ɵɵelementStart(21, "div", 321)(22, "span", 322);
2093
2319
  i0.ɵɵtext(23, "Nullable");
2094
2320
  i0.ɵɵelementEnd();
2095
- i0.ɵɵelementStart(24, "span", 293);
2321
+ i0.ɵɵelementStart(24, "span", 324);
2096
2322
  i0.ɵɵtext(25);
2097
2323
  i0.ɵɵelementEnd()();
2098
- i0.ɵɵconditionalCreate(26, MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_26_Template, 5, 1, "div", 290);
2324
+ i0.ɵɵconditionalCreate(26, MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_26_Template, 5, 1, "div", 321);
2099
2325
  i0.ɵɵelementEnd()();
2100
- i0.ɵɵconditionalCreate(27, MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_27_Template, 16, 1, "div", 294);
2101
- i0.ɵɵconditionalCreate(28, MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_28_Template, 15, 2, "div", 286);
2102
- i0.ɵɵconditionalCreate(29, MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_29_Template, 14, 1, "div", 286);
2103
- i0.ɵɵelementStart(30, "div", 286)(31, "h5");
2326
+ i0.ɵɵconditionalCreate(27, MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_27_Template, 16, 1, "div", 325);
2327
+ i0.ɵɵconditionalCreate(28, MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_28_Template, 15, 2, "div", 317);
2328
+ i0.ɵɵconditionalCreate(29, MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_29_Template, 14, 1, "div", 317);
2329
+ i0.ɵɵelementStart(30, "div", 317)(31, "h5");
2104
2330
  i0.ɵɵtext(32, "API Settings");
2105
2331
  i0.ɵɵelementEnd();
2106
- i0.ɵɵelementStart(33, "div", 289)(34, "div", 290)(35, "span", 291);
2332
+ i0.ɵɵelementStart(33, "div", 320)(34, "div", 321)(35, "span", 322);
2107
2333
  i0.ɵɵtext(36, "Allow Update");
2108
2334
  i0.ɵɵelementEnd();
2109
- i0.ɵɵelementStart(37, "span", 293);
2335
+ i0.ɵɵelementStart(37, "span", 324);
2110
2336
  i0.ɵɵtext(38);
2111
2337
  i0.ɵɵelementEnd()();
2112
- i0.ɵɵelementStart(39, "div", 290)(40, "span", 291);
2338
+ i0.ɵɵelementStart(39, "div", 321)(40, "span", 322);
2113
2339
  i0.ɵɵtext(41, "Include in Search");
2114
2340
  i0.ɵɵelementEnd();
2115
- i0.ɵɵelementStart(42, "span", 293);
2341
+ i0.ɵɵelementStart(42, "span", 324);
2116
2342
  i0.ɵɵtext(43);
2117
2343
  i0.ɵɵelementEnd()();
2118
- i0.ɵɵelementStart(44, "div", 290)(45, "span", 291);
2344
+ i0.ɵɵelementStart(44, "div", 321)(45, "span", 322);
2119
2345
  i0.ɵɵtext(46, "Full-Text Search");
2120
2346
  i0.ɵɵelementEnd();
2121
- i0.ɵɵelementStart(47, "span", 293);
2347
+ i0.ɵɵelementStart(47, "span", 324);
2122
2348
  i0.ɵɵtext(48);
2123
2349
  i0.ɵɵelementEnd()()()();
2124
- i0.ɵɵelementStart(49, "div", 286)(50, "h5");
2350
+ i0.ɵɵelementStart(49, "div", 317)(50, "h5");
2125
2351
  i0.ɵɵtext(51, "Form Settings");
2126
2352
  i0.ɵɵelementEnd();
2127
- i0.ɵɵelementStart(52, "div", 289)(53, "div", 290)(54, "span", 291);
2353
+ i0.ɵɵelementStart(52, "div", 320)(53, "div", 321)(54, "span", 322);
2128
2354
  i0.ɵɵtext(55, "Include in Form");
2129
2355
  i0.ɵɵelementEnd();
2130
- i0.ɵɵelementStart(56, "span", 293);
2356
+ i0.ɵɵelementStart(56, "span", 324);
2131
2357
  i0.ɵɵtext(57);
2132
2358
  i0.ɵɵelementEnd()();
2133
- i0.ɵɵelementStart(58, "div", 290)(59, "span", 291);
2359
+ i0.ɵɵelementStart(58, "div", 321)(59, "span", 322);
2134
2360
  i0.ɵɵtext(60, "Section");
2135
2361
  i0.ɵɵelementEnd();
2136
- i0.ɵɵelementStart(61, "span", 293);
2362
+ i0.ɵɵelementStart(61, "span", 324);
2137
2363
  i0.ɵɵtext(62);
2138
2364
  i0.ɵɵelementEnd()();
2139
- i0.ɵɵconditionalCreate(63, MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_63_Template, 5, 1, "div", 290);
2140
- i0.ɵɵelementStart(64, "div", 290)(65, "span", 291);
2365
+ i0.ɵɵconditionalCreate(63, MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_63_Template, 5, 1, "div", 321);
2366
+ i0.ɵɵelementStart(64, "div", 321)(65, "span", 322);
2141
2367
  i0.ɵɵtext(66, "Sequence");
2142
2368
  i0.ɵɵelementEnd();
2143
- i0.ɵɵelementStart(67, "span", 293);
2369
+ i0.ɵɵelementStart(67, "span", 324);
2144
2370
  i0.ɵɵtext(68);
2145
2371
  i0.ɵɵelementEnd()()()();
2146
- i0.ɵɵconditionalCreate(69, MJEntityFormComponentExtended_Conditional_0_Conditional_65_Conditional_69_Template, 6, 0, "div", 286);
2372
+ i0.ɵɵconditionalCreate(69, MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_69_Template, 6, 0, "div", 317);
2147
2373
  i0.ɵɵelementEnd();
2148
2374
  } if (rf & 2) {
2149
2375
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -2184,50 +2410,50 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_65_Template(rf,
2184
2410
  i0.ɵɵadvance();
2185
2411
  i0.ɵɵconditional(ctx_r2.selectedField.EntityFieldValues.length > 0 ? 69 : -1);
2186
2412
  } }
2187
- function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Template(rf, ctx) { if (rf & 1) {
2188
- i0.ɵɵelementStart(0, "div", 40)(1, "div", 286)(2, "h4");
2413
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_67_Template(rf, ctx) { if (rf & 1) {
2414
+ i0.ɵɵelementStart(0, "div", 41)(1, "div", 317)(2, "h4");
2189
2415
  i0.ɵɵtext(3);
2190
2416
  i0.ɵɵelementEnd()();
2191
- i0.ɵɵelementStart(4, "div", 286)(5, "h5");
2417
+ i0.ɵɵelementStart(4, "div", 317)(5, "h5");
2192
2418
  i0.ɵɵtext(6, "Connection");
2193
2419
  i0.ɵɵelementEnd();
2194
- i0.ɵɵelementStart(7, "div", 289)(8, "div", 290)(9, "span", 291);
2420
+ i0.ɵɵelementStart(7, "div", 320)(8, "div", 321)(9, "span", 322);
2195
2421
  i0.ɵɵtext(10, "From Entity");
2196
2422
  i0.ɵɵelementEnd();
2197
- i0.ɵɵelementStart(11, "span", 293);
2423
+ i0.ɵɵelementStart(11, "span", 324);
2198
2424
  i0.ɵɵtext(12);
2199
2425
  i0.ɵɵelementEnd()();
2200
- i0.ɵɵelementStart(13, "div", 290)(14, "span", 291);
2426
+ i0.ɵɵelementStart(13, "div", 321)(14, "span", 322);
2201
2427
  i0.ɵɵtext(15, "Join Field");
2202
2428
  i0.ɵɵelementEnd();
2203
- i0.ɵɵelementStart(16, "span", 292);
2429
+ i0.ɵɵelementStart(16, "span", 323);
2204
2430
  i0.ɵɵtext(17);
2205
2431
  i0.ɵɵelementEnd()();
2206
- i0.ɵɵelementStart(18, "div", 290)(19, "span", 291);
2432
+ i0.ɵɵelementStart(18, "div", 321)(19, "span", 322);
2207
2433
  i0.ɵɵtext(20, "Type");
2208
2434
  i0.ɵɵelementEnd();
2209
- i0.ɵɵelementStart(21, "span", 293);
2435
+ i0.ɵɵelementStart(21, "span", 324);
2210
2436
  i0.ɵɵtext(22);
2211
2437
  i0.ɵɵelementEnd()()()();
2212
- i0.ɵɵelementStart(23, "div", 286)(24, "h5");
2438
+ i0.ɵɵelementStart(23, "div", 317)(24, "h5");
2213
2439
  i0.ɵɵtext(25, "Display Settings");
2214
2440
  i0.ɵɵelementEnd();
2215
- i0.ɵɵelementStart(26, "div", 289)(27, "div", 290)(28, "span", 291);
2441
+ i0.ɵɵelementStart(26, "div", 320)(27, "div", 321)(28, "span", 322);
2216
2442
  i0.ɵɵtext(29, "Display in Form");
2217
2443
  i0.ɵɵelementEnd();
2218
- i0.ɵɵelementStart(30, "span", 293);
2444
+ i0.ɵɵelementStart(30, "span", 324);
2219
2445
  i0.ɵɵtext(31);
2220
2446
  i0.ɵɵelementEnd()();
2221
- i0.ɵɵelementStart(32, "div", 290)(33, "span", 291);
2447
+ i0.ɵɵelementStart(32, "div", 321)(33, "span", 322);
2222
2448
  i0.ɵɵtext(34, "Location");
2223
2449
  i0.ɵɵelementEnd();
2224
- i0.ɵɵelementStart(35, "span", 293);
2450
+ i0.ɵɵelementStart(35, "span", 324);
2225
2451
  i0.ɵɵtext(36);
2226
2452
  i0.ɵɵelementEnd()();
2227
- i0.ɵɵelementStart(37, "div", 290)(38, "span", 291);
2453
+ i0.ɵɵelementStart(37, "div", 321)(38, "span", 322);
2228
2454
  i0.ɵɵtext(39, "Bundle in API");
2229
2455
  i0.ɵɵelementEnd();
2230
- i0.ɵɵelementStart(40, "span", 293);
2456
+ i0.ɵɵelementStart(40, "span", 324);
2231
2457
  i0.ɵɵtext(41);
2232
2458
  i0.ɵɵelementEnd()()()()();
2233
2459
  } if (rf & 2) {
@@ -2313,21 +2539,22 @@ function MJEntityFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf
2313
2539
  i0.ɵɵconditionalCreate(51, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Template, 111, 23, "section", 28);
2314
2540
  i0.ɵɵconditionalCreate(52, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Template, 15, 8, "section", 29);
2315
2541
  i0.ɵɵconditionalCreate(53, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Template, 13, 7, "section", 30);
2316
- i0.ɵɵconditionalCreate(54, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Template, 55, 22, "section", 31);
2317
- i0.ɵɵconditionalCreate(55, MJEntityFormComponentExtended_Conditional_0_Conditional_55_Template, 3, 1, "section", 32);
2318
- i0.ɵɵconditionalCreate(56, MJEntityFormComponentExtended_Conditional_0_Conditional_56_Template, 57, 20, "section", 33);
2319
- i0.ɵɵconditionalCreate(57, MJEntityFormComponentExtended_Conditional_0_Conditional_57_Template, 18, 7, "section", 34);
2320
- i0.ɵɵconditionalCreate(58, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Template, 27, 8, "section", 35);
2321
- i0.ɵɵelementEnd();
2322
- i0.ɵɵelementStart(59, "aside", 36)(60, "div", 37);
2323
- i0.ɵɵconditionalCreate(61, MJEntityFormComponentExtended_Conditional_0_Conditional_61_Template, 2, 0, "h3");
2542
+ i0.ɵɵconditionalCreate(54, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Template, 4, 1, "section", 31);
2543
+ i0.ɵɵconditionalCreate(55, MJEntityFormComponentExtended_Conditional_0_Conditional_55_Template, 55, 22, "section", 32);
2544
+ i0.ɵɵconditionalCreate(56, MJEntityFormComponentExtended_Conditional_0_Conditional_56_Template, 3, 1, "section", 33);
2545
+ i0.ɵɵconditionalCreate(57, MJEntityFormComponentExtended_Conditional_0_Conditional_57_Template, 57, 20, "section", 34);
2546
+ i0.ɵɵconditionalCreate(58, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Template, 18, 7, "section", 35);
2547
+ i0.ɵɵconditionalCreate(59, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Template, 27, 8, "section", 36);
2548
+ i0.ɵɵelementEnd();
2549
+ i0.ɵɵelementStart(60, "aside", 37)(61, "div", 38);
2324
2550
  i0.ɵɵconditionalCreate(62, MJEntityFormComponentExtended_Conditional_0_Conditional_62_Template, 2, 0, "h3");
2325
- i0.ɵɵelementStart(63, "button", 38);
2326
- i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Template_button_click_63_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeDetailPanel()); });
2327
- i0.ɵɵelement(64, "i", 39);
2551
+ i0.ɵɵconditionalCreate(63, MJEntityFormComponentExtended_Conditional_0_Conditional_63_Template, 2, 0, "h3");
2552
+ i0.ɵɵelementStart(64, "button", 39);
2553
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Template_button_click_64_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeDetailPanel()); });
2554
+ i0.ɵɵelement(65, "i", 40);
2328
2555
  i0.ɵɵelementEnd()();
2329
- i0.ɵɵconditionalCreate(65, MJEntityFormComponentExtended_Conditional_0_Conditional_65_Template, 70, 18, "div", 40);
2330
- i0.ɵɵconditionalCreate(66, MJEntityFormComponentExtended_Conditional_0_Conditional_66_Template, 42, 7, "div", 40);
2556
+ i0.ɵɵconditionalCreate(66, MJEntityFormComponentExtended_Conditional_0_Conditional_66_Template, 70, 18, "div", 41);
2557
+ i0.ɵɵconditionalCreate(67, MJEntityFormComponentExtended_Conditional_0_Conditional_67_Template, 42, 7, "div", 41);
2331
2558
  i0.ɵɵelementEnd()()();
2332
2559
  } if (rf & 2) {
2333
2560
  const ctx_r2 = i0.ɵɵnextContext();
@@ -2374,34 +2601,36 @@ function MJEntityFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf
2374
2601
  i0.ɵɵadvance();
2375
2602
  i0.ɵɵconditional(ctx_r2.activeSection === "relationships" ? 53 : -1);
2376
2603
  i0.ɵɵadvance();
2377
- i0.ɵɵconditional(ctx_r2.activeSection === "permissions" ? 54 : -1);
2604
+ i0.ɵɵconditional(ctx_r2.activeSection === "organicKeys" ? 54 : -1);
2605
+ i0.ɵɵadvance();
2606
+ i0.ɵɵconditional(ctx_r2.activeSection === "permissions" ? 55 : -1);
2378
2607
  i0.ɵɵadvance();
2379
- i0.ɵɵconditional(ctx_r2.activeSection === "data" ? 55 : -1);
2608
+ i0.ɵɵconditional(ctx_r2.activeSection === "data" ? 56 : -1);
2380
2609
  i0.ɵɵadvance();
2381
- i0.ɵɵconditional(ctx_r2.activeSection === "lineage" ? 56 : -1);
2610
+ i0.ɵɵconditional(ctx_r2.activeSection === "lineage" ? 57 : -1);
2382
2611
  i0.ɵɵadvance();
2383
- i0.ɵɵconditional(ctx_r2.activeSection === "history" ? 57 : -1);
2612
+ i0.ɵɵconditional(ctx_r2.activeSection === "history" ? 58 : -1);
2384
2613
  i0.ɵɵadvance();
2385
- i0.ɵɵconditional(ctx_r2.activeSection === "settings" ? 58 : -1);
2614
+ i0.ɵɵconditional(ctx_r2.activeSection === "settings" ? 59 : -1);
2386
2615
  i0.ɵɵadvance();
2387
2616
  i0.ɵɵclassProp("open", ctx_r2.detailPanelOpen);
2388
2617
  i0.ɵɵadvance(2);
2389
- i0.ɵɵconditional(ctx_r2.selectedField ? 61 : -1);
2618
+ i0.ɵɵconditional(ctx_r2.selectedField ? 62 : -1);
2390
2619
  i0.ɵɵadvance();
2391
- i0.ɵɵconditional(ctx_r2.selectedRelationship ? 62 : -1);
2620
+ i0.ɵɵconditional(ctx_r2.selectedRelationship ? 63 : -1);
2392
2621
  i0.ɵɵadvance(3);
2393
- i0.ɵɵconditional(ctx_r2.selectedField ? 65 : -1);
2622
+ i0.ɵɵconditional(ctx_r2.selectedField ? 66 : -1);
2394
2623
  i0.ɵɵadvance();
2395
- i0.ɵɵconditional(ctx_r2.selectedRelationship ? 66 : -1);
2624
+ i0.ɵɵconditional(ctx_r2.selectedRelationship ? 67 : -1);
2396
2625
  } }
2397
2626
  function MJEntityFormComponentExtended_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
2398
- i0.ɵɵelementStart(0, "div", 301);
2399
- i0.ɵɵelement(1, "mj-loading", 304);
2627
+ i0.ɵɵelementStart(0, "div", 332);
2628
+ i0.ɵɵelement(1, "mj-loading", 335);
2400
2629
  i0.ɵɵelementEnd();
2401
2630
  } }
2402
2631
  function MJEntityFormComponentExtended_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
2403
- i0.ɵɵelementStart(0, "div", 302);
2404
- i0.ɵɵelement(1, "i", 305);
2632
+ i0.ɵɵelementStart(0, "div", 333);
2633
+ i0.ɵɵelement(1, "i", 336);
2405
2634
  i0.ɵɵelementStart(2, "p");
2406
2635
  i0.ɵɵtext(3);
2407
2636
  i0.ɵɵelementEnd()();
@@ -2411,16 +2640,16 @@ function MJEntityFormComponentExtended_Conditional_1_Conditional_1_Template(rf,
2411
2640
  i0.ɵɵtextInterpolate(ctx_r2.explorerError);
2412
2641
  } }
2413
2642
  function MJEntityFormComponentExtended_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
2414
- i0.ɵɵelementStart(0, "div", 303);
2643
+ i0.ɵɵelementStart(0, "div", 334);
2415
2644
  i0.ɵɵelement(1, "i", 22);
2416
2645
  i0.ɵɵelementStart(2, "p");
2417
2646
  i0.ɵɵtext(3, "Entity metadata not available");
2418
2647
  i0.ɵɵelementEnd()();
2419
2648
  } }
2420
2649
  function MJEntityFormComponentExtended_Conditional_1_Template(rf, ctx) { if (rf & 1) {
2421
- i0.ɵɵconditionalCreate(0, MJEntityFormComponentExtended_Conditional_1_Conditional_0_Template, 2, 0, "div", 301);
2422
- i0.ɵɵconditionalCreate(1, MJEntityFormComponentExtended_Conditional_1_Conditional_1_Template, 4, 1, "div", 302);
2423
- i0.ɵɵconditionalCreate(2, MJEntityFormComponentExtended_Conditional_1_Conditional_2_Template, 4, 0, "div", 303);
2650
+ i0.ɵɵconditionalCreate(0, MJEntityFormComponentExtended_Conditional_1_Conditional_0_Template, 2, 0, "div", 332);
2651
+ i0.ɵɵconditionalCreate(1, MJEntityFormComponentExtended_Conditional_1_Conditional_1_Template, 4, 1, "div", 333);
2652
+ i0.ɵɵconditionalCreate(2, MJEntityFormComponentExtended_Conditional_1_Conditional_2_Template, 4, 0, "div", 334);
2424
2653
  } if (rf & 2) {
2425
2654
  const ctx_r2 = i0.ɵɵnextContext();
2426
2655
  i0.ɵɵconditional(ctx_r2.isExplorerLoading ? 0 : -1);
@@ -2462,6 +2691,7 @@ let MJEntityFormComponentExtended = class MJEntityFormComponentExtended extends
2462
2691
  { id: 'overview', icon: 'fa-solid fa-house', label: 'Overview' },
2463
2692
  { id: 'fields', icon: 'fa-solid fa-table-cells', label: 'Fields' },
2464
2693
  { id: 'relationships', icon: 'fa-solid fa-diagram-project', label: 'Relations' },
2694
+ { id: 'organicKeys', icon: 'fa-solid fa-fingerprint', label: 'Organic Keys' },
2465
2695
  { id: 'permissions', icon: 'fa-solid fa-lock', label: 'Security' },
2466
2696
  { id: 'data', icon: 'fa-solid fa-table-list', label: 'Data' },
2467
2697
  { id: 'lineage', icon: 'fa-solid fa-code-branch', label: 'Lineage' },
@@ -2510,6 +2740,10 @@ let MJEntityFormComponentExtended = class MJEntityFormComponentExtended extends
2510
2740
  this.groupedOutgoingRelationships = [];
2511
2741
  /** Grouped incoming relationships by source entity */
2512
2742
  this.groupedIncomingRelationships = [];
2743
+ /** Outgoing organic keys (defined on THIS entity) */
2744
+ this.organicKeysOutgoing = [];
2745
+ /** Incoming organic keys (other entities targeting THIS entity) */
2746
+ this.organicKeysIncoming = [];
2513
2747
  /** Whether detail panel is open */
2514
2748
  this.detailPanelOpen = false;
2515
2749
  /** Currently selected field for detail panel */
@@ -2551,6 +2785,7 @@ let MJEntityFormComponentExtended = class MJEntityFormComponentExtended extends
2551
2785
  this.buildFieldGroups();
2552
2786
  this.buildISAFieldGroups();
2553
2787
  this.buildRelationships();
2788
+ this.buildOrganicKeys();
2554
2789
  this.updateNavBadges();
2555
2790
  // Load row count asynchronously (don't block UI)
2556
2791
  this.loadRowCountAsync();
@@ -2856,6 +3091,54 @@ let MJEntityFormComponentExtended = class MJEntityFormComponentExtended extends
2856
3091
  this.groupedIncomingRelationships = Array.from(incomingMap.values())
2857
3092
  .sort((a, b) => a.entityName.localeCompare(b.entityName));
2858
3093
  }
3094
+ buildOrganicKeys() {
3095
+ if (!this.entity)
3096
+ return;
3097
+ // Outgoing: organic keys defined ON this entity
3098
+ this.organicKeysOutgoing = this.entity.OrganicKeys.map(ok => ({
3099
+ OrganicKey: ok,
3100
+ RelatedEntities: ok.RelatedEntities.map(re => {
3101
+ const relEntity = this.allEntities.find(e => UUIDsEqual(e.ID, re.RelatedEntityID));
3102
+ return {
3103
+ Info: re,
3104
+ EntityName: re.RelatedEntity || relEntity?.Name || 'Unknown',
3105
+ EntityIcon: relEntity?.Icon || 'fa-solid fa-table',
3106
+ };
3107
+ }),
3108
+ }));
3109
+ // Incoming: organic keys on OTHER entities that reference THIS entity
3110
+ this.organicKeysIncoming = [];
3111
+ for (const otherEntity of this.allEntities) {
3112
+ if (UUIDsEqual(otherEntity.ID, this.entity.ID))
3113
+ continue;
3114
+ for (const ok of otherEntity.OrganicKeys) {
3115
+ for (const re of ok.RelatedEntities) {
3116
+ if (UUIDsEqual(re.RelatedEntityID, this.entity.ID)) {
3117
+ this.organicKeysIncoming.push({
3118
+ SourceEntityID: otherEntity.ID,
3119
+ SourceEntityName: otherEntity.Name,
3120
+ SourceEntityIcon: otherEntity.Icon || 'fa-solid fa-table',
3121
+ OrganicKey: ok,
3122
+ RelatedEntityConfig: re,
3123
+ MatchType: re.IsTransitiveMatch ? 'Transitive' : 'Direct',
3124
+ });
3125
+ }
3126
+ }
3127
+ }
3128
+ }
3129
+ }
3130
+ /**
3131
+ * Navigate to the Entity admin form for a given entity ID.
3132
+ */
3133
+ NavigateToEntityByID(entityID) {
3134
+ const pkey = new CompositeKey([{ FieldName: 'ID', Value: entityID }]);
3135
+ this.sharedService.OpenEntityRecord('MJ: Entities', pkey);
3136
+ }
3137
+ /** Total organic key connection count (outgoing targets + incoming sources) */
3138
+ get OrganicKeyTotalCount() {
3139
+ const outCount = this.organicKeysOutgoing.reduce((sum, ok) => sum + ok.RelatedEntities.length, 0);
3140
+ return outCount + this.organicKeysIncoming.length;
3141
+ }
2859
3142
  updateNavBadges() {
2860
3143
  if (!this.entity)
2861
3144
  return;
@@ -2865,6 +3148,8 @@ let MJEntityFormComponentExtended = class MJEntityFormComponentExtended extends
2865
3148
  return { ...item, badge: this.stats.fieldCount };
2866
3149
  case 'relationships':
2867
3150
  return { ...item, badge: this.stats.relationshipCount };
3151
+ case 'organicKeys':
3152
+ return { ...item, badge: this.OrganicKeyTotalCount > 0 ? this.OrganicKeyTotalCount : undefined };
2868
3153
  case 'permissions':
2869
3154
  return { ...item, badge: this.stats.permissionCount };
2870
3155
  default:
@@ -3288,11 +3573,11 @@ let MJEntityFormComponentExtended = class MJEntityFormComponentExtended extends
3288
3573
  }
3289
3574
  }
3290
3575
  static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMJEntityFormComponentExtended_BaseFactory; return function MJEntityFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMJEntityFormComponentExtended_BaseFactory || (ɵMJEntityFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MJEntityFormComponentExtended)))(__ngFactoryType__ || MJEntityFormComponentExtended); }; })(); }
3291
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJEntityFormComponentExtended, selectors: [["mj-entity-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 1, consts: [[1, "entity-explorer"], [1, "explorer-header"], [1, "entity-identity"], [1, "entity-icon"], [1, "entity-info"], [1, "entity-title-row"], [1, "entity-name"], [1, "status-badge", 3, "ngClass"], [1, "status-badge", "isa-badge", "virtual"], ["title", "Click to navigate to parent entity", 1, "status-badge", "isa-badge", "child-type"], [1, "isa-breadcrumb"], [1, "entity-subtitle"], [1, "schema-table"], [1, "separator"], [1, "entity-description", 3, "title"], [1, "header-stats"], [1, "stat-item", 3, "click"], [1, "fa-solid", "fa-table-columns"], [1, "stat-value"], [1, "stat-label"], [1, "fa-solid", "fa-link"], [1, "fa-solid", "fa-shield-halved"], [1, "fa-solid", "fa-database"], [1, "stat-value", "loading"], [1, "explorer-body"], [1, "nav-rail"], [1, "nav-item", 3, "active", "title"], [1, "main-canvas"], [1, "section", "overview-section"], [1, "section", "fields-section"], [1, "section", "relationships-section"], [1, "section", "permissions-section"], [1, "section", "data-section"], [1, "section", "lineage-section"], [1, "section", "history-section"], [1, "section", "settings-section"], [1, "detail-panel"], [1, "panel-header"], [1, "close-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "panel-content"], [1, "fa-solid", "fa-eye"], ["title", "Click to navigate to parent entity", 1, "status-badge", "isa-badge", "child-type", 3, "click"], [1, "fa-solid", "fa-arrow-up"], [1, "status-badge", "isa-badge", "parent-type"], [1, "fa-solid", "fa-sitemap"], ["title", "Multiple child types can coexist for a single parent record", 1, "status-badge", "isa-badge", "overlapping"], [1, "fa-solid", "fa-clone"], [1, "fa-solid", "fa-layer-group"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "nav-item", 3, "click", "title"], [1, "nav-label"], [1, "nav-badge"], [1, "section-content"], [1, "stats-cards"], ["title", "View all fields", 1, "stat-card", "clickable", 3, "click"], [1, "stat-card-header"], [1, "fa-solid", "fa-table-cells"], [1, "stat-card-body"], [1, "stat-main"], [1, "stat-details"], [1, "stat-card-action"], [1, "fa-solid", "fa-arrow-right"], ["title", "View relationships", 1, "stat-card", "clickable", 3, "click"], [1, "fa-solid", "fa-diagram-project"], ["title", "View security settings", 1, "stat-card", "clickable", 3, "click"], [1, "fa-solid", "fa-lock"], [1, "stat-card"], [1, "info-panel", "capabilities-panel"], [1, "panel-title"], [1, "fa-solid", "fa-bolt"], [1, "capability-tags"], [1, "capability-tag"], [1, "capability-tag", "disabled"], [1, "info-panel", "isa-panel"], [1, "info-panel", "database-panel"], [1, "fa-solid", "fa-server"], [1, "info-grid"], [1, "info-item"], [1, "info-label"], [1, "info-value"], [1, "info-panel", "codegen-panel"], [1, "fa-solid", "fa-code"], [1, "info-value", "code"], [1, "fa-solid", "fa-check"], [1, "isa-info-row", "virtual-info"], [1, "isa-children"], [1, "code"], [1, "isa-chain"], [1, "isa-chain-label"], [1, "isa-chain-nodes"], [1, "isa-node", "current"], [1, "isa-inherited-fields"], [1, "isa-field-inspector"], [1, "isa-siblings"], [1, "fa-solid", "fa-arrow-right", "isa-arrow"], [1, "isa-node", "parent", "clickable", 3, "click", "title"], [1, "isa-chain-label", "clickable", 3, "click"], [1, "fa-solid", 3, "ngClass"], [1, "isa-inspector-groups"], [1, "isa-inspector-group", 3, "own", "inherited"], [1, "isa-inspector-group"], [1, "isa-inspector-header"], [1, "isa-inspector-entity"], [1, "fa-solid", "fa-circle", 2, "color", "var(--mj-brand-primary)", "font-size", "8px"], [1, "fa-solid", "fa-arrow-up", 2, "color", "var(--mj-brand-primary)", "font-size", "10px"], [1, "isa-inspector-count"], [1, "isa-inspector-fields"], [1, "isa-inspector-field", 3, "title"], [1, "isa-inspector-type"], [1, "isa-child-list"], [1, "isa-sibling-chip", "clickable", 3, "title"], [1, "isa-sibling-chip", "clickable", 3, "click", "title"], [1, "fa-solid", "fa-arrows-left-right"], [1, "isa-child-chip", "clickable", 3, "title"], [1, "isa-child-chip", "clickable", 3, "click", "title"], [1, "fa-solid", "fa-arrow-down"], [1, "isa-child-count"], [1, "section-header"], [1, "search-box"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search fields...", 3, "ngModelChange", "ngModel"], [1, "header-controls"], [1, "view-mode-toggle"], ["title", "Group by category", 1, "toggle-btn", 3, "click"], ["title", "List view", 1, "toggle-btn", 3, "click"], [1, "fa-solid", "fa-list"], [1, "expand-collapse-controls"], [1, "section-content", "fields-content"], [1, "field-groups"], [1, "fields-list-view"], ["title", "Expand all", 1, "control-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-angles-down"], ["title", "Collapse all", 1, "control-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-angles-up"], [1, "field-group", 3, "expanded"], [1, "field-group"], [1, "group-header", 3, "click"], [1, "expand-icon", "fa-solid", 3, "ngClass"], [1, "group-icon"], [1, "group-label"], [1, "group-count"], [1, "group-content"], [1, "field-item", 3, "selected"], [1, "field-item", 3, "click"], [1, "field-icon"], [1, "field-info"], [1, "field-name"], [1, "field-db-name"], [1, "field-meta"], [1, "field-type"], [1, "field-nullable"], [1, "field-related"], [1, "field-badges"], ["title", "Primary Key", 1, "badge", "pk"], ["title", "Foreign Key", 1, "badge", "fk"], ["title", "Encrypted", 1, "badge", "encrypted"], [1, "badge", "inherited", 3, "title"], [1, "field-related", 3, "click"], [1, "list-header"], [1, "list-col", "col-seq", "sortable", 3, "click"], [1, "sort-icon", "fa-solid", 3, "ngClass"], [1, "list-col", "col-name", "sortable", 3, "click"], [1, "list-col", "col-display-name", "sortable", 3, "click"], [1, "list-col", "col-type", "sortable", 3, "click"], [1, "list-col", "col-length", "sortable", 3, "click"], [1, "list-col", "col-nullable", "sortable", 3, "click"], [1, "list-col", "col-flags"], [1, "list-col", "col-desc", "sortable", 3, "click"], [1, "list-body"], [1, "list-row", 3, "selected"], [1, "list-empty"], [1, "list-row", 3, "click"], [1, "list-col", "col-seq"], [1, "seq-num"], [1, "list-col", "col-name"], [1, "field-type-icon"], [1, "field-name-text"], [1, "list-col", "col-display-name"], [1, "display-name-text"], [1, "list-col", "col-type"], [1, "type-tag"], [1, "list-col", "col-length"], [1, "length-value"], [1, "length-value", "muted"], [1, "list-col", "col-nullable"], [1, "required-indicator"], [1, "flag-badges"], ["title", "Primary Key", 1, "flag-badge", "pk"], ["title", "Foreign Key", 1, "flag-badge", "fk"], ["title", "Encrypted", 1, "flag-badge", "encrypted"], [1, "flag-badge", "inherited", 3, "title"], [1, "list-col", "col-desc"], [1, "desc-text", 3, "title"], [1, "fa-solid", "fa-key"], [1, "view-toggle"], [1, "toggle-btn", 3, "click"], [1, "depth-selector"], [1, "relationships-graph"], [1, "relationships-list"], [1, "depth-label"], [1, "depth-buttons"], [1, "depth-btn", 3, "active", "title"], [1, "depth-btn", 3, "click", "title"], [3, "stateChange", "openRecord", "focusEntities", "showFilterPanel", "showHeader", "depth"], [1, "relationship-group"], [1, "relationship-group-title"], [1, "fa-solid", "fa-arrow-right-from-bracket"], [1, "relationship-items", "grouped"], [1, "relationship-item-grouped"], [1, "empty-state"], [1, "fa-solid", "fa-arrow-right-to-bracket"], [1, "rel-header"], [1, "rel-icon", "outgoing"], [1, "rel-entity-name"], [1, "rel-fields-chips"], [1, "field-chip", "outgoing", 3, "title"], [1, "field-chip", "outgoing", 3, "click", "title"], [1, "rel-icon", "incoming"], [1, "fa-solid", "fa-arrow-left"], [1, "field-chip", "incoming", 3, "title"], ["title", "Bundled in API", 1, "fa-solid", "fa-box", "bundle-icon"], [1, "permissions-matrix"], [1, "matrix-table"], [1, "center"], [1, "api-capabilities"], [1, "fa-solid", "fa-plug"], [1, "capability-grid"], [1, "capability-item"], [1, "role-name"], [1, "permission-icon", 3, "ngClass"], [1, "rls-info"], ["title", "Read RLS", 1, "rls-badge"], ["title", "Create RLS", 1, "rls-badge"], ["title", "Update RLS", 1, "rls-badge"], ["title", "Delete RLS", 1, "rls-badge"], [1, "no-rls"], [1, "data-viewer-container"], [3, "entity", "showGridToolbar"], [3, "recordOpened", "addRequested", "entity", "showGridToolbar"], [1, "lineage-diagram"], [1, "lineage-stage", "sources"], [1, "lineage-items"], [1, "lineage-item"], [1, "fa-solid", "fa-keyboard"], [1, "lineage-arrow"], [1, "lineage-stage", "entity-node"], [1, "entity-box"], [1, "lineage-stage", "sinks"], [1, "tracking-config"], [1, "fa-solid", "fa-clock-rotate-left"], [1, "config-grid"], [1, "config-item"], [1, "config-label"], [1, "config-value"], [1, "history-config"], [1, "config-status"], [1, "config-text"], [1, "history-info"], [1, "info-card"], [1, "fa-solid", "fa-info-circle"], [1, "audit-fields-list"], [1, "settings-panel", "isa-settings-panel"], [1, "settings-panel"], [1, "fa-solid", "fa-sliders"], [1, "settings-list"], [1, "fa-solid", "fa-magnifying-glass"], [1, "fts-config"], [1, "fa-solid", "fa-box"], [1, "config-row"], ["title", "Navigate to parent entity", 1, "link"], [1, "muted"], [1, "fa-solid", "fa-circle-check", 2, "color", "var(--mj-brand-primary)"], [1, "fa-solid", "fa-circle-minus", 2, "color", "var(--mj-text-muted)"], ["title", "Navigate to parent entity", 1, "link", 3, "click"], [1, "link", 3, "click"], [1, "fa-solid", "fa-circle-check", 2, "color", "#059669"], [1, "setting-item"], [1, "setting-name"], [1, "setting-value-json"], [1, "setting-value"], [1, "setting-comment"], ["language", "json", "setup", "minimal", 3, "value", "readonly", "lineWrapping"], [1, "config-value", "enabled"], [1, "fa-solid", "fa-circle-check"], [1, "config-value", "code"], [1, "detail-section"], [1, "detail-field-db-name"], [1, "field-description"], [1, "detail-grid"], [1, "detail-item"], [1, "label"], [1, "value", "code"], [1, "value"], [1, "detail-section", "isa-source-section"], ["title", "Navigate to source entity", 1, "value", "link", 3, "click"], [1, "value", "link", 3, "click"], [1, "value-list"], [1, "value-item"], [1, "value-code"], [1, "value-display"], [1, "explorer-loading"], [1, "explorer-error"], [1, "explorer-empty"], ["text", "Loading entity..."], [1, "fa-solid", "fa-exclamation-triangle"]], template: function MJEntityFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
3292
- i0.ɵɵconditionalCreate(0, MJEntityFormComponentExtended_Conditional_0_Template, 67, 35, "div", 0)(1, MJEntityFormComponentExtended_Conditional_1_Template, 3, 3);
3576
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJEntityFormComponentExtended, selectors: [["mj-entity-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 1, consts: [[1, "entity-explorer"], [1, "explorer-header"], [1, "entity-identity"], [1, "entity-icon"], [1, "entity-info"], [1, "entity-title-row"], [1, "entity-name"], [1, "status-badge", 3, "ngClass"], [1, "status-badge", "isa-badge", "virtual"], ["title", "Click to navigate to parent entity", 1, "status-badge", "isa-badge", "child-type"], [1, "isa-breadcrumb"], [1, "entity-subtitle"], [1, "schema-table"], [1, "separator"], [1, "entity-description", 3, "title"], [1, "header-stats"], [1, "stat-item", 3, "click"], [1, "fa-solid", "fa-table-columns"], [1, "stat-value"], [1, "stat-label"], [1, "fa-solid", "fa-link"], [1, "fa-solid", "fa-shield-halved"], [1, "fa-solid", "fa-database"], [1, "stat-value", "loading"], [1, "explorer-body"], [1, "nav-rail"], [1, "nav-item", 3, "active", "title"], [1, "main-canvas"], [1, "section", "overview-section"], [1, "section", "fields-section"], [1, "section", "relationships-section"], [1, "section", "organic-keys-section"], [1, "section", "permissions-section"], [1, "section", "data-section"], [1, "section", "lineage-section"], [1, "section", "history-section"], [1, "section", "settings-section"], [1, "detail-panel"], [1, "panel-header"], [1, "close-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "panel-content"], [1, "fa-solid", "fa-eye"], ["title", "Click to navigate to parent entity", 1, "status-badge", "isa-badge", "child-type", 3, "click"], [1, "fa-solid", "fa-arrow-up"], [1, "status-badge", "isa-badge", "parent-type"], [1, "fa-solid", "fa-sitemap"], ["title", "Multiple child types can coexist for a single parent record", 1, "status-badge", "isa-badge", "overlapping"], [1, "fa-solid", "fa-clone"], [1, "fa-solid", "fa-layer-group"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "nav-item", 3, "click", "title"], [1, "nav-label"], [1, "nav-badge"], [1, "section-content"], [1, "stats-cards"], ["title", "View all fields", 1, "stat-card", "clickable", 3, "click"], [1, "stat-card-header"], [1, "fa-solid", "fa-table-cells"], [1, "stat-card-body"], [1, "stat-main"], [1, "stat-details"], [1, "stat-card-action"], [1, "fa-solid", "fa-arrow-right"], ["title", "View relationships", 1, "stat-card", "clickable", 3, "click"], [1, "fa-solid", "fa-diagram-project"], ["title", "View security settings", 1, "stat-card", "clickable", 3, "click"], [1, "fa-solid", "fa-lock"], [1, "stat-card"], [1, "info-panel", "capabilities-panel"], [1, "panel-title"], [1, "fa-solid", "fa-bolt"], [1, "capability-tags"], [1, "capability-tag"], [1, "capability-tag", "disabled"], [1, "info-panel", "isa-panel"], [1, "info-panel", "database-panel"], [1, "fa-solid", "fa-server"], [1, "info-grid"], [1, "info-item"], [1, "info-label"], [1, "info-value"], [1, "info-panel", "codegen-panel"], [1, "fa-solid", "fa-code"], [1, "info-value", "code"], [1, "fa-solid", "fa-check"], [1, "isa-info-row", "virtual-info"], [1, "isa-children"], [1, "code"], [1, "isa-chain"], [1, "isa-chain-label"], [1, "isa-chain-nodes"], [1, "isa-node", "current"], [1, "isa-inherited-fields"], [1, "isa-field-inspector"], [1, "isa-siblings"], [1, "fa-solid", "fa-arrow-right", "isa-arrow"], [1, "isa-node", "parent", "clickable", 3, "click", "title"], [1, "isa-chain-label", "clickable", 3, "click"], [1, "fa-solid", 3, "ngClass"], [1, "isa-inspector-groups"], [1, "isa-inspector-group", 3, "own", "inherited"], [1, "isa-inspector-group"], [1, "isa-inspector-header"], [1, "isa-inspector-entity"], [1, "fa-solid", "fa-circle", 2, "color", "var(--mj-brand-primary)", "font-size", "8px"], [1, "fa-solid", "fa-arrow-up", 2, "color", "var(--mj-brand-primary)", "font-size", "10px"], [1, "isa-inspector-count"], [1, "isa-inspector-fields"], [1, "isa-inspector-field", 3, "title"], [1, "isa-inspector-type"], [1, "isa-child-list"], [1, "isa-sibling-chip", "clickable", 3, "title"], [1, "isa-sibling-chip", "clickable", 3, "click", "title"], [1, "fa-solid", "fa-arrows-left-right"], [1, "isa-child-chip", "clickable", 3, "title"], [1, "isa-child-chip", "clickable", 3, "click", "title"], [1, "fa-solid", "fa-arrow-down"], [1, "isa-child-count"], [1, "section-header"], [1, "search-box"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search fields...", 3, "ngModelChange", "ngModel"], [1, "header-controls"], [1, "view-mode-toggle"], ["title", "Group by category", 1, "toggle-btn", 3, "click"], ["title", "List view", 1, "toggle-btn", 3, "click"], [1, "fa-solid", "fa-list"], [1, "expand-collapse-controls"], [1, "section-content", "fields-content"], [1, "field-groups"], [1, "fields-list-view"], ["title", "Expand all", 1, "control-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-angles-down"], ["title", "Collapse all", 1, "control-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-angles-up"], [1, "field-group", 3, "expanded"], [1, "field-group"], [1, "group-header", 3, "click"], [1, "expand-icon", "fa-solid", 3, "ngClass"], [1, "group-icon"], [1, "group-label"], [1, "group-count"], [1, "group-content"], [1, "field-item", 3, "selected"], [1, "field-item", 3, "click"], [1, "field-icon"], [1, "field-info"], [1, "field-name"], [1, "field-db-name"], [1, "field-meta"], [1, "field-type"], [1, "field-nullable"], [1, "field-related"], [1, "field-badges"], ["title", "Primary Key", 1, "badge", "pk"], ["title", "Foreign Key", 1, "badge", "fk"], ["title", "Encrypted", 1, "badge", "encrypted"], [1, "badge", "inherited", 3, "title"], [1, "field-related", 3, "click"], [1, "list-header"], [1, "list-col", "col-seq", "sortable", 3, "click"], [1, "sort-icon", "fa-solid", 3, "ngClass"], [1, "list-col", "col-name", "sortable", 3, "click"], [1, "list-col", "col-display-name", "sortable", 3, "click"], [1, "list-col", "col-type", "sortable", 3, "click"], [1, "list-col", "col-length", "sortable", 3, "click"], [1, "list-col", "col-nullable", "sortable", 3, "click"], [1, "list-col", "col-flags"], [1, "list-col", "col-desc", "sortable", 3, "click"], [1, "list-body"], [1, "list-row", 3, "selected"], [1, "list-empty"], [1, "list-row", 3, "click"], [1, "list-col", "col-seq"], [1, "seq-num"], [1, "list-col", "col-name"], [1, "field-type-icon"], [1, "field-name-text"], [1, "list-col", "col-display-name"], [1, "display-name-text"], [1, "list-col", "col-type"], [1, "type-tag"], [1, "list-col", "col-length"], [1, "length-value"], [1, "length-value", "muted"], [1, "list-col", "col-nullable"], [1, "required-indicator"], [1, "flag-badges"], ["title", "Primary Key", 1, "flag-badge", "pk"], ["title", "Foreign Key", 1, "flag-badge", "fk"], ["title", "Encrypted", 1, "flag-badge", "encrypted"], [1, "flag-badge", "inherited", 3, "title"], [1, "list-col", "col-desc"], [1, "desc-text", 3, "title"], [1, "fa-solid", "fa-key"], [1, "view-toggle"], [1, "toggle-btn", 3, "click"], [1, "depth-selector"], [1, "relationships-graph"], [1, "relationships-list"], [1, "depth-label"], [1, "depth-buttons"], [1, "depth-btn", 3, "active", "title"], [1, "depth-btn", 3, "click", "title"], [3, "stateChange", "openRecord", "focusEntities", "showFilterPanel", "showHeader", "depth"], [1, "relationship-group"], [1, "relationship-group-title"], [1, "fa-solid", "fa-arrow-right-from-bracket"], [1, "relationship-items", "grouped"], [1, "relationship-item-grouped"], [1, "empty-state"], [1, "fa-solid", "fa-arrow-right-to-bracket"], [1, "rel-header"], [1, "rel-icon", "outgoing"], [1, "rel-entity-name"], [1, "rel-fields-chips"], [1, "field-chip", "outgoing", 3, "title"], [1, "field-chip", "outgoing", 3, "click", "title"], [1, "rel-icon", "incoming"], [1, "fa-solid", "fa-arrow-left"], [1, "field-chip", "incoming", 3, "title"], ["title", "Bundled in API", 1, "fa-solid", "fa-box", "bundle-icon"], [1, "empty-state-card"], [1, "fa-solid", "fa-fingerprint", "empty-state-icon"], [1, "organic-key-cards"], [1, "organic-key-card"], [1, "organic-key-card-header"], [1, "organic-key-name"], [1, "fa-solid", "fa-fingerprint", "organic-key-icon"], [1, "organic-key-badges"], [1, "organic-key-badge", "strategy"], [1, "organic-key-badge", "fields"], [1, "organic-key-description"], [1, "organic-key-targets"], [1, "organic-key-target", "clickable"], [1, "organic-key-target", "clickable", 3, "click"], [1, "target-main"], [1, "target-header"], [1, "target-entity-icon"], [1, "target-entity-name"], [1, "fa-solid", "fa-external-link-alt", "target-nav-icon"], [1, "target-match-detail"], [1, "match-type-badge", "direct"], [1, "match-fields"], [1, "match-type-badge", "transitive"], [1, "match-fields", 3, "title"], [1, "organic-key-card", "incoming", "clickable"], [1, "organic-key-card", "incoming", "clickable", 3, "click"], [1, "match-type-badge"], [1, "organic-key-detail-row"], [1, "detail-label"], [1, "detail-value"], [1, "permissions-matrix"], [1, "matrix-table"], [1, "center"], [1, "api-capabilities"], [1, "fa-solid", "fa-plug"], [1, "capability-grid"], [1, "capability-item"], [1, "role-name"], [1, "permission-icon", 3, "ngClass"], [1, "rls-info"], ["title", "Read RLS", 1, "rls-badge"], ["title", "Create RLS", 1, "rls-badge"], ["title", "Update RLS", 1, "rls-badge"], ["title", "Delete RLS", 1, "rls-badge"], [1, "no-rls"], [1, "data-viewer-container"], [3, "entity", "showGridToolbar"], [3, "recordOpened", "addRequested", "entity", "showGridToolbar"], [1, "lineage-diagram"], [1, "lineage-stage", "sources"], [1, "lineage-items"], [1, "lineage-item"], [1, "fa-solid", "fa-keyboard"], [1, "lineage-arrow"], [1, "lineage-stage", "entity-node"], [1, "entity-box"], [1, "lineage-stage", "sinks"], [1, "tracking-config"], [1, "fa-solid", "fa-clock-rotate-left"], [1, "config-grid"], [1, "config-item"], [1, "config-label"], [1, "config-value"], [1, "history-config"], [1, "config-status"], [1, "config-text"], [1, "history-info"], [1, "info-card"], [1, "fa-solid", "fa-info-circle"], [1, "audit-fields-list"], [1, "settings-panel", "isa-settings-panel"], [1, "settings-panel"], [1, "fa-solid", "fa-sliders"], [1, "settings-list"], [1, "fa-solid", "fa-magnifying-glass"], [1, "fts-config"], [1, "fa-solid", "fa-box"], [1, "config-row"], ["title", "Navigate to parent entity", 1, "link"], [1, "muted"], [1, "fa-solid", "fa-circle-check", 2, "color", "var(--mj-brand-primary)"], [1, "fa-solid", "fa-circle-minus", 2, "color", "var(--mj-text-muted)"], ["title", "Navigate to parent entity", 1, "link", 3, "click"], [1, "link", 3, "click"], [1, "fa-solid", "fa-circle-check", 2, "color", "#059669"], [1, "setting-item"], [1, "setting-name"], [1, "setting-value-json"], [1, "setting-value"], [1, "setting-comment"], ["language", "json", "setup", "minimal", 3, "value", "readonly", "lineWrapping"], [1, "config-value", "enabled"], [1, "fa-solid", "fa-circle-check"], [1, "config-value", "code"], [1, "detail-section"], [1, "detail-field-db-name"], [1, "field-description"], [1, "detail-grid"], [1, "detail-item"], [1, "label"], [1, "value", "code"], [1, "value"], [1, "detail-section", "isa-source-section"], ["title", "Navigate to source entity", 1, "value", "link", 3, "click"], [1, "value", "link", 3, "click"], [1, "value-list"], [1, "value-item"], [1, "value-code"], [1, "value-display"], [1, "explorer-loading"], [1, "explorer-error"], [1, "explorer-empty"], ["text", "Loading entity..."], [1, "fa-solid", "fa-exclamation-triangle"]], template: function MJEntityFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
3577
+ i0.ɵɵconditionalCreate(0, MJEntityFormComponentExtended_Conditional_0_Template, 68, 36, "div", 0)(1, MJEntityFormComponentExtended_Conditional_1_Template, 3, 3);
3293
3578
  } if (rf & 2) {
3294
3579
  i0.ɵɵconditional(!ctx.isExplorerLoading && ctx.entity ? 0 : 1);
3295
- } }, dependencies: [i1.NgClass, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, i3.CodeEditorComponent, i4.LoadingComponent, i5.ERDCompositeComponent, i6.EntityViewerComponent, i1.SlicePipe, i1.DecimalPipe, i1.DatePipe], styles: ["\n\n\n\n\n\n\n\n[_nghost-%COMP%] {\n --nav-rail-width: 64px;\n --header-height: 80px;\n --detail-panel-width: 400px;\n\n --bg-primary: var(--mj-bg-surface);\n --bg-secondary: var(--mj-bg-surface-sunken);\n --bg-tertiary: var(--mj-bg-surface-sunken);\n\n --text-primary: var(--mj-text-primary);\n --text-secondary: var(--mj-text-secondary);\n --text-muted: var(--mj-text-muted);\n\n --border-color: var(--mj-border-default);\n --border-light: var(--mj-border-default);\n\n --accent-color: var(--mj-brand-primary);\n --accent-light: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n --accent-dark: var(--mj-brand-primary);\n\n --success-color: var(--mj-status-success);\n --warning-color: var(--mj-status-warning);\n --danger-color: var(--mj-status-error);\n\n --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);\n --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);\n\n --radius-sm: 4px;\n --radius-md: 8px;\n --radius-lg: 12px;\n\n --transition-fast: 150ms ease;\n --transition-normal: 250ms ease;\n\n display: block;\n height: 100%;\n width: 100%;\n}\n\n.entity-explorer[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--bg-secondary);\n overflow: hidden;\n}\n\n\n\n\n\n\n.explorer-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 24px;\n padding: 16px 24px;\n background: var(--bg-primary);\n border-bottom: 1px solid var(--border-color);\n min-height: var(--header-height);\n}\n\n.entity-identity[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n.entity-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border-radius: var(--radius-md);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 20px;\n flex-shrink: 0;\n}\n\n.entity-info[_ngcontent-%COMP%] {\n min-width: 0;\n flex: 1;\n}\n\n.entity-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.entity-name[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 600;\n color: var(--text-primary);\n margin: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: 9999px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-badge.status-active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-badge.status-deprecated[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.status-badge.status-disabled[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.entity-subtitle[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 4px;\n font-size: 13px;\n color: var(--text-secondary);\n}\n\n.schema-table[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--text-muted);\n}\n\n.separator[_ngcontent-%COMP%] {\n color: var(--border-color);\n}\n\n.entity-description[_ngcontent-%COMP%] {\n color: var(--text-secondary);\n}\n\n\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 8px 16px;\n border-radius: var(--radius-md);\n cursor: pointer;\n transition: background var(--transition-fast);\n}\n\n.stat-item[_ngcontent-%COMP%]:hover {\n background: var(--bg-tertiary);\n}\n\n.stat-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n color: var(--text-muted);\n margin-bottom: 4px;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--text-primary);\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n\n\n\n\n.explorer-body[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n overflow: hidden;\n}\n\n\n\n.nav-rail[_ngcontent-%COMP%] {\n width: var(--nav-rail-width);\n background: var(--bg-primary);\n border-right: 1px solid var(--border-color);\n display: flex;\n flex-direction: column;\n padding: 8px 0;\n flex-shrink: 0;\n gap: 2px;\n}\n\n.nav-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 12px 4px 8px 4px;\n margin: 0 8px;\n border: none;\n background: transparent;\n border-radius: var(--radius-md);\n cursor: pointer;\n transition: all var(--transition-fast);\n position: relative;\n color: var(--text-muted);\n min-height: 54px;\n}\n\n.nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n margin-bottom: 4px;\n transition: transform var(--transition-fast);\n}\n\n.nav-label[_ngcontent-%COMP%] {\n font-size: 9px;\n font-weight: 500;\n letter-spacing: 0.2px;\n white-space: nowrap;\n text-align: center;\n line-height: 1;\n opacity: 0.9;\n}\n\n.nav-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: 4px;\n right: 4px;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n background: var(--accent-color);\n color: white;\n font-size: 10px;\n font-weight: 600;\n border-radius: 9999px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n\n.nav-item[_ngcontent-%COMP%]:hover {\n background: var(--bg-tertiary);\n color: var(--text-primary);\n}\n\n.nav-item[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n transform: scale(1.1);\n}\n\n.nav-item.active[_ngcontent-%COMP%] {\n background: var(--accent-light);\n color: var(--accent-color);\n}\n\n.nav-item.active[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n transform: scale(1.05);\n}\n\n.nav-item.active[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: -8px;\n top: 50%;\n transform: translateY(-50%);\n width: 3px;\n height: 28px;\n background: var(--accent-color);\n border-radius: 0 3px 3px 0;\n}\n\n\n\n\n\n\n.main-canvas[_ngcontent-%COMP%] {\n flex: 1;\n overflow: auto;\n transition: margin-right var(--transition-normal);\n display: flex;\n flex-direction: column;\n}\n\n.main-canvas.panel-open[_ngcontent-%COMP%] {\n margin-right: var(--detail-panel-width);\n}\n\n\n\n.section[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 20px;\n}\n\n.section-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n\n\n.search-box[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 16px;\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-md);\n width: 300px;\n}\n\n.search-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--text-muted);\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n flex: 1;\n border: none;\n background: transparent;\n font-size: 14px;\n outline: none;\n color: var(--text-primary);\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder {\n color: var(--text-muted);\n}\n\n\n\n.view-toggle[_ngcontent-%COMP%] {\n display: flex;\n border: 1px solid var(--border-color);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.toggle-btn[_ngcontent-%COMP%] {\n padding: 8px 16px;\n border: none;\n background: var(--bg-primary);\n color: var(--text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n transition: all var(--transition-fast);\n}\n\n.toggle-btn[_ngcontent-%COMP%]:not(:last-child) {\n border-right: 1px solid var(--border-color);\n}\n\n.toggle-btn[_ngcontent-%COMP%]:hover {\n background: var(--bg-tertiary);\n}\n\n.toggle-btn.active[_ngcontent-%COMP%] {\n background: var(--accent-color);\n color: white;\n}\n\n\n\n.depth-selector[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-left: auto;\n}\n\n.depth-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--text-secondary);\n font-weight: 500;\n}\n\n.depth-buttons[_ngcontent-%COMP%] {\n display: flex;\n border: 1px solid var(--border-color);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.depth-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border: none;\n background: var(--bg-primary);\n color: var(--text-secondary);\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n transition: all var(--transition-fast);\n}\n\n.depth-btn[_ngcontent-%COMP%]:not(:last-child) {\n border-right: 1px solid var(--border-color);\n}\n\n.depth-btn[_ngcontent-%COMP%]:hover {\n background: var(--bg-tertiary);\n}\n\n.depth-btn.active[_ngcontent-%COMP%] {\n background: var(--accent-color);\n color: white;\n}\n\n\n\n.header-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.view-mode-toggle[_ngcontent-%COMP%] {\n display: flex;\n border: 1px solid var(--border-color);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.expand-collapse-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.control-btn[_ngcontent-%COMP%] {\n padding: 6px 10px;\n border: 1px solid var(--border-color);\n background: var(--bg-primary);\n color: var(--text-secondary);\n cursor: pointer;\n border-radius: var(--radius-sm);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n transition: all var(--transition-fast);\n}\n\n.control-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--bg-tertiary);\n color: var(--text-primary);\n}\n\n.control-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n\n\n.fields-list-view[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--bg-primary);\n border-radius: var(--radius-lg);\n overflow: hidden;\n}\n\n.list-header[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 50px 1fr 1fr 100px 70px 100px 100px 1fr;\n gap: 12px;\n padding: 12px 20px;\n background: var(--bg-secondary);\n border-bottom: 2px solid var(--border-color);\n position: sticky;\n top: 0;\n z-index: 10;\n}\n\n.list-header[_ngcontent-%COMP%] .list-col[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--text-secondary);\n}\n\n.list-header[_ngcontent-%COMP%] .list-col.sortable[_ngcontent-%COMP%] {\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color var(--transition-fast);\n user-select: none;\n}\n\n.list-header[_ngcontent-%COMP%] .list-col.sortable[_ngcontent-%COMP%]:hover {\n color: var(--accent-color);\n}\n\n.list-header[_ngcontent-%COMP%] .list-col.sortable.sorted[_ngcontent-%COMP%] {\n color: var(--accent-color);\n}\n\n.sort-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.4;\n transition: opacity var(--transition-fast);\n}\n\n.list-col.sortable[_ngcontent-%COMP%]:hover .sort-icon[_ngcontent-%COMP%] {\n opacity: 0.7;\n}\n\n.list-col.sortable.sorted[_ngcontent-%COMP%] .sort-icon[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.list-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n}\n\n.list-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 50px 1fr 1fr 100px 70px 100px 100px 1fr;\n gap: 12px;\n padding: 14px 20px;\n border-bottom: 1px solid var(--border-light);\n cursor: pointer;\n transition: all var(--transition-fast);\n align-items: center;\n}\n\n.list-row[_ngcontent-%COMP%]:hover {\n background: var(--bg-secondary);\n}\n\n.list-row.selected[_ngcontent-%COMP%] {\n background: var(--accent-light);\n border-left: 3px solid var(--accent-color);\n padding-left: 17px;\n}\n\n.list-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n\n\n.col-seq[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.seq-num[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n background: var(--bg-tertiary);\n border-radius: 50%;\n font-size: 11px;\n font-weight: 600;\n color: var(--text-secondary);\n}\n\n.list-row[_ngcontent-%COMP%]:hover .seq-num[_ngcontent-%COMP%], \n.list-row.selected[_ngcontent-%COMP%] .seq-num[_ngcontent-%COMP%] {\n background: var(--accent-color);\n color: white;\n}\n\n.col-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n}\n\n.field-type-icon[_ngcontent-%COMP%] {\n color: var(--accent-color);\n font-size: 16px;\n width: 20px;\n flex-shrink: 0;\n}\n\n.field-name-text[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n}\n\n.col-display-name[_ngcontent-%COMP%] {\n min-width: 0;\n}\n\n.display-name-text[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.type-tag[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 4px 10px;\n background: var(--bg-tertiary);\n border-radius: 20px;\n font-size: 11px;\n font-weight: 500;\n color: var(--text-secondary);\n font-family: 'SF Mono', 'Consolas', monospace;\n}\n\n.length-value[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--text-primary);\n}\n\n.length-value.muted[_ngcontent-%COMP%] {\n color: var(--text-muted);\n}\n\n.required-indicator[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 11px;\n font-weight: 500;\n padding: 4px 8px;\n border-radius: 4px;\n}\n\n.required-indicator.required[_ngcontent-%COMP%] {\n color: var(--danger-color);\n background: color-mix(in srgb, var(--mj-status-error) 10%, transparent);\n}\n\n.required-indicator.required[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--danger-color);\n}\n\n.required-indicator.optional[_ngcontent-%COMP%] {\n color: var(--text-muted);\n background: transparent;\n}\n\n.flag-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.flag-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.flag-badge.pk[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n color: var(--mj-bg-surface);\n}\n\n.flag-badge.fk[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n.flag-badge.encrypted[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n.col-desc[_ngcontent-%COMP%] {\n min-width: 0;\n}\n\n.desc-text[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n}\n\n.list-empty[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: var(--text-muted);\n gap: 12px;\n}\n\n.list-empty[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n opacity: 0.5;\n}\n\n.list-empty[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n\n\n\n.stats-cards[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n}\n\n.stat-card[_ngcontent-%COMP%] {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 16px;\n position: relative;\n transition: all var(--transition-fast);\n}\n\n.stat-card.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.stat-card.clickable[_ngcontent-%COMP%]:hover {\n border-color: var(--accent-color);\n box-shadow: var(--shadow-md);\n transform: translateY(-2px);\n}\n\n.stat-card.clickable[_ngcontent-%COMP%]:hover .stat-card-action[_ngcontent-%COMP%] {\n opacity: 1;\n transform: translateX(0);\n}\n\n.stat-card-action[_ngcontent-%COMP%] {\n position: absolute;\n right: 16px;\n top: 50%;\n transform: translateY(-50%) translateX(-4px);\n color: var(--accent-color);\n opacity: 0;\n transition: all var(--transition-fast);\n}\n\n.stat-card-action[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.stat-card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--text-secondary);\n font-size: 13px;\n margin-bottom: 12px;\n}\n\n.stat-card-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.stat-card-body[_ngcontent-%COMP%] .stat-main[_ngcontent-%COMP%] {\n font-size: 32px;\n font-weight: 700;\n color: var(--text-primary);\n line-height: 1;\n margin-bottom: 8px;\n}\n\n.stat-card-body[_ngcontent-%COMP%] .stat-details[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n font-size: 12px;\n color: var(--text-muted);\n}\n\n\n\n.info-panel[_ngcontent-%COMP%] {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary);\n margin: 0 0 16px 0;\n}\n\n.panel-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--accent-color);\n}\n\n\n\n.capability-tags[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.capability-tag[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 9999px;\n font-size: 12px;\n font-weight: 500;\n}\n\n.capability-tag[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.capability-tag.disabled[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n\n\n.info-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.info-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.info-label[_ngcontent-%COMP%] {\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n}\n\n.info-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-primary);\n}\n\n.info-value.code[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 13px;\n color: var(--accent-dark);\n}\n\n\n\n\n\n\n.fields-content[_ngcontent-%COMP%] {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n overflow: hidden;\n}\n\n.field-groups[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.field-group[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--border-light);\n}\n\n.field-group[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.group-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 20px;\n cursor: pointer;\n transition: background var(--transition-fast);\n user-select: none;\n background: var(--bg-secondary);\n border-left: 3px solid var(--accent-color);\n}\n\n.group-header[_ngcontent-%COMP%]:hover {\n background: var(--bg-tertiary);\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--text-muted);\n width: 16px;\n transition: transform var(--transition-fast);\n}\n\n.group-icon[_ngcontent-%COMP%] {\n font-size: 16px;\n color: var(--accent-color);\n width: 20px;\n text-align: center;\n}\n\n.group-label[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 15px;\n font-weight: 600;\n color: var(--text-primary);\n letter-spacing: 0.01em;\n text-transform: uppercase;\n}\n\n.group-count[_ngcontent-%COMP%] {\n padding: 3px 10px;\n background: var(--accent-light);\n border-radius: 9999px;\n font-size: 12px;\n font-weight: 600;\n color: var(--accent-color);\n}\n\n.group-content[_ngcontent-%COMP%] {\n border-top: 1px solid var(--border-light);\n background: var(--bg-secondary);\n}\n\n.field-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 20px 12px 48px;\n cursor: pointer;\n transition: background var(--transition-fast);\n border-bottom: 1px solid var(--border-light);\n}\n\n.field-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.field-item[_ngcontent-%COMP%]:hover {\n background: var(--accent-light);\n}\n\n.field-item.selected[_ngcontent-%COMP%] {\n background: var(--accent-light);\n border-left: 3px solid var(--accent-color);\n padding-left: 45px;\n}\n\n.field-icon[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n border-radius: var(--radius-sm);\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n color: var(--text-muted);\n flex-shrink: 0;\n}\n\n.field-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.field-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--text-primary);\n}\n\n.field-db-name[_ngcontent-%COMP%] {\n font-size: 11px;\n font-family: 'SF Mono', 'Consolas', monospace;\n color: var(--text-secondary);\n margin-top: 2px;\n}\n\n.field-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 2px;\n font-size: 12px;\n}\n\n.field-type[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Consolas', monospace;\n color: var(--text-muted);\n}\n\n.field-nullable[_ngcontent-%COMP%] {\n color: var(--danger-color);\n}\n\n.field-related[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n color: var(--accent-color);\n cursor: pointer;\n}\n\n.field-related[_ngcontent-%COMP%]:hover {\n text-decoration: underline;\n}\n\n.field-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.badge[_ngcontent-%COMP%] {\n padding: 2px 6px;\n border-radius: var(--radius-sm);\n font-size: 10px;\n font-weight: 600;\n}\n\n.badge.pk[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.badge.fk[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.badge.encrypted[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n\n\n\n\n\n.relationships-graph[_ngcontent-%COMP%] {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n min-height: 600px;\n height: calc(100vh - 280px);\n max-height: 800px;\n display: flex;\n align-items: stretch;\n justify-content: stretch;\n overflow: hidden;\n}\n\n.relationships-graph[_ngcontent-%COMP%] mj-entity-erd[_ngcontent-%COMP%], \n.relationships-graph[_ngcontent-%COMP%] mj-erd-composite[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n flex: 1;\n}\n\n\n\n.relationships-graph[_ngcontent-%COMP%] .erd-splitter[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n}\n\n.relationships-graph[_ngcontent-%COMP%] kendo-splitter-pane[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.relationships-graph[_ngcontent-%COMP%] mj-entity-details[_ngcontent-%COMP%] {\n height: 100%;\n overflow: auto;\n}\n\n.graph-placeholder[_ngcontent-%COMP%] {\n text-align: center;\n color: var(--text-muted);\n}\n\n.graph-placeholder[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.5;\n}\n\n.graph-placeholder[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n}\n\n.graph-placeholder[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%] {\n font-size: 12px;\n margin-top: 8px;\n}\n\n.relationships-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n.relationship-group[_ngcontent-%COMP%] {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n overflow: hidden;\n}\n\n.relationship-group-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 20px;\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary);\n background: var(--bg-tertiary);\n border-bottom: 1px solid var(--border-color);\n}\n\n.relationship-group-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--accent-color);\n}\n\n.relationship-items[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.relationship-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 20px;\n cursor: pointer;\n transition: background var(--transition-fast);\n border-bottom: 1px solid var(--border-light);\n}\n\n.relationship-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.relationship-item[_ngcontent-%COMP%]:hover {\n background: var(--accent-light);\n}\n\n.relationship-item.hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n.rel-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: var(--accent-light);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--accent-color);\n font-size: 12px;\n}\n\n.rel-info[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.rel-entity[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--accent-color);\n cursor: pointer;\n}\n\n.rel-entity[_ngcontent-%COMP%]:hover {\n text-decoration: underline;\n}\n\n.rel-field[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-muted);\n margin-top: 2px;\n}\n\n.rel-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.rel-type[_ngcontent-%COMP%], \n.rel-display-type[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-sm);\n font-size: 11px;\n color: var(--text-muted);\n}\n\n.rel-bundle[_ngcontent-%COMP%] {\n color: var(--success-color);\n}\n\n\n\n.relationship-group-title[_ngcontent-%COMP%] .group-count[_ngcontent-%COMP%] {\n margin-left: auto;\n background: var(--accent-light);\n color: var(--accent-color);\n padding: 2px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.relationship-items.grouped[_ngcontent-%COMP%] {\n padding: 8px 0;\n}\n\n.relationship-item-grouped[_ngcontent-%COMP%] {\n padding: 12px 20px;\n border-bottom: 1px solid var(--border-light);\n}\n\n.relationship-item-grouped[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.rel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 10px;\n}\n\n.rel-icon.outgoing[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.rel-icon.incoming[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.rel-entity-name[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 600;\n color: var(--text-primary);\n}\n\n.rel-fields-chips[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n padding-left: 44px; \n\n}\n\n.field-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 5px 12px;\n border-radius: 16px;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.field-chip[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.field-chip.outgoing[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid var(--mj-brand-primary);\n}\n\n.field-chip.outgoing[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n.field-chip.incoming[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border: 1px solid var(--mj-status-success);\n}\n\n.field-chip.incoming[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-success);\n color: white;\n}\n\n.field-chip[_ngcontent-%COMP%] .bundle-icon[_ngcontent-%COMP%] {\n font-size: 9px;\n margin-left: 2px;\n opacity: 0.8;\n}\n\n\n\n\n\n\n.permissions-matrix[_ngcontent-%COMP%] {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n overflow: hidden;\n}\n\n.matrix-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n\n.matrix-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n.matrix-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 16px;\n text-align: left;\n border-bottom: 1px solid var(--border-light);\n}\n\n.matrix-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--bg-tertiary);\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n}\n\n.matrix-table[_ngcontent-%COMP%] th.center[_ngcontent-%COMP%], \n.matrix-table[_ngcontent-%COMP%] td.center[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.matrix-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--bg-secondary);\n}\n\n.role-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--text-primary);\n}\n\n.permission-icon[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.permission-icon.granted[_ngcontent-%COMP%] {\n color: var(--success-color);\n}\n\n.permission-icon.denied[_ngcontent-%COMP%] {\n color: var(--text-muted);\n}\n\n.rls-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.rls-badge[_ngcontent-%COMP%] {\n width: 20px;\n height: 20px;\n border-radius: var(--radius-sm);\n background: var(--warning-color);\n color: white;\n font-size: 10px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.no-rls[_ngcontent-%COMP%] {\n color: var(--text-muted);\n font-size: 12px;\n}\n\n\n\n.api-capabilities[_ngcontent-%COMP%] {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.capability-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n gap: 12px;\n}\n\n.capability-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-md);\n font-size: 13px;\n color: var(--text-muted);\n}\n\n.capability-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.capability-item.enabled[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.capability-item.enabled[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--success-color);\n}\n\n\n\n\n\n\n.lineage-diagram[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 24px;\n padding: 40px;\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n}\n\n.lineage-stage[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.lineage-stage[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n font-size: 12px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n margin: 0 0 12px 0;\n}\n\n.lineage-items[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.lineage-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-md);\n font-size: 13px;\n color: var(--text-secondary);\n}\n\n.lineage-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--accent-color);\n}\n\n.lineage-arrow[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--text-muted);\n}\n\n.entity-node[_ngcontent-%COMP%] .entity-box[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 24px 32px;\n background: var(--accent-color);\n color: white;\n border-radius: var(--radius-lg);\n font-weight: 600;\n}\n\n.entity-node[_ngcontent-%COMP%] .entity-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n}\n\n.tracking-config[_ngcontent-%COMP%] {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.config-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.config-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-md);\n font-size: 13px;\n color: var(--text-muted);\n}\n\n.config-item.enabled[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.config-item[_ngcontent-%COMP%] .config-label[_ngcontent-%COMP%] {\n color: var(--text-muted);\n}\n\n.config-item[_ngcontent-%COMP%] .config-value[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--text-primary);\n}\n\n\n\n\n\n\n.history-config[_ngcontent-%COMP%] {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.config-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n}\n\n.config-status[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--text-muted);\n margin-top: 2px;\n}\n\n.config-status.enabled[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--success-color);\n}\n\n.config-text[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n display: block;\n font-size: 16px;\n color: var(--text-primary);\n margin-bottom: 4px;\n}\n\n.config-text[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-secondary);\n}\n\n.history-info[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 16px;\n}\n\n.info-card[_ngcontent-%COMP%] {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.info-card[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n color: var(--text-primary);\n margin: 0 0 12px 0;\n}\n\n.info-card[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--accent-color);\n}\n\n.info-card[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-secondary);\n line-height: 1.6;\n margin: 0;\n}\n\n.info-card[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: var(--bg-tertiary);\n padding: 2px 6px;\n border-radius: var(--radius-sm);\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--accent-dark);\n}\n\n.audit-fields-list[_ngcontent-%COMP%] {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.audit-fields-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%] {\n padding: 8px 0;\n font-size: 14px;\n color: var(--text-secondary);\n border-bottom: 1px solid var(--border-light);\n}\n\n.audit-fields-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n\n\n\n\n\n.settings-panel[_ngcontent-%COMP%] {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.settings-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.setting-item[_ngcontent-%COMP%] {\n padding: 12px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-md);\n}\n\n.setting-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--text-primary);\n margin-bottom: 4px;\n}\n\n.setting-value[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--accent-dark);\n word-break: break-all;\n}\n\n.setting-value-json[_ngcontent-%COMP%] {\n margin-top: 8px;\n border-radius: var(--radius-sm);\n overflow: hidden;\n border: 1px solid var(--border-color);\n background: var(--mj-bg-surface-sunken);\n}\n\n.setting-value-json[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n display: block;\n max-height: 300px;\n}\n\n.setting-value-json[_ngcontent-%COMP%] .cm-editor {\n font-size: 12px;\n background: var(--mj-bg-surface-sunken);\n}\n\n.setting-value-json[_ngcontent-%COMP%] .cm-gutters {\n background: var(--mj-bg-surface-sunken);\n border-right: 1px solid var(--border-color);\n}\n\n.setting-comment[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-muted);\n margin-top: 8px;\n}\n\n.fts-config[_ngcontent-%COMP%], \n.settings-section[_ngcontent-%COMP%] .config-grid[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.config-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-row[_ngcontent-%COMP%] .config-label[_ngcontent-%COMP%] {\n width: 100px;\n font-size: 12px;\n color: var(--text-muted);\n}\n\n.config-row[_ngcontent-%COMP%] .config-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-primary);\n}\n\n.config-row[_ngcontent-%COMP%] .config-value.code[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--accent-dark);\n}\n\n.config-row[_ngcontent-%COMP%] .config-value.enabled[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--success-color);\n}\n\n\n\n\n\n\n.detail-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: 0;\n width: var(--detail-panel-width);\n height: 100%;\n background: var(--bg-primary);\n border-left: 1px solid var(--border-color);\n box-shadow: var(--shadow-lg);\n transform: translateX(100%);\n transition: transform var(--transition-normal);\n z-index: 100;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.detail-panel.open[_ngcontent-%COMP%] {\n transform: translateX(0);\n}\n\n.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(--border-color);\n flex-shrink: 0;\n}\n\n.panel-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--text-primary);\n}\n\n.close-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n border-radius: var(--radius-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--text-muted);\n transition: all var(--transition-fast);\n}\n\n.close-btn[_ngcontent-%COMP%]:hover {\n background: var(--bg-tertiary);\n color: var(--text-primary);\n}\n\n.panel-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n.detail-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.detail-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.detail-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--text-primary);\n margin: 0 0 8px 0;\n}\n\n.detail-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n font-size: 12px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n margin: 0 0 12px 0;\n}\n\n.detail-field-db-name[_ngcontent-%COMP%] {\n font-size: 12px;\n font-family: 'SF Mono', 'Consolas', monospace;\n color: var(--text-secondary);\n margin-top: 4px;\n margin-bottom: 4px;\n}\n\n.field-description[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-secondary);\n line-height: 1.5;\n margin: 0;\n}\n\n.detail-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.detail-item[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] {\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n}\n\n.detail-item[_ngcontent-%COMP%] .value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-primary);\n}\n\n.detail-item[_ngcontent-%COMP%] .value.code[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--accent-dark);\n}\n\n.detail-item[_ngcontent-%COMP%] .value.link[_ngcontent-%COMP%] {\n color: var(--accent-color);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.detail-item[_ngcontent-%COMP%] .value.link[_ngcontent-%COMP%]:hover {\n text-decoration: underline;\n}\n\n.value-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.value-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-md);\n font-size: 13px;\n}\n\n.value-code[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 11px;\n color: var(--accent-dark);\n background: var(--bg-primary);\n padding: 2px 6px;\n border-radius: var(--radius-sm);\n}\n\n.value-display[_ngcontent-%COMP%] {\n color: var(--text-primary);\n}\n\n\n\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n text-align: center;\n color: var(--text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-bottom: 12px;\n opacity: 0.5;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n}\n\n\n\n\n\n\n.explorer-loading[_ngcontent-%COMP%], \n.explorer-error[_ngcontent-%COMP%], \n.explorer-empty[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 40px;\n text-align: center;\n color: var(--text-muted);\n}\n\n.explorer-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.explorer-empty[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.5;\n}\n\n.explorer-error[_ngcontent-%COMP%] {\n color: var(--danger-color);\n}\n\n.explorer-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n\n\n\n\n\n\n\n.isa-badge[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n padding: 3px 10px;\n border-radius: 12px;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n cursor: default;\n white-space: nowrap;\n}\n\n.isa-badge.virtual[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.isa-badge.child-type[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.isa-badge.child-type[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 22%, transparent);\n}\n\n.isa-badge.parent-type[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 12%, transparent);\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 25%, transparent);\n}\n\n.isa-badge.overlapping[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, transparent);\n color: var(--mj-status-warning);\n border: 1px solid color-mix(in srgb, var(--mj-status-warning) 25%, transparent);\n}\n\n\n\n.isa-breadcrumb[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n margin-top: 2px;\n padding: 2px 0;\n}\n\n.isa-breadcrumb[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n opacity: 0.7;\n}\n\n\n\n.isa-panel[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.isa-info-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 6px;\n font-size: 13px;\n color: var(--text-primary);\n}\n\n.isa-info-row.virtual-info[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, transparent);\n}\n\n.isa-info-row.virtual-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.isa-info-row[_ngcontent-%COMP%] .code[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Cascadia Code', 'Consolas', monospace;\n font-size: 12px;\n background: color-mix(in srgb, var(--mj-text-primary) 6%, transparent);\n padding: 1px 6px;\n border-radius: 3px;\n color: var(--mj-brand-primary);\n}\n\n\n\n.isa-chain[_ngcontent-%COMP%] {\n padding: 8px 0;\n}\n\n.isa-chain-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n margin-bottom: 8px;\n}\n\n.isa-chain-nodes[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n padding: 6px 0;\n}\n\n.isa-node[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 5px 12px;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n}\n\n.isa-node.current[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n.isa-node.parent[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n}\n\n.isa-arrow[_ngcontent-%COMP%] {\n color: var(--text-muted);\n font-size: 11px;\n}\n\n.isa-inherited-fields[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--text-muted);\n margin-top: 8px;\n padding-top: 8px;\n border-top: 1px solid var(--border-color);\n}\n\n.isa-inherited-fields[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-brand-primary);\n}\n\n\n\n.isa-children[_ngcontent-%COMP%] {\n padding: 8px 0;\n}\n\n.isa-child-list[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n padding: 4px 0;\n}\n\n.isa-child-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 12px;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 20%, transparent);\n}\n\n\n\n.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.clickable[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.isa-node.parent.clickable[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n.isa-child-chip.clickable[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-success) 20%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-success) 35%, transparent);\n}\n\n\n\n.badge.inherited[_ngcontent-%COMP%], \n.flag-badge.inherited[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n font-size: 10px;\n font-weight: 600;\n gap: 3px;\n}\n\n.flag-badge.inherited[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n padding: 1px 6px;\n border-radius: 4px;\n font-size: 10px;\n}\n\n.flag-badge.inherited[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n\n\n.isa-source-section[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n border-radius: 6px;\n padding: 12px;\n margin: -4px -12px 8px;\n}\n\n.isa-source-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.isa-source-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 4px;\n}\n\n\n\n.isa-settings-panel[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.isa-settings-panel[_ngcontent-%COMP%] .link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n cursor: pointer;\n transition: color 0.15s ease;\n}\n\n.isa-settings-panel[_ngcontent-%COMP%] .link[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary);\n text-decoration: underline;\n}\n\n.isa-settings-panel[_ngcontent-%COMP%] .muted[_ngcontent-%COMP%] {\n color: var(--text-muted);\n}\n\n\n\n.isa-field-inspector[_ngcontent-%COMP%] {\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--border-color);\n}\n\n.isa-field-inspector[_ngcontent-%COMP%] > .isa-chain-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.isa-inspector-groups[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-top: 8px;\n}\n\n.isa-inspector-group[_ngcontent-%COMP%] {\n border-radius: 6px;\n padding: 8px 12px;\n border: 1px solid var(--border-color);\n}\n\n.isa-inspector-group.own[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.isa-inspector-group.inherited[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.isa-inspector-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 6px;\n}\n\n.isa-inspector-entity[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 600;\n color: var(--text-primary);\n}\n\n.isa-inspector-count[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--text-muted);\n font-weight: 500;\n}\n\n.isa-inspector-fields[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.isa-inspector-field[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 4px;\n background: color-mix(in srgb, var(--mj-text-primary) 4%, transparent);\n color: var(--text-primary);\n}\n\n.isa-inspector-type[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--text-muted);\n font-family: 'SF Mono', 'Cascadia Code', 'Consolas', monospace;\n}\n\n\n\n.isa-siblings[_ngcontent-%COMP%] {\n padding: 8px 0;\n}\n\n.isa-sibling-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 12px;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent);\n color: var(--mj-status-warning);\n border: 1px solid color-mix(in srgb, var(--mj-status-warning) 20%, transparent);\n}\n\n.isa-sibling-chip.clickable[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-warning) 20%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-warning) 35%, transparent);\n}\n\n\n\n.isa-child-count[_ngcontent-%COMP%] {\n font-size: 11px;\n background: color-mix(in srgb, var(--mj-text-primary) 8%, transparent);\n padding: 1px 6px;\n border-radius: 8px;\n margin-left: 2px;\n font-weight: 600;\n}\n\n.isa-child-count[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n\n\n\n\n.data-section[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n padding: 0;\n overflow: hidden;\n}\n\n.data-viewer-container[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}", ".k-pane[_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin[_ngcontent-%COMP%] {\n margin: 10px;\n}\n\n\na[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin-bottom: 10px;\n}\n\n.k-splitter[_ngcontent-%COMP%] {\n border-width: 0px;\n}\n\n.record-form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] > .form-card[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n\n\n@media (min-width: 1400px) {\n .form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.collapsible-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body[_ngcontent-%COMP%] {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed[_ngcontent-%COMP%] {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n\n.form-card.related-entity[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n\n\n.form-card.search-hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n\n.section-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .search-highlight[_ngcontent-%COMP%] {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge.zero-rows[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n}"], changeDetection: 0 }); }
3580
+ } }, dependencies: [i1.NgClass, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, i3.CodeEditorComponent, i4.LoadingComponent, i5.ERDCompositeComponent, i6.EntityViewerComponent, i1.SlicePipe, i1.DecimalPipe, i1.DatePipe], styles: ["\n\n\n\n\n\n\n\n[_nghost-%COMP%] {\n --nav-rail-width: 64px;\n --header-height: 80px;\n --detail-panel-width: 400px;\n\n --bg-primary: var(--mj-bg-surface);\n --bg-secondary: var(--mj-bg-surface-sunken);\n --bg-tertiary: var(--mj-bg-surface-sunken);\n\n --text-primary: var(--mj-text-primary);\n --text-secondary: var(--mj-text-secondary);\n --text-muted: var(--mj-text-muted);\n\n --border-color: var(--mj-border-default);\n --border-light: var(--mj-border-default);\n\n --accent-color: var(--mj-brand-primary);\n --accent-light: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n --accent-dark: var(--mj-brand-primary);\n\n --success-color: var(--mj-status-success);\n --warning-color: var(--mj-status-warning);\n --danger-color: var(--mj-status-error);\n\n --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);\n --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);\n\n --radius-sm: 4px;\n --radius-md: 8px;\n --radius-lg: 12px;\n\n --transition-fast: 150ms ease;\n --transition-normal: 250ms ease;\n\n display: block;\n height: 100%;\n width: 100%;\n}\n\n.entity-explorer[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--bg-secondary);\n overflow: hidden;\n}\n\n\n\n\n\n\n.explorer-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 24px;\n padding: 16px 24px;\n background: var(--bg-primary);\n border-bottom: 1px solid var(--border-color);\n min-height: var(--header-height);\n}\n\n.entity-identity[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n.entity-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border-radius: var(--radius-md);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 20px;\n flex-shrink: 0;\n}\n\n.entity-info[_ngcontent-%COMP%] {\n min-width: 0;\n flex: 1;\n}\n\n.entity-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.entity-name[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 600;\n color: var(--text-primary);\n margin: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: 9999px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-badge.status-active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-badge.status-deprecated[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.status-badge.status-disabled[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.entity-subtitle[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 4px;\n font-size: 13px;\n color: var(--text-secondary);\n}\n\n.schema-table[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--text-muted);\n}\n\n.separator[_ngcontent-%COMP%] {\n color: var(--border-color);\n}\n\n.entity-description[_ngcontent-%COMP%] {\n color: var(--text-secondary);\n}\n\n\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 8px 16px;\n border-radius: var(--radius-md);\n cursor: pointer;\n transition: background var(--transition-fast);\n}\n\n.stat-item[_ngcontent-%COMP%]:hover {\n background: var(--bg-tertiary);\n}\n\n.stat-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n color: var(--text-muted);\n margin-bottom: 4px;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--text-primary);\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n\n\n\n\n.explorer-body[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n overflow: hidden;\n}\n\n\n\n.nav-rail[_ngcontent-%COMP%] {\n width: var(--nav-rail-width);\n background: var(--bg-primary);\n border-right: 1px solid var(--border-color);\n display: flex;\n flex-direction: column;\n padding: 8px 0;\n flex-shrink: 0;\n gap: 2px;\n}\n\n.nav-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 12px 4px 8px 4px;\n margin: 0 8px;\n border: none;\n background: transparent;\n border-radius: var(--radius-md);\n cursor: pointer;\n transition: all var(--transition-fast);\n position: relative;\n color: var(--text-muted);\n min-height: 54px;\n}\n\n.nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n margin-bottom: 4px;\n transition: transform var(--transition-fast);\n}\n\n.nav-label[_ngcontent-%COMP%] {\n font-size: 9px;\n font-weight: 500;\n letter-spacing: 0.2px;\n white-space: nowrap;\n text-align: center;\n line-height: 1;\n opacity: 0.9;\n}\n\n.nav-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: 4px;\n right: 4px;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n background: var(--accent-color);\n color: white;\n font-size: 10px;\n font-weight: 600;\n border-radius: 9999px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n\n.nav-item[_ngcontent-%COMP%]:hover {\n background: var(--bg-tertiary);\n color: var(--text-primary);\n}\n\n.nav-item[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n transform: scale(1.1);\n}\n\n.nav-item.active[_ngcontent-%COMP%] {\n background: var(--accent-light);\n color: var(--accent-color);\n}\n\n.nav-item.active[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n transform: scale(1.05);\n}\n\n.nav-item.active[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: -8px;\n top: 50%;\n transform: translateY(-50%);\n width: 3px;\n height: 28px;\n background: var(--accent-color);\n border-radius: 0 3px 3px 0;\n}\n\n\n\n\n\n\n.main-canvas[_ngcontent-%COMP%] {\n flex: 1;\n overflow: auto;\n transition: margin-right var(--transition-normal);\n display: flex;\n flex-direction: column;\n}\n\n.main-canvas.panel-open[_ngcontent-%COMP%] {\n margin-right: var(--detail-panel-width);\n}\n\n\n\n.section[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 20px;\n}\n\n.section-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n\n\n.search-box[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 16px;\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-md);\n width: 300px;\n}\n\n.search-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--text-muted);\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n flex: 1;\n border: none;\n background: transparent;\n font-size: 14px;\n outline: none;\n color: var(--text-primary);\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder {\n color: var(--text-muted);\n}\n\n\n\n.view-toggle[_ngcontent-%COMP%] {\n display: flex;\n border: 1px solid var(--border-color);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.toggle-btn[_ngcontent-%COMP%] {\n padding: 8px 16px;\n border: none;\n background: var(--bg-primary);\n color: var(--text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n transition: all var(--transition-fast);\n}\n\n.toggle-btn[_ngcontent-%COMP%]:not(:last-child) {\n border-right: 1px solid var(--border-color);\n}\n\n.toggle-btn[_ngcontent-%COMP%]:hover {\n background: var(--bg-tertiary);\n}\n\n.toggle-btn.active[_ngcontent-%COMP%] {\n background: var(--accent-color);\n color: white;\n}\n\n\n\n.depth-selector[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-left: auto;\n}\n\n.depth-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--text-secondary);\n font-weight: 500;\n}\n\n.depth-buttons[_ngcontent-%COMP%] {\n display: flex;\n border: 1px solid var(--border-color);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.depth-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border: none;\n background: var(--bg-primary);\n color: var(--text-secondary);\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n transition: all var(--transition-fast);\n}\n\n.depth-btn[_ngcontent-%COMP%]:not(:last-child) {\n border-right: 1px solid var(--border-color);\n}\n\n.depth-btn[_ngcontent-%COMP%]:hover {\n background: var(--bg-tertiary);\n}\n\n.depth-btn.active[_ngcontent-%COMP%] {\n background: var(--accent-color);\n color: white;\n}\n\n\n\n.header-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.view-mode-toggle[_ngcontent-%COMP%] {\n display: flex;\n border: 1px solid var(--border-color);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.expand-collapse-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.control-btn[_ngcontent-%COMP%] {\n padding: 6px 10px;\n border: 1px solid var(--border-color);\n background: var(--bg-primary);\n color: var(--text-secondary);\n cursor: pointer;\n border-radius: var(--radius-sm);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n transition: all var(--transition-fast);\n}\n\n.control-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--bg-tertiary);\n color: var(--text-primary);\n}\n\n.control-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n\n\n.fields-list-view[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--bg-primary);\n border-radius: var(--radius-lg);\n overflow: hidden;\n}\n\n.list-header[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 50px 1fr 1fr 100px 70px 100px 100px 1fr;\n gap: 12px;\n padding: 12px 20px;\n background: var(--bg-secondary);\n border-bottom: 2px solid var(--border-color);\n position: sticky;\n top: 0;\n z-index: 10;\n}\n\n.list-header[_ngcontent-%COMP%] .list-col[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--text-secondary);\n}\n\n.list-header[_ngcontent-%COMP%] .list-col.sortable[_ngcontent-%COMP%] {\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color var(--transition-fast);\n user-select: none;\n}\n\n.list-header[_ngcontent-%COMP%] .list-col.sortable[_ngcontent-%COMP%]:hover {\n color: var(--accent-color);\n}\n\n.list-header[_ngcontent-%COMP%] .list-col.sortable.sorted[_ngcontent-%COMP%] {\n color: var(--accent-color);\n}\n\n.sort-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.4;\n transition: opacity var(--transition-fast);\n}\n\n.list-col.sortable[_ngcontent-%COMP%]:hover .sort-icon[_ngcontent-%COMP%] {\n opacity: 0.7;\n}\n\n.list-col.sortable.sorted[_ngcontent-%COMP%] .sort-icon[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.list-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n}\n\n.list-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 50px 1fr 1fr 100px 70px 100px 100px 1fr;\n gap: 12px;\n padding: 14px 20px;\n border-bottom: 1px solid var(--border-light);\n cursor: pointer;\n transition: all var(--transition-fast);\n align-items: center;\n}\n\n.list-row[_ngcontent-%COMP%]:hover {\n background: var(--bg-secondary);\n}\n\n.list-row.selected[_ngcontent-%COMP%] {\n background: var(--accent-light);\n border-left: 3px solid var(--accent-color);\n padding-left: 17px;\n}\n\n.list-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n\n\n.col-seq[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.seq-num[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n background: var(--bg-tertiary);\n border-radius: 50%;\n font-size: 11px;\n font-weight: 600;\n color: var(--text-secondary);\n}\n\n.list-row[_ngcontent-%COMP%]:hover .seq-num[_ngcontent-%COMP%], \n.list-row.selected[_ngcontent-%COMP%] .seq-num[_ngcontent-%COMP%] {\n background: var(--accent-color);\n color: white;\n}\n\n.col-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n}\n\n.field-type-icon[_ngcontent-%COMP%] {\n color: var(--accent-color);\n font-size: 16px;\n width: 20px;\n flex-shrink: 0;\n}\n\n.field-name-text[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n}\n\n.col-display-name[_ngcontent-%COMP%] {\n min-width: 0;\n}\n\n.display-name-text[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.type-tag[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 4px 10px;\n background: var(--bg-tertiary);\n border-radius: 20px;\n font-size: 11px;\n font-weight: 500;\n color: var(--text-secondary);\n font-family: 'SF Mono', 'Consolas', monospace;\n}\n\n.length-value[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--text-primary);\n}\n\n.length-value.muted[_ngcontent-%COMP%] {\n color: var(--text-muted);\n}\n\n.required-indicator[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 11px;\n font-weight: 500;\n padding: 4px 8px;\n border-radius: 4px;\n}\n\n.required-indicator.required[_ngcontent-%COMP%] {\n color: var(--danger-color);\n background: color-mix(in srgb, var(--mj-status-error) 10%, transparent);\n}\n\n.required-indicator.required[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--danger-color);\n}\n\n.required-indicator.optional[_ngcontent-%COMP%] {\n color: var(--text-muted);\n background: transparent;\n}\n\n.flag-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.flag-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.flag-badge.pk[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n color: var(--mj-bg-surface);\n}\n\n.flag-badge.fk[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n.flag-badge.encrypted[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n.col-desc[_ngcontent-%COMP%] {\n min-width: 0;\n}\n\n.desc-text[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n}\n\n.list-empty[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: var(--text-muted);\n gap: 12px;\n}\n\n.list-empty[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n opacity: 0.5;\n}\n\n.list-empty[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n\n\n\n.stats-cards[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n}\n\n.stat-card[_ngcontent-%COMP%] {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 16px;\n position: relative;\n transition: all var(--transition-fast);\n}\n\n.stat-card.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.stat-card.clickable[_ngcontent-%COMP%]:hover {\n border-color: var(--accent-color);\n box-shadow: var(--shadow-md);\n transform: translateY(-2px);\n}\n\n.stat-card.clickable[_ngcontent-%COMP%]:hover .stat-card-action[_ngcontent-%COMP%] {\n opacity: 1;\n transform: translateX(0);\n}\n\n.stat-card-action[_ngcontent-%COMP%] {\n position: absolute;\n right: 16px;\n top: 50%;\n transform: translateY(-50%) translateX(-4px);\n color: var(--accent-color);\n opacity: 0;\n transition: all var(--transition-fast);\n}\n\n.stat-card-action[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.stat-card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--text-secondary);\n font-size: 13px;\n margin-bottom: 12px;\n}\n\n.stat-card-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.stat-card-body[_ngcontent-%COMP%] .stat-main[_ngcontent-%COMP%] {\n font-size: 32px;\n font-weight: 700;\n color: var(--text-primary);\n line-height: 1;\n margin-bottom: 8px;\n}\n\n.stat-card-body[_ngcontent-%COMP%] .stat-details[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n font-size: 12px;\n color: var(--text-muted);\n}\n\n\n\n.info-panel[_ngcontent-%COMP%] {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary);\n margin: 0 0 16px 0;\n}\n\n.panel-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--accent-color);\n}\n\n\n\n.capability-tags[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.capability-tag[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 9999px;\n font-size: 12px;\n font-weight: 500;\n}\n\n.capability-tag[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.capability-tag.disabled[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n\n\n.info-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.info-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.info-label[_ngcontent-%COMP%] {\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n}\n\n.info-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-primary);\n}\n\n.info-value.code[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 13px;\n color: var(--accent-dark);\n}\n\n\n\n\n\n\n.fields-content[_ngcontent-%COMP%] {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n overflow: hidden;\n}\n\n.field-groups[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.field-group[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--border-light);\n}\n\n.field-group[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.group-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 20px;\n cursor: pointer;\n transition: background var(--transition-fast);\n user-select: none;\n background: var(--bg-secondary);\n border-left: 3px solid var(--accent-color);\n}\n\n.group-header[_ngcontent-%COMP%]:hover {\n background: var(--bg-tertiary);\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--text-muted);\n width: 16px;\n transition: transform var(--transition-fast);\n}\n\n.group-icon[_ngcontent-%COMP%] {\n font-size: 16px;\n color: var(--accent-color);\n width: 20px;\n text-align: center;\n}\n\n.group-label[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 15px;\n font-weight: 600;\n color: var(--text-primary);\n letter-spacing: 0.01em;\n text-transform: uppercase;\n}\n\n.group-count[_ngcontent-%COMP%] {\n padding: 3px 10px;\n background: var(--accent-light);\n border-radius: 9999px;\n font-size: 12px;\n font-weight: 600;\n color: var(--accent-color);\n}\n\n.group-content[_ngcontent-%COMP%] {\n border-top: 1px solid var(--border-light);\n background: var(--bg-secondary);\n}\n\n.field-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 20px 12px 48px;\n cursor: pointer;\n transition: background var(--transition-fast);\n border-bottom: 1px solid var(--border-light);\n}\n\n.field-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.field-item[_ngcontent-%COMP%]:hover {\n background: var(--accent-light);\n}\n\n.field-item.selected[_ngcontent-%COMP%] {\n background: var(--accent-light);\n border-left: 3px solid var(--accent-color);\n padding-left: 45px;\n}\n\n.field-icon[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n border-radius: var(--radius-sm);\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n color: var(--text-muted);\n flex-shrink: 0;\n}\n\n.field-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.field-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--text-primary);\n}\n\n.field-db-name[_ngcontent-%COMP%] {\n font-size: 11px;\n font-family: 'SF Mono', 'Consolas', monospace;\n color: var(--text-secondary);\n margin-top: 2px;\n}\n\n.field-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 2px;\n font-size: 12px;\n}\n\n.field-type[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Consolas', monospace;\n color: var(--text-muted);\n}\n\n.field-nullable[_ngcontent-%COMP%] {\n color: var(--danger-color);\n}\n\n.field-related[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n color: var(--accent-color);\n cursor: pointer;\n}\n\n.field-related[_ngcontent-%COMP%]:hover {\n text-decoration: underline;\n}\n\n.field-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.badge[_ngcontent-%COMP%] {\n padding: 2px 6px;\n border-radius: var(--radius-sm);\n font-size: 10px;\n font-weight: 600;\n}\n\n.badge.pk[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.badge.fk[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.badge.encrypted[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n\n\n\n\n\n.relationships-graph[_ngcontent-%COMP%] {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n min-height: 600px;\n height: calc(100vh - 280px);\n max-height: 800px;\n display: flex;\n align-items: stretch;\n justify-content: stretch;\n overflow: hidden;\n}\n\n.relationships-graph[_ngcontent-%COMP%] mj-entity-erd[_ngcontent-%COMP%], \n.relationships-graph[_ngcontent-%COMP%] mj-erd-composite[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n flex: 1;\n}\n\n\n\n.relationships-graph[_ngcontent-%COMP%] .erd-splitter[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n}\n\n.relationships-graph[_ngcontent-%COMP%] kendo-splitter-pane[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.relationships-graph[_ngcontent-%COMP%] mj-entity-details[_ngcontent-%COMP%] {\n height: 100%;\n overflow: auto;\n}\n\n.graph-placeholder[_ngcontent-%COMP%] {\n text-align: center;\n color: var(--text-muted);\n}\n\n.graph-placeholder[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.5;\n}\n\n.graph-placeholder[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n}\n\n.graph-placeholder[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%] {\n font-size: 12px;\n margin-top: 8px;\n}\n\n.relationships-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n.relationship-group[_ngcontent-%COMP%] {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n overflow: hidden;\n}\n\n.relationship-group-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 20px;\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary);\n background: var(--bg-tertiary);\n border-bottom: 1px solid var(--border-color);\n}\n\n.relationship-group-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--accent-color);\n}\n\n.relationship-items[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.relationship-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 20px;\n cursor: pointer;\n transition: background var(--transition-fast);\n border-bottom: 1px solid var(--border-light);\n}\n\n.relationship-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.relationship-item[_ngcontent-%COMP%]:hover {\n background: var(--accent-light);\n}\n\n.relationship-item.hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n.rel-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: var(--accent-light);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--accent-color);\n font-size: 12px;\n}\n\n.rel-info[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.rel-entity[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--accent-color);\n cursor: pointer;\n}\n\n.rel-entity[_ngcontent-%COMP%]:hover {\n text-decoration: underline;\n}\n\n.rel-field[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-muted);\n margin-top: 2px;\n}\n\n.rel-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.rel-type[_ngcontent-%COMP%], \n.rel-display-type[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-sm);\n font-size: 11px;\n color: var(--text-muted);\n}\n\n.rel-bundle[_ngcontent-%COMP%] {\n color: var(--success-color);\n}\n\n\n\n.relationship-group-title[_ngcontent-%COMP%] .group-count[_ngcontent-%COMP%] {\n margin-left: auto;\n background: var(--accent-light);\n color: var(--accent-color);\n padding: 2px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.relationship-items.grouped[_ngcontent-%COMP%] {\n padding: 8px 0;\n}\n\n.relationship-item-grouped[_ngcontent-%COMP%] {\n padding: 12px 20px;\n border-bottom: 1px solid var(--border-light);\n}\n\n.relationship-item-grouped[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.rel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 10px;\n}\n\n.rel-icon.outgoing[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.rel-icon.incoming[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.rel-entity-name[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 600;\n color: var(--text-primary);\n}\n\n.rel-fields-chips[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n padding-left: 44px; \n\n}\n\n.field-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 5px 12px;\n border-radius: 16px;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.field-chip[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.field-chip.outgoing[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid var(--mj-brand-primary);\n}\n\n.field-chip.outgoing[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n.field-chip.incoming[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border: 1px solid var(--mj-status-success);\n}\n\n.field-chip.incoming[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-success);\n color: white;\n}\n\n.field-chip[_ngcontent-%COMP%] .bundle-icon[_ngcontent-%COMP%] {\n font-size: 9px;\n margin-left: 2px;\n opacity: 0.8;\n}\n\n\n\n\n\n\n.permissions-matrix[_ngcontent-%COMP%] {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n overflow: hidden;\n}\n\n.matrix-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n\n.matrix-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n.matrix-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 16px;\n text-align: left;\n border-bottom: 1px solid var(--border-light);\n}\n\n.matrix-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--bg-tertiary);\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n}\n\n.matrix-table[_ngcontent-%COMP%] th.center[_ngcontent-%COMP%], \n.matrix-table[_ngcontent-%COMP%] td.center[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.matrix-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--bg-secondary);\n}\n\n.role-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--text-primary);\n}\n\n.permission-icon[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.permission-icon.granted[_ngcontent-%COMP%] {\n color: var(--success-color);\n}\n\n.permission-icon.denied[_ngcontent-%COMP%] {\n color: var(--text-muted);\n}\n\n.rls-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.rls-badge[_ngcontent-%COMP%] {\n width: 20px;\n height: 20px;\n border-radius: var(--radius-sm);\n background: var(--warning-color);\n color: white;\n font-size: 10px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.no-rls[_ngcontent-%COMP%] {\n color: var(--text-muted);\n font-size: 12px;\n}\n\n\n\n.api-capabilities[_ngcontent-%COMP%] {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.capability-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n gap: 12px;\n}\n\n.capability-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-md);\n font-size: 13px;\n color: var(--text-muted);\n}\n\n.capability-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.capability-item.enabled[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.capability-item.enabled[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--success-color);\n}\n\n\n\n\n\n\n.lineage-diagram[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 24px;\n padding: 40px;\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n}\n\n.lineage-stage[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.lineage-stage[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n font-size: 12px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n margin: 0 0 12px 0;\n}\n\n.lineage-items[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.lineage-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-md);\n font-size: 13px;\n color: var(--text-secondary);\n}\n\n.lineage-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--accent-color);\n}\n\n.lineage-arrow[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--text-muted);\n}\n\n.entity-node[_ngcontent-%COMP%] .entity-box[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 24px 32px;\n background: var(--accent-color);\n color: white;\n border-radius: var(--radius-lg);\n font-weight: 600;\n}\n\n.entity-node[_ngcontent-%COMP%] .entity-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n}\n\n.tracking-config[_ngcontent-%COMP%] {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.config-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.config-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-md);\n font-size: 13px;\n color: var(--text-muted);\n}\n\n.config-item.enabled[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.config-item[_ngcontent-%COMP%] .config-label[_ngcontent-%COMP%] {\n color: var(--text-muted);\n}\n\n.config-item[_ngcontent-%COMP%] .config-value[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--text-primary);\n}\n\n\n\n\n\n\n.history-config[_ngcontent-%COMP%] {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.config-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n}\n\n.config-status[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--text-muted);\n margin-top: 2px;\n}\n\n.config-status.enabled[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--success-color);\n}\n\n.config-text[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n display: block;\n font-size: 16px;\n color: var(--text-primary);\n margin-bottom: 4px;\n}\n\n.config-text[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-secondary);\n}\n\n.history-info[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 16px;\n}\n\n.info-card[_ngcontent-%COMP%] {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.info-card[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n color: var(--text-primary);\n margin: 0 0 12px 0;\n}\n\n.info-card[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--accent-color);\n}\n\n.info-card[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-secondary);\n line-height: 1.6;\n margin: 0;\n}\n\n.info-card[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: var(--bg-tertiary);\n padding: 2px 6px;\n border-radius: var(--radius-sm);\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--accent-dark);\n}\n\n.audit-fields-list[_ngcontent-%COMP%] {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.audit-fields-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%] {\n padding: 8px 0;\n font-size: 14px;\n color: var(--text-secondary);\n border-bottom: 1px solid var(--border-light);\n}\n\n.audit-fields-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n\n\n\n\n\n.settings-panel[_ngcontent-%COMP%] {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.settings-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.setting-item[_ngcontent-%COMP%] {\n padding: 12px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-md);\n}\n\n.setting-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--text-primary);\n margin-bottom: 4px;\n}\n\n.setting-value[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--accent-dark);\n word-break: break-all;\n}\n\n.setting-value-json[_ngcontent-%COMP%] {\n margin-top: 8px;\n border-radius: var(--radius-sm);\n overflow: hidden;\n border: 1px solid var(--border-color);\n background: var(--mj-bg-surface-sunken);\n}\n\n.setting-value-json[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n display: block;\n max-height: 300px;\n}\n\n.setting-value-json[_ngcontent-%COMP%] .cm-editor {\n font-size: 12px;\n background: var(--mj-bg-surface-sunken);\n}\n\n.setting-value-json[_ngcontent-%COMP%] .cm-gutters {\n background: var(--mj-bg-surface-sunken);\n border-right: 1px solid var(--border-color);\n}\n\n.setting-comment[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-muted);\n margin-top: 8px;\n}\n\n.fts-config[_ngcontent-%COMP%], \n.settings-section[_ngcontent-%COMP%] .config-grid[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.config-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-row[_ngcontent-%COMP%] .config-label[_ngcontent-%COMP%] {\n width: 100px;\n font-size: 12px;\n color: var(--text-muted);\n}\n\n.config-row[_ngcontent-%COMP%] .config-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-primary);\n}\n\n.config-row[_ngcontent-%COMP%] .config-value.code[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--accent-dark);\n}\n\n.config-row[_ngcontent-%COMP%] .config-value.enabled[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--success-color);\n}\n\n\n\n\n\n\n.detail-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: 0;\n width: var(--detail-panel-width);\n height: 100%;\n background: var(--bg-primary);\n border-left: 1px solid var(--border-color);\n box-shadow: var(--shadow-lg);\n transform: translateX(100%);\n transition: transform var(--transition-normal);\n z-index: 100;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.detail-panel.open[_ngcontent-%COMP%] {\n transform: translateX(0);\n}\n\n.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(--border-color);\n flex-shrink: 0;\n}\n\n.panel-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--text-primary);\n}\n\n.close-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n border-radius: var(--radius-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--text-muted);\n transition: all var(--transition-fast);\n}\n\n.close-btn[_ngcontent-%COMP%]:hover {\n background: var(--bg-tertiary);\n color: var(--text-primary);\n}\n\n.panel-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n.detail-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.detail-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.detail-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--text-primary);\n margin: 0 0 8px 0;\n}\n\n.detail-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n font-size: 12px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n margin: 0 0 12px 0;\n}\n\n.detail-field-db-name[_ngcontent-%COMP%] {\n font-size: 12px;\n font-family: 'SF Mono', 'Consolas', monospace;\n color: var(--text-secondary);\n margin-top: 4px;\n margin-bottom: 4px;\n}\n\n.field-description[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-secondary);\n line-height: 1.5;\n margin: 0;\n}\n\n.detail-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.detail-item[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] {\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n}\n\n.detail-item[_ngcontent-%COMP%] .value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-primary);\n}\n\n.detail-item[_ngcontent-%COMP%] .value.code[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--accent-dark);\n}\n\n.detail-item[_ngcontent-%COMP%] .value.link[_ngcontent-%COMP%] {\n color: var(--accent-color);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.detail-item[_ngcontent-%COMP%] .value.link[_ngcontent-%COMP%]:hover {\n text-decoration: underline;\n}\n\n.value-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.value-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-md);\n font-size: 13px;\n}\n\n.value-code[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 11px;\n color: var(--accent-dark);\n background: var(--bg-primary);\n padding: 2px 6px;\n border-radius: var(--radius-sm);\n}\n\n.value-display[_ngcontent-%COMP%] {\n color: var(--text-primary);\n}\n\n\n\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n text-align: center;\n color: var(--text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-bottom: 12px;\n opacity: 0.5;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n}\n\n\n\n\n\n\n.explorer-loading[_ngcontent-%COMP%], \n.explorer-error[_ngcontent-%COMP%], \n.explorer-empty[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 40px;\n text-align: center;\n color: var(--text-muted);\n}\n\n.explorer-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.explorer-empty[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.5;\n}\n\n.explorer-error[_ngcontent-%COMP%] {\n color: var(--danger-color);\n}\n\n.explorer-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n\n\n\n\n\n\n\n.isa-badge[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n padding: 3px 10px;\n border-radius: 12px;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n cursor: default;\n white-space: nowrap;\n}\n\n.isa-badge.virtual[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.isa-badge.child-type[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.isa-badge.child-type[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 22%, transparent);\n}\n\n.isa-badge.parent-type[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 12%, transparent);\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 25%, transparent);\n}\n\n.isa-badge.overlapping[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, transparent);\n color: var(--mj-status-warning);\n border: 1px solid color-mix(in srgb, var(--mj-status-warning) 25%, transparent);\n}\n\n\n\n.isa-breadcrumb[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n margin-top: 2px;\n padding: 2px 0;\n}\n\n.isa-breadcrumb[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n opacity: 0.7;\n}\n\n\n\n.isa-panel[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.isa-info-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 6px;\n font-size: 13px;\n color: var(--text-primary);\n}\n\n.isa-info-row.virtual-info[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, transparent);\n}\n\n.isa-info-row.virtual-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.isa-info-row[_ngcontent-%COMP%] .code[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Cascadia Code', 'Consolas', monospace;\n font-size: 12px;\n background: color-mix(in srgb, var(--mj-text-primary) 6%, transparent);\n padding: 1px 6px;\n border-radius: 3px;\n color: var(--mj-brand-primary);\n}\n\n\n\n.isa-chain[_ngcontent-%COMP%] {\n padding: 8px 0;\n}\n\n.isa-chain-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n margin-bottom: 8px;\n}\n\n.isa-chain-nodes[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n padding: 6px 0;\n}\n\n.isa-node[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 5px 12px;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n}\n\n.isa-node.current[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n.isa-node.parent[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n}\n\n.isa-arrow[_ngcontent-%COMP%] {\n color: var(--text-muted);\n font-size: 11px;\n}\n\n.isa-inherited-fields[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--text-muted);\n margin-top: 8px;\n padding-top: 8px;\n border-top: 1px solid var(--border-color);\n}\n\n.isa-inherited-fields[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-brand-primary);\n}\n\n\n\n.isa-children[_ngcontent-%COMP%] {\n padding: 8px 0;\n}\n\n.isa-child-list[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n padding: 4px 0;\n}\n\n.isa-child-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 12px;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 20%, transparent);\n}\n\n\n\n.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.clickable[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.isa-node.parent.clickable[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n.isa-child-chip.clickable[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-success) 20%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-success) 35%, transparent);\n}\n\n\n\n.badge.inherited[_ngcontent-%COMP%], \n.flag-badge.inherited[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n font-size: 10px;\n font-weight: 600;\n gap: 3px;\n}\n\n.flag-badge.inherited[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n padding: 1px 6px;\n border-radius: 4px;\n font-size: 10px;\n}\n\n.flag-badge.inherited[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n\n\n.isa-source-section[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n border-radius: 6px;\n padding: 12px;\n margin: -4px -12px 8px;\n}\n\n.isa-source-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.isa-source-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 4px;\n}\n\n\n\n.isa-settings-panel[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.isa-settings-panel[_ngcontent-%COMP%] .link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n cursor: pointer;\n transition: color 0.15s ease;\n}\n\n.isa-settings-panel[_ngcontent-%COMP%] .link[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary);\n text-decoration: underline;\n}\n\n.isa-settings-panel[_ngcontent-%COMP%] .muted[_ngcontent-%COMP%] {\n color: var(--text-muted);\n}\n\n\n\n.isa-field-inspector[_ngcontent-%COMP%] {\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--border-color);\n}\n\n.isa-field-inspector[_ngcontent-%COMP%] > .isa-chain-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.isa-inspector-groups[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-top: 8px;\n}\n\n.isa-inspector-group[_ngcontent-%COMP%] {\n border-radius: 6px;\n padding: 8px 12px;\n border: 1px solid var(--border-color);\n}\n\n.isa-inspector-group.own[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.isa-inspector-group.inherited[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.isa-inspector-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 6px;\n}\n\n.isa-inspector-entity[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 600;\n color: var(--text-primary);\n}\n\n.isa-inspector-count[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--text-muted);\n font-weight: 500;\n}\n\n.isa-inspector-fields[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.isa-inspector-field[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 4px;\n background: color-mix(in srgb, var(--mj-text-primary) 4%, transparent);\n color: var(--text-primary);\n}\n\n.isa-inspector-type[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--text-muted);\n font-family: 'SF Mono', 'Cascadia Code', 'Consolas', monospace;\n}\n\n\n\n.isa-siblings[_ngcontent-%COMP%] {\n padding: 8px 0;\n}\n\n.isa-sibling-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 12px;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent);\n color: var(--mj-status-warning);\n border: 1px solid color-mix(in srgb, var(--mj-status-warning) 20%, transparent);\n}\n\n.isa-sibling-chip.clickable[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-warning) 20%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-warning) 35%, transparent);\n}\n\n\n\n.isa-child-count[_ngcontent-%COMP%] {\n font-size: 11px;\n background: color-mix(in srgb, var(--mj-text-primary) 8%, transparent);\n padding: 1px 6px;\n border-radius: 8px;\n margin-left: 2px;\n font-weight: 600;\n}\n\n.isa-child-count[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n\n\n\n\n.data-section[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n padding: 0;\n overflow: hidden;\n}\n\n.data-viewer-container[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n\n\n\n\n\n.organic-key-cards[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 4px 0;\n}\n\n.organic-key-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 16px;\n transition: border-color 0.15s ease;\n}\n\n.organic-key-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n}\n\n.organic-key-card.incoming[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.organic-key-card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.organic-key-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.organic-key-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.organic-key-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n}\n\n.organic-key-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 2px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n font-family: 'SF Mono', 'Fira Code', monospace;\n}\n\n.organic-key-badge.strategy[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.organic-key-badge.fields[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-info) 10%, var(--mj-bg-surface));\n color: var(--mj-status-info-text, var(--mj-status-info));\n}\n\n.organic-key-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin: 0 0 12px 0;\n line-height: 1.4;\n}\n\n.organic-key-targets[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.organic-key-target[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 10px 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n font-size: 13px;\n transition: background 0.15s ease, border-color 0.15s ease;\n}\n\n.organic-key-target.clickable[_ngcontent-%COMP%], \n.organic-key-card.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.organic-key-target.clickable[_ngcontent-%COMP%]:hover, \n.organic-key-card.clickable[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.target-main[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n flex: 1;\n}\n\n.target-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.target-entity-icon[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n width: 16px;\n text-align: center;\n}\n\n.target-entity-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n min-width: 0;\n}\n\n.target-nav-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-disabled);\n margin-left: 4px;\n transition: color 0.15s ease;\n}\n\n.organic-key-target.clickable[_ngcontent-%COMP%]:hover .target-nav-icon[_ngcontent-%COMP%], \n.organic-key-card.clickable[_ngcontent-%COMP%]:hover .target-nav-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.target-match-detail[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding-left: 24px;\n}\n\n.match-type-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 2px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.match-type-badge.direct[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success-text, var(--mj-status-success));\n}\n\n.match-type-badge.transitive[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n color: var(--mj-status-warning-text, var(--mj-status-warning));\n}\n\n.match-fields[_ngcontent-%COMP%] {\n font-size: 11px;\n font-family: 'SF Mono', 'Fira Code', monospace;\n color: var(--mj-text-secondary);\n}\n\n.organic-key-detail-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n font-size: 12px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-weight: 500;\n flex-shrink: 0;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', 'Fira Code', monospace;\n}\n\n.empty-state-card[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.empty-state-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.empty-state-card[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin: 0 0 8px 0;\n}\n\n.empty-state-card[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 13px;\n line-height: 1.5;\n max-width: 500px;\n margin: 0;\n}", ".k-pane[_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin[_ngcontent-%COMP%] {\n margin: 10px;\n}\n\n\na[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin-bottom: 10px;\n}\n\n.k-splitter[_ngcontent-%COMP%] {\n border-width: 0px;\n}\n\n.record-form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] > .form-card[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n\n\n@media (min-width: 1400px) {\n .form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.collapsible-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body[_ngcontent-%COMP%] {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed[_ngcontent-%COMP%] {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n\n.form-card.related-entity[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n\n\n.form-card.search-hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n\n.section-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .search-highlight[_ngcontent-%COMP%] {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge.zero-rows[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n}"], changeDetection: 0 }); }
3296
3581
  };
3297
3582
  MJEntityFormComponentExtended = __decorate([
3298
3583
  RegisterClass(BaseFormComponent, 'MJ: Entities')
@@ -3300,7 +3585,7 @@ MJEntityFormComponentExtended = __decorate([
3300
3585
  export { MJEntityFormComponentExtended };
3301
3586
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJEntityFormComponentExtended, [{
3302
3587
  type: Component,
3303
- args: [{ standalone: false, selector: 'mj-entity-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!isExplorerLoading && entity) {\n <div class=\"entity-explorer\">\n <!-- ============================================================ -->\n <!-- HEADER BAR -->\n <!-- ============================================================ -->\n <header class=\"explorer-header\">\n <div class=\"entity-identity\">\n <div class=\"entity-icon\" [style.background-color]=\"'var(--mj-brand-primary)'\">\n <i [class]=\"entityIcon\"></i>\n </div>\n <div class=\"entity-info\">\n <div class=\"entity-title-row\">\n <h1 class=\"entity-name\">{{ entityDisplayName }}</h1>\n <span class=\"status-badge\" [ngClass]=\"statusClass\">\n {{ entity.Status }}\n </span>\n @if (IsVirtualEntity) {\n <span class=\"status-badge isa-badge virtual\">\n <i class=\"fa-solid fa-eye\"></i> Virtual\n </span>\n }\n @if (IsChildType) {\n <span class=\"status-badge isa-badge child-type\" (click)=\"NavigateToEntity(ParentChain[0])\" title=\"Click to navigate to parent entity\">\n <i class=\"fa-solid fa-arrow-up\"></i> IS-A {{ ParentChain[0]?.Name }}\n </span>\n }\n @if (IsParentType) {\n <span class=\"status-badge isa-badge parent-type\">\n <i class=\"fa-solid fa-sitemap\"></i> {{ ChildEntities.length }} child type{{ ChildEntities.length !== 1 ? 's' : '' }}\n </span>\n @if (HasOverlappingSubtypes) {\n <span class=\"status-badge isa-badge overlapping\" title=\"Multiple child types can coexist for a single parent record\">\n <i class=\"fa-solid fa-clone\"></i> Overlapping Subtypes\n </span>\n }\n }\n </div>\n @if (IsChildType) {\n <div class=\"isa-breadcrumb\">\n <i class=\"fa-solid fa-layer-group\"></i>\n {{ IsaBreadcrumb }}\n </div>\n }\n <div class=\"entity-subtitle\">\n <span class=\"schema-table\">{{ entity.SchemaName }}.{{ entity.BaseTable }}</span>\n <span class=\"separator\">|</span>\n @if (entity.Description) {\n <span class=\"entity-description\" [title]=\"entity.Description\">\n {{ entity.Description | slice:0:80 }}{{ entity.Description.length > 80 ? '...' : '' }}\n </span>\n }\n </div>\n </div>\n </div>\n <div class=\"header-stats\">\n <div class=\"stat-item\" (click)=\"setActiveSection('fields')\">\n <i class=\"fa-solid fa-table-columns\"></i>\n <span class=\"stat-value\">{{ stats.fieldCount }}</span>\n <span class=\"stat-label\">Fields</span>\n </div>\n <div class=\"stat-item\" (click)=\"setActiveSection('relationships')\">\n <i class=\"fa-solid fa-link\"></i>\n <span class=\"stat-value\">{{ stats.relationshipCount }}</span>\n <span class=\"stat-label\">Relations</span>\n </div>\n <div class=\"stat-item\" (click)=\"setActiveSection('permissions')\">\n <i class=\"fa-solid fa-shield-halved\"></i>\n <span class=\"stat-value\">{{ stats.permissionCount }}</span>\n <span class=\"stat-label\">Roles</span>\n </div>\n <div class=\"stat-item\" (click)=\"setActiveSection('data')\">\n <i class=\"fa-solid fa-database\"></i>\n @if (!isRowCountLoading) {\n <span class=\"stat-value\">{{ formattedRowCount }}</span>\n }\n @if (isRowCountLoading) {\n <span class=\"stat-value loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n </span>\n }\n <span class=\"stat-label\">Rows</span>\n </div>\n </div>\n </header>\n <!-- ============================================================ -->\n <!-- MAIN CONTENT AREA -->\n <!-- ============================================================ -->\n <div class=\"explorer-body\">\n <!-- Navigation Rail -->\n <nav class=\"nav-rail\">\n @for (item of navItems; track item) {\n <button\n class=\"nav-item\"\n [class.active]=\"activeSection === item.id\"\n (click)=\"setActiveSection(item.id)\"\n [title]=\"item.label\">\n <i [class]=\"item.icon\"></i>\n <span class=\"nav-label\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"nav-badge\">{{ item.badge }}</span>\n }\n </button>\n }\n </nav>\n <!-- Main Canvas -->\n <main class=\"main-canvas\" [class.panel-open]=\"detailPanelOpen\">\n <!-- ============================================================ -->\n <!-- OVERVIEW SECTION -->\n <!-- ============================================================ -->\n @if (activeSection === 'overview') {\n <section class=\"section overview-section\">\n <div class=\"section-content\">\n <!-- Stats Cards Row - Clickable to navigate to sections -->\n <div class=\"stats-cards\">\n <div class=\"stat-card clickable\" (click)=\"setActiveSection('fields')\" title=\"View all fields\">\n <div class=\"stat-card-header\">\n <i class=\"fa-solid fa-table-cells\"></i>\n <span>Fields</span>\n </div>\n <div class=\"stat-card-body\">\n <div class=\"stat-main\">{{ stats.fieldCount }}</div>\n <div class=\"stat-details\">\n <span>{{ stats.primaryKeyCount }} PKs</span>\n <span>{{ stats.foreignKeyCount }} FKs</span>\n @if (stats.encryptedFieldCount) {\n <span>{{ stats.encryptedFieldCount }} Encrypted</span>\n }\n </div>\n </div>\n <div class=\"stat-card-action\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n </div>\n <div class=\"stat-card clickable\" (click)=\"setActiveSection('relationships')\" title=\"View relationships\">\n <div class=\"stat-card-header\">\n <i class=\"fa-solid fa-diagram-project\"></i>\n <span>Relationships</span>\n </div>\n <div class=\"stat-card-body\">\n <div class=\"stat-main\">{{ stats.relationshipCount }}</div>\n <div class=\"stat-details\">\n <span>{{ groupedOutgoingRelationships.length }} Out</span>\n <span>{{ groupedIncomingRelationships.length }} In</span>\n </div>\n </div>\n <div class=\"stat-card-action\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n </div>\n <div class=\"stat-card clickable\" (click)=\"setActiveSection('permissions')\" title=\"View security settings\">\n <div class=\"stat-card-header\">\n <i class=\"fa-solid fa-lock\"></i>\n <span>Security</span>\n </div>\n <div class=\"stat-card-body\">\n <div class=\"stat-main\">{{ stats.permissionCount }}</div>\n <div class=\"stat-details\">\n <span>Roles configured</span>\n </div>\n </div>\n <div class=\"stat-card-action\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-card-header\">\n <i class=\"fa-solid fa-database\"></i>\n <span>Data</span>\n </div>\n <div class=\"stat-card-body\">\n <div class=\"stat-main\">{{ formattedRowCount }}</div>\n <div class=\"stat-details\">\n @if (entity.RowCountRunAt) {\n <span>Updated {{ entity.RowCountRunAt | date:'short' }}</span>\n }\n @if (!entity.RowCountRunAt) {\n <span>Row count</span>\n }\n </div>\n </div>\n </div>\n </div>\n <!-- Capabilities -->\n <div class=\"info-panel capabilities-panel\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-bolt\"></i>\n Capabilities\n </h3>\n <div class=\"capability-tags\">\n @for (cap of capabilitySummary; track cap) {\n <span class=\"capability-tag\">\n <i class=\"fa-solid fa-check\"></i>\n {{ cap }}\n </span>\n }\n @if (!entity.IncludeInAPI) {\n <span class=\"capability-tag disabled\">\n <i class=\"fa-solid fa-xmark\"></i>\n No API\n </span>\n }\n </div>\n </div>\n <!-- IS-A Type Hierarchy -->\n @if (HasISARelationship || IsVirtualEntity) {\n <div class=\"info-panel isa-panel\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-layer-group\"></i>\n Type Hierarchy\n </h3>\n @if (IsVirtualEntity) {\n <div class=\"isa-info-row virtual-info\">\n <i class=\"fa-solid fa-eye\"></i>\n <span>Virtual Entity \u2014 read-only view backed by <span class=\"code\">{{ entity.BaseView }}</span></span>\n </div>\n }\n @if (IsChildType) {\n <div class=\"isa-chain\">\n <div class=\"isa-chain-label\">Inheritance Chain</div>\n <div class=\"isa-chain-nodes\">\n <span class=\"isa-node current\">{{ entity.Name }}</span>\n @for (parent of ParentChain; track parent.ID) {\n <i class=\"fa-solid fa-arrow-right isa-arrow\"></i>\n <span class=\"isa-node parent clickable\" (click)=\"NavigateToEntity(parent)\" [title]=\"'Navigate to ' + parent.Name\">\n {{ parent.Name }}\n </span>\n }\n </div>\n <div class=\"isa-inherited-fields\">\n <i class=\"fa-solid fa-table-cells\"></i>\n <span>{{ InheritedFieldCount }} field{{ InheritedFieldCount !== 1 ? 's' : '' }} inherited from parent{{ ParentChain.length > 1 ? 's' : '' }}</span>\n </div>\n </div>\n <!-- IS-A Field Inspector: shows fields grouped by source entity -->\n @if (isaFieldGroups.length > 1) {\n <div class=\"isa-field-inspector\">\n <div class=\"isa-chain-label clickable\" (click)=\"isaFieldInspectorExpanded = !isaFieldInspectorExpanded\">\n <i class=\"fa-solid\" [ngClass]=\"isaFieldInspectorExpanded ? 'fa-chevron-down' : 'fa-chevron-right'\"></i>\n Field Source Inspector\n </div>\n @if (isaFieldInspectorExpanded) {\n <div class=\"isa-inspector-groups\">\n @for (group of isaFieldGroups; track group.EntityName) {\n <div class=\"isa-inspector-group\" [class.own]=\"group.Level === 0\" [class.inherited]=\"group.Level > 0\">\n <div class=\"isa-inspector-header\">\n <span class=\"isa-inspector-entity\">\n @if (group.Level === 0) {\n <i class=\"fa-solid fa-circle\" style=\"color: var(--mj-brand-primary); font-size: 8px;\"></i>\n } @else {\n <i class=\"fa-solid fa-arrow-up\" style=\"color: var(--mj-brand-primary); font-size: 10px;\"></i>\n }\n {{ group.Label }}\n </span>\n <span class=\"isa-inspector-count\">{{ group.Fields.length }} field{{ group.Fields.length !== 1 ? 's' : '' }}</span>\n </div>\n <div class=\"isa-inspector-fields\">\n @for (field of group.Fields; track field.ID) {\n <span class=\"isa-inspector-field\" [title]=\"field.Description || field.Name\">\n {{ field.DisplayName || field.Name }}\n <span class=\"isa-inspector-type\">{{ field.Type }}</span>\n </span>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n <!-- Sibling Types -->\n @if (SiblingEntities.length > 0) {\n <div class=\"isa-siblings\">\n <div class=\"isa-chain-label\">Sibling Types ({{ ParentChain[0]?.AllowMultipleSubtypes ? 'overlapping' : 'disjoint' }} under {{ ParentChain[0]?.Name }})</div>\n <div class=\"isa-child-list\">\n @for (sibling of SiblingEntities; track sibling.ID) {\n <span class=\"isa-sibling-chip clickable\" (click)=\"NavigateToEntity(sibling)\" [title]=\"'Navigate to ' + sibling.Name\">\n <i class=\"fa-solid fa-arrows-left-right\"></i>\n {{ sibling.Name }}\n </span>\n }\n </div>\n </div>\n }\n }\n @if (IsParentType) {\n <div class=\"isa-children\">\n <div class=\"isa-chain-label\">Child Types</div>\n <div class=\"isa-child-list\">\n @for (childCount of childEntityCounts; track childCount.EntityName) {\n <span class=\"isa-child-chip clickable\" (click)=\"NavigateToEntity(childCount.EntityInfo)\" [title]=\"'Navigate to ' + childCount.EntityName\">\n <i class=\"fa-solid fa-arrow-down\"></i>\n {{ childCount.EntityName }}\n <span class=\"isa-child-count\">\n @if (childCount.IsLoading) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n {{ childCount.RecordCount | number }}\n }\n </span>\n </span>\n }\n </div>\n </div>\n }\n </div>\n }\n <!-- Database Info -->\n <div class=\"info-panel database-panel\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-server\"></i>\n Database\n </h3>\n <div class=\"info-grid\">\n <div class=\"info-item\">\n <span class=\"info-label\">Schema</span>\n <span class=\"info-value\">{{ entity.SchemaName }}</span>\n </div>\n <div class=\"info-item\">\n <span class=\"info-label\">Table</span>\n <span class=\"info-value\">{{ entity.BaseTable }}</span>\n </div>\n <div class=\"info-item\">\n <span class=\"info-label\">View</span>\n <span class=\"info-value\">{{ entity.BaseView }}</span>\n </div>\n <div class=\"info-item\">\n <span class=\"info-label\">Delete Type</span>\n <span class=\"info-value\">{{ entity.DeleteType }}</span>\n </div>\n @if (entity.spCreate) {\n <div class=\"info-item\">\n <span class=\"info-label\">SP Create</span>\n <span class=\"info-value code\">{{ entity.spCreate }}</span>\n </div>\n }\n @if (entity.spUpdate) {\n <div class=\"info-item\">\n <span class=\"info-label\">SP Update</span>\n <span class=\"info-value code\">{{ entity.spUpdate }}</span>\n </div>\n }\n @if (entity.spDelete) {\n <div class=\"info-item\">\n <span class=\"info-label\">SP Delete</span>\n <span class=\"info-value code\">{{ entity.spDelete }}</span>\n </div>\n }\n </div>\n </div>\n <!-- Code Gen Info -->\n <div class=\"info-panel codegen-panel\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-code\"></i>\n Code Generation\n </h3>\n <div class=\"info-grid\">\n <div class=\"info-item\">\n <span class=\"info-label\">Class Name</span>\n <span class=\"info-value code\">{{ entity.ClassName }}</span>\n </div>\n <div class=\"info-item\">\n <span class=\"info-label\">Code Name</span>\n <span class=\"info-value code\">{{ entity.CodeName }}</span>\n </div>\n @if (entity.EntityObjectSubclassName) {\n <div class=\"info-item\">\n <span class=\"info-label\">Subclass</span>\n <span class=\"info-value code\">{{ entity.EntityObjectSubclassName }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n </section>\n }\n <!-- ============================================================ -->\n <!-- FIELDS SECTION -->\n <!-- ============================================================ -->\n @if (activeSection === 'fields') {\n <section class=\"section fields-section\">\n <div class=\"section-header\">\n <div class=\"search-box\">\n <i class=\"fa-solid fa-search\"></i>\n <input\n type=\"text\"\n placeholder=\"Search fields...\"\n [ngModel]=\"fieldSearchTerm\"\n (ngModelChange)=\"onFieldSearch($event)\">\n </div>\n <div class=\"header-controls\">\n <!-- View mode toggle -->\n <div class=\"view-mode-toggle\">\n <button\n class=\"toggle-btn\"\n [class.active]=\"fieldViewMode === 'grouped'\"\n (click)=\"fieldViewMode = 'grouped'\"\n title=\"Group by category\">\n <i class=\"fa-solid fa-layer-group\"></i>\n </button>\n <button\n class=\"toggle-btn\"\n [class.active]=\"fieldViewMode === 'list'\"\n (click)=\"fieldViewMode = 'list'\"\n title=\"List view\">\n <i class=\"fa-solid fa-list\"></i>\n </button>\n </div>\n <!-- Expand/Collapse controls (only in grouped mode) -->\n @if (fieldViewMode === 'grouped') {\n <div class=\"expand-collapse-controls\">\n <button\n class=\"control-btn\"\n (click)=\"expandAllFieldGroups()\"\n [disabled]=\"allFieldGroupsExpanded\"\n title=\"Expand all\">\n <i class=\"fa-solid fa-angles-down\"></i>\n </button>\n <button\n class=\"control-btn\"\n (click)=\"collapseAllFieldGroups()\"\n [disabled]=\"allFieldGroupsCollapsed\"\n title=\"Collapse all\">\n <i class=\"fa-solid fa-angles-up\"></i>\n </button>\n </div>\n }\n </div>\n </div>\n <div class=\"section-content fields-content\">\n <!-- Grouped View -->\n @if (fieldViewMode === 'grouped') {\n <div class=\"field-groups\">\n @for (group of getFilteredFieldGroups(); track group) {\n <div\n class=\"field-group\"\n [class.expanded]=\"isFieldGroupExpanded(group.id)\">\n <div class=\"group-header\" (click)=\"toggleFieldGroup(group.id)\">\n <i class=\"expand-icon fa-solid\" [ngClass]=\"isFieldGroupExpanded(group.id) ? 'fa-chevron-down' : 'fa-chevron-right'\"></i>\n <i [class]=\"group.icon\" class=\"group-icon\"></i>\n <span class=\"group-label\">{{ group.label }}</span>\n <span class=\"group-count\">{{ group.fields.length }}</span>\n </div>\n @if (isFieldGroupExpanded(group.id)) {\n <div class=\"group-content\">\n @for (field of group.fields; track field) {\n <div\n class=\"field-item\"\n (click)=\"selectField(field)\"\n [class.selected]=\"IsFieldSelected(field)\">\n <div class=\"field-icon\">\n <i [class]=\"getFieldTypeIcon(field)\"></i>\n </div>\n <div class=\"field-info\">\n <div class=\"field-name\">{{ field.DisplayName || field.Name }}</div>\n <div class=\"field-db-name\">{{ field.Name }}</div>\n <div class=\"field-meta\">\n <span class=\"field-type\">{{ formatFieldType(field) }}</span>\n @if (!field.AllowsNull) {\n <span class=\"field-nullable\">Required</span>\n }\n @if (field.RelatedEntityID) {\n <span class=\"field-related\" (click)=\"navigateToRelatedEntity(field); $event.stopPropagation()\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n {{ getRelatedEntityName(field) }}\n </span>\n }\n </div>\n </div>\n <div class=\"field-badges\">\n @if (field.IsPrimaryKey) {\n <span class=\"badge pk\" title=\"Primary Key\">PK</span>\n }\n @if (field.RelatedEntityID && !field.IsPrimaryKey) {\n <span class=\"badge fk\" title=\"Foreign Key\">FK</span>\n }\n @if (field.Encrypt) {\n <span class=\"badge encrypted\" title=\"Encrypted\">\n <i class=\"fa-solid fa-lock\"></i>\n </span>\n }\n @if (IsInheritedField(field)) {\n <span class=\"badge inherited\" [title]=\"'Inherited from ' + GetISAFieldSource(field)\">\n <i class=\"fa-solid fa-arrow-up\"></i> {{ GetISAFieldSource(field) }}\n </span>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n <!-- List View - Modern Card-style Table -->\n @if (fieldViewMode === 'list') {\n <div class=\"fields-list-view\">\n <!-- Table Header -->\n <div class=\"list-header\">\n <div class=\"list-col col-seq sortable\" (click)=\"sortFieldList('Sequence')\" [class.sorted]=\"fieldListSortColumn === 'Sequence'\">\n #\n <i class=\"sort-icon fa-solid\" [ngClass]=\"fieldListSortColumn === 'Sequence' ? (fieldListSortDirection === 'asc' ? 'fa-caret-up' : 'fa-caret-down') : 'fa-sort'\"></i>\n </div>\n <div class=\"list-col col-name sortable\" (click)=\"sortFieldList('Name')\" [class.sorted]=\"fieldListSortColumn === 'Name'\">\n Field Name\n <i class=\"sort-icon fa-solid\" [ngClass]=\"fieldListSortColumn === 'Name' ? (fieldListSortDirection === 'asc' ? 'fa-caret-up' : 'fa-caret-down') : 'fa-sort'\"></i>\n </div>\n <div class=\"list-col col-display-name sortable\" (click)=\"sortFieldList('DisplayName')\" [class.sorted]=\"fieldListSortColumn === 'DisplayName'\">\n Display Name\n <i class=\"sort-icon fa-solid\" [ngClass]=\"fieldListSortColumn === 'DisplayName' ? (fieldListSortDirection === 'asc' ? 'fa-caret-up' : 'fa-caret-down') : 'fa-sort'\"></i>\n </div>\n <div class=\"list-col col-type sortable\" (click)=\"sortFieldList('Type')\" [class.sorted]=\"fieldListSortColumn === 'Type'\">\n Type\n <i class=\"sort-icon fa-solid\" [ngClass]=\"fieldListSortColumn === 'Type' ? (fieldListSortDirection === 'asc' ? 'fa-caret-up' : 'fa-caret-down') : 'fa-sort'\"></i>\n </div>\n <div class=\"list-col col-length sortable\" (click)=\"sortFieldList('Length')\" [class.sorted]=\"fieldListSortColumn === 'Length'\">\n Length\n <i class=\"sort-icon fa-solid\" [ngClass]=\"fieldListSortColumn === 'Length' ? (fieldListSortDirection === 'asc' ? 'fa-caret-up' : 'fa-caret-down') : 'fa-sort'\"></i>\n </div>\n <div class=\"list-col col-nullable sortable\" (click)=\"sortFieldList('AllowsNull')\" [class.sorted]=\"fieldListSortColumn === 'AllowsNull'\">\n Required\n <i class=\"sort-icon fa-solid\" [ngClass]=\"fieldListSortColumn === 'AllowsNull' ? (fieldListSortDirection === 'asc' ? 'fa-caret-up' : 'fa-caret-down') : 'fa-sort'\"></i>\n </div>\n <div class=\"list-col col-flags\">Flags</div>\n <div class=\"list-col col-desc sortable\" (click)=\"sortFieldList('Description')\" [class.sorted]=\"fieldListSortColumn === 'Description'\">\n Description\n <i class=\"sort-icon fa-solid\" [ngClass]=\"fieldListSortColumn === 'Description' ? (fieldListSortDirection === 'asc' ? 'fa-caret-up' : 'fa-caret-down') : 'fa-sort'\"></i>\n </div>\n </div>\n <!-- Table Body -->\n <div class=\"list-body\">\n @for (field of getFilteredFieldsList(); track field; let i = $index) {\n <div\n class=\"list-row\"\n [class.selected]=\"IsFieldSelected(field)\"\n (click)=\"selectField(field)\">\n <div class=\"list-col col-seq\">\n <span class=\"seq-num\">{{ field.Sequence }}</span>\n </div>\n <div class=\"list-col col-name\">\n <i [class]=\"getFieldTypeIcon(field)\" class=\"field-type-icon\"></i>\n <span class=\"field-name-text\">{{ field.Name }}</span>\n </div>\n <div class=\"list-col col-display-name\">\n <span class=\"display-name-text\">{{ field.DisplayName || field.Name }}</span>\n </div>\n <div class=\"list-col col-type\">\n <span class=\"type-tag\">{{ field.Type }}</span>\n </div>\n <div class=\"list-col col-length\">\n @if (field.Length > 0) {\n <span class=\"length-value\">{{ field.Length }}</span>\n }\n @if (field.Length <= 0) {\n <span class=\"length-value muted\">\u2014</span>\n }\n </div>\n <div class=\"list-col col-nullable\">\n <span class=\"required-indicator\" [class.required]=\"!field.AllowsNull\" [class.optional]=\"field.AllowsNull\">\n <i [class]=\"field.AllowsNull ? 'fa-solid fa-circle-minus' : 'fa-solid fa-circle-check'\"></i>\n {{ field.AllowsNull ? 'Optional' : 'Required' }}\n </span>\n </div>\n <div class=\"list-col col-flags\">\n <div class=\"flag-badges\">\n @if (field.IsPrimaryKey) {\n <span class=\"flag-badge pk\" title=\"Primary Key\">\n <i class=\"fa-solid fa-key\"></i> PK\n </span>\n }\n @if (field.RelatedEntityID && !field.IsPrimaryKey) {\n <span class=\"flag-badge fk\" title=\"Foreign Key\">\n <i class=\"fa-solid fa-link\"></i> FK\n </span>\n }\n @if (field.Encrypt) {\n <span class=\"flag-badge encrypted\" title=\"Encrypted\">\n <i class=\"fa-solid fa-lock\"></i>\n </span>\n }\n @if (IsInheritedField(field)) {\n <span class=\"flag-badge inherited\" [title]=\"'Inherited from ' + GetISAFieldSource(field)\">\n <i class=\"fa-solid fa-arrow-up\"></i> {{ GetISAFieldSource(field) }}\n </span>\n }\n </div>\n </div>\n <div class=\"list-col col-desc\">\n <span class=\"desc-text\" [title]=\"field.Description || ''\">{{ field.Description || '\u2014' }}</span>\n </div>\n </div>\n }\n </div>\n <!-- Empty state -->\n @if (getFilteredFieldsList().length === 0) {\n <div class=\"list-empty\">\n <i class=\"fa-solid fa-search\"></i>\n <span>No fields match your search</span>\n </div>\n }\n </div>\n }\n </div>\n </section>\n }\n <!-- ============================================================ -->\n <!-- RELATIONSHIPS SECTION -->\n <!-- ============================================================ -->\n @if (activeSection === 'relationships') {\n <section class=\"section relationships-section\">\n <div class=\"section-header\">\n <div class=\"view-toggle\">\n <button\n class=\"toggle-btn\"\n [class.active]=\"relationshipViewMode === 'diagram'\"\n (click)=\"relationshipViewMode = 'diagram'\">\n <i class=\"fa-solid fa-diagram-project\"></i>\n Diagram\n </button>\n <button\n class=\"toggle-btn\"\n [class.active]=\"relationshipViewMode === 'list'\"\n (click)=\"relationshipViewMode = 'list'\">\n <i class=\"fa-solid fa-list\"></i>\n List\n </button>\n </div>\n <!-- Depth selector (only in diagram mode) -->\n @if (relationshipViewMode === 'diagram') {\n <div class=\"depth-selector\">\n <span class=\"depth-label\">Depth:</span>\n <div class=\"depth-buttons\">\n @for (d of [1, 2, 3, 4, 5]; track d) {\n <button\n class=\"depth-btn\"\n [class.active]=\"erdDepth === d\"\n (click)=\"setErdDepth(d)\"\n [title]=\"'Show ' + d + ' level(s) of relationships'\">\n {{ d }}\n </button>\n }\n </div>\n </div>\n }\n </div>\n <div class=\"section-content\">\n <!-- Diagram View using the ERD composite component -->\n @if (relationshipViewMode === 'diagram') {\n <div class=\"relationships-graph\">\n <mj-erd-composite\n [focusEntities]=\"entity ? [entity] : []\"\n [showFilterPanel]=\"false\"\n [showHeader]=\"false\"\n [depth]=\"erdDepth\"\n (stateChange)=\"onERDStateChange($event)\"\n (openRecord)=\"onERDOpenRecord($event)\">\n </mj-erd-composite>\n </div>\n }\n <!-- List View -->\n @if (relationshipViewMode === 'list') {\n <div class=\"relationships-list\">\n <!-- Outgoing Relationships (FK fields on this entity) - Grouped by target entity -->\n <div class=\"relationship-group\">\n <h3 class=\"relationship-group-title\">\n <i class=\"fa-solid fa-arrow-right-from-bracket\"></i>\n Outgoing (References to other entities)\n <span class=\"group-count\">{{ groupedOutgoingRelationships.length }}</span>\n </h3>\n <div class=\"relationship-items grouped\">\n @for (group of groupedOutgoingRelationships; track group) {\n <div\n class=\"relationship-item-grouped\"\n >\n <div class=\"rel-header\">\n <div class=\"rel-icon outgoing\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n <div class=\"rel-entity-name\">{{ group.entityName }}</div>\n </div>\n <div class=\"rel-fields-chips\">\n @for (field of group.fields; track field) {\n <span\n class=\"field-chip outgoing\"\n [title]=\"field.Description || field.Name\"\n (click)=\"selectField(field)\">\n <i class=\"fa-solid fa-link\"></i>\n {{ field.Name }}\n </span>\n }\n </div>\n </div>\n }\n @if (groupedOutgoingRelationships.length === 0) {\n <div class=\"empty-state\">\n <p>No outgoing relationships</p>\n </div>\n }\n </div>\n </div>\n <!-- Incoming Relationships - Grouped by source entity -->\n <div class=\"relationship-group\">\n <h3 class=\"relationship-group-title\">\n <i class=\"fa-solid fa-arrow-right-to-bracket\"></i>\n Incoming (Entities that reference this one)\n <span class=\"group-count\">{{ groupedIncomingRelationships.length }}</span>\n </h3>\n <div class=\"relationship-items grouped\">\n @for (group of groupedIncomingRelationships; track group) {\n <div\n class=\"relationship-item-grouped\"\n >\n <div class=\"rel-header\">\n <div class=\"rel-icon incoming\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </div>\n <div class=\"rel-entity-name\">{{ group.entityName }}</div>\n </div>\n <div class=\"rel-fields-chips\">\n @for (field of group.fields; track field) {\n <span\n class=\"field-chip incoming\"\n [title]=\"'Type: ' + field.type\">\n <i class=\"fa-solid fa-link\"></i>\n {{ field.fieldName }}\n @if (field.bundleInAPI) {\n <i class=\"fa-solid fa-box bundle-icon\" title=\"Bundled in API\"></i>\n }\n </span>\n }\n </div>\n </div>\n }\n @if (groupedIncomingRelationships.length === 0) {\n <div class=\"empty-state\">\n <p>No incoming relationships</p>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n </section>\n }\n <!-- ============================================================ -->\n <!-- PERMISSIONS SECTION -->\n <!-- ============================================================ -->\n @if (activeSection === 'permissions') {\n <section class=\"section permissions-section\">\n <div class=\"section-content\">\n <div class=\"permissions-matrix\">\n <table class=\"matrix-table\">\n <thead>\n <tr>\n <th>Role</th>\n <th class=\"center\">Create</th>\n <th class=\"center\">Read</th>\n <th class=\"center\">Update</th>\n <th class=\"center\">Delete</th>\n <th>RLS</th>\n </tr>\n </thead>\n <tbody>\n @for (perm of entity.Permissions; track perm) {\n <tr>\n <td class=\"role-name\">{{ getRoleName(perm) }}</td>\n <td class=\"center\">\n <i class=\"permission-icon\" [ngClass]=\"perm.CanCreate ? 'fa-solid fa-check granted' : 'fa-solid fa-xmark denied'\"></i>\n </td>\n <td class=\"center\">\n <i class=\"permission-icon\" [ngClass]=\"perm.CanRead ? 'fa-solid fa-check granted' : 'fa-solid fa-xmark denied'\"></i>\n </td>\n <td class=\"center\">\n <i class=\"permission-icon\" [ngClass]=\"perm.CanUpdate ? 'fa-solid fa-check granted' : 'fa-solid fa-xmark denied'\"></i>\n </td>\n <td class=\"center\">\n <i class=\"permission-icon\" [ngClass]=\"perm.CanDelete ? 'fa-solid fa-check granted' : 'fa-solid fa-xmark denied'\"></i>\n </td>\n <td class=\"rls-info\">\n @if (perm.ReadRLSFilterID) {\n <span class=\"rls-badge\" title=\"Read RLS\">R</span>\n }\n @if (perm.CreateRLSFilterID) {\n <span class=\"rls-badge\" title=\"Create RLS\">C</span>\n }\n @if (perm.UpdateRLSFilterID) {\n <span class=\"rls-badge\" title=\"Update RLS\">U</span>\n }\n @if (perm.DeleteRLSFilterID) {\n <span class=\"rls-badge\" title=\"Delete RLS\">D</span>\n }\n @if (!perm.ReadRLSFilterID && !perm.CreateRLSFilterID && !perm.UpdateRLSFilterID && !perm.DeleteRLSFilterID) {\n <span class=\"no-rls\">None</span>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n @if (entity.Permissions.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-shield-halved\"></i>\n <p>No permissions configured</p>\n </div>\n }\n </div>\n <div class=\"api-capabilities\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-plug\"></i>\n API Capabilities\n </h3>\n <div class=\"capability-grid\">\n <div class=\"capability-item\" [class.enabled]=\"entity.IncludeInAPI\">\n <i class=\"fa-solid\" [ngClass]=\"entity.IncludeInAPI ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Include in API</span>\n </div>\n <div class=\"capability-item\" [class.enabled]=\"entity.AllowAllRowsAPI\">\n <i class=\"fa-solid\" [ngClass]=\"entity.AllowAllRowsAPI ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Allow All Rows</span>\n </div>\n <div class=\"capability-item\" [class.enabled]=\"entity.AllowCreateAPI\">\n <i class=\"fa-solid\" [ngClass]=\"entity.AllowCreateAPI ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Allow Create</span>\n </div>\n <div class=\"capability-item\" [class.enabled]=\"entity.AllowUpdateAPI\">\n <i class=\"fa-solid\" [ngClass]=\"entity.AllowUpdateAPI ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Allow Update</span>\n </div>\n <div class=\"capability-item\" [class.enabled]=\"entity.AllowDeleteAPI\">\n <i class=\"fa-solid\" [ngClass]=\"entity.AllowDeleteAPI ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Allow Delete</span>\n </div>\n <div class=\"capability-item\" [class.enabled]=\"entity.AllowUserSearchAPI\">\n <i class=\"fa-solid\" [ngClass]=\"entity.AllowUserSearchAPI ? 'fa-check' : 'fa-xmark'\"></i>\n <span>User Search</span>\n </div>\n <div class=\"capability-item\" [class.enabled]=\"entity.CustomResolverAPI\">\n <i class=\"fa-solid\" [ngClass]=\"entity.CustomResolverAPI ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Custom Resolver</span>\n </div>\n </div>\n </div>\n </div>\n </section>\n }\n <!-- ============================================================ -->\n <!-- DATA SECTION -->\n <!-- ============================================================ -->\n @if (activeSection === 'data') {\n <section class=\"section data-section\">\n <div class=\"data-viewer-container\">\n @if (entity) {\n <mj-entity-viewer\n [entity]=\"entity\"\n [showGridToolbar]=\"true\"\n (recordOpened)=\"OnRecordOpened($event)\"\n (addRequested)=\"OnAddRequested()\">\n </mj-entity-viewer>\n }\n </div>\n </section>\n }\n <!-- ============================================================ -->\n <!-- LINEAGE SECTION -->\n <!-- ============================================================ -->\n @if (activeSection === 'lineage') {\n <section class=\"section lineage-section\">\n <div class=\"section-content\">\n <div class=\"lineage-diagram\">\n <div class=\"lineage-stage sources\">\n <h4>Data Sources</h4>\n <div class=\"lineage-items\">\n <div class=\"lineage-item\">\n <i class=\"fa-solid fa-keyboard\"></i>\n <span>Manual Entry</span>\n </div>\n @if (entity.IncludeInAPI) {\n <div class=\"lineage-item\">\n <i class=\"fa-solid fa-plug\"></i>\n <span>API Create</span>\n </div>\n }\n </div>\n </div>\n <div class=\"lineage-arrow\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n <div class=\"lineage-stage entity-node\">\n <div class=\"entity-box\">\n <i [class]=\"entityIcon\"></i>\n <span>{{ entity.Name }}</span>\n </div>\n </div>\n <div class=\"lineage-arrow\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n <div class=\"lineage-stage sinks\">\n <h4>Data Sinks</h4>\n <div class=\"lineage-items\">\n @if (entity.TrackRecordChanges) {\n <div class=\"lineage-item\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i>\n <span>Record Changes</span>\n </div>\n }\n @if (entity.AuditRecordAccess) {\n <div class=\"lineage-item\">\n <i class=\"fa-solid fa-eye\"></i>\n <span>Access Audit</span>\n </div>\n }\n <div class=\"lineage-item\">\n <i class=\"fa-solid fa-link\"></i>\n <span>Related Entities ({{ stats.relationshipCount }})</span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"tracking-config\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i>\n Tracking Configuration\n </h3>\n <div class=\"config-grid\">\n <div class=\"config-item\" [class.enabled]=\"entity.TrackRecordChanges\">\n <i class=\"fa-solid\" [ngClass]=\"entity.TrackRecordChanges ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Track Record Changes</span>\n </div>\n <div class=\"config-item\" [class.enabled]=\"entity.AuditRecordAccess\">\n <i class=\"fa-solid\" [ngClass]=\"entity.AuditRecordAccess ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Audit Record Access</span>\n </div>\n <div class=\"config-item\" [class.enabled]=\"entity.AuditViewRuns\">\n <i class=\"fa-solid\" [ngClass]=\"entity.AuditViewRuns ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Audit View Runs</span>\n </div>\n <div class=\"config-item\">\n <span class=\"config-label\">Delete Type:</span>\n <span class=\"config-value\">{{ entity.DeleteType }}</span>\n </div>\n <div class=\"config-item\" [class.enabled]=\"entity.CascadeDeletes\">\n <i class=\"fa-solid\" [ngClass]=\"entity.CascadeDeletes ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Cascade Deletes</span>\n </div>\n </div>\n </div>\n </div>\n </section>\n }\n <!-- ============================================================ -->\n <!-- HISTORY SECTION -->\n <!-- ============================================================ -->\n @if (activeSection === 'history') {\n <section class=\"section history-section\">\n <div class=\"section-content\">\n <div class=\"history-config\">\n <div class=\"config-status\" [class.enabled]=\"entity.TrackRecordChanges\">\n <i class=\"fa-solid\" [ngClass]=\"entity.TrackRecordChanges ? 'fa-circle-check' : 'fa-circle-xmark'\"></i>\n <div class=\"config-text\">\n <strong>Record Change Tracking</strong>\n <span>{{ entity.TrackRecordChanges ? 'Enabled - All changes are recorded' : 'Disabled - Changes are not tracked' }}</span>\n </div>\n </div>\n </div>\n <div class=\"history-info\">\n <div class=\"info-card\">\n <h4>\n <i class=\"fa-solid fa-info-circle\"></i>\n About Change Tracking\n </h4>\n @if (entity.TrackRecordChanges) {\n <p>\n This entity has change tracking enabled. All modifications to records are stored in the\n <code>RecordChange</code> table, including the user who made the change, timestamp, and\n the before/after values.\n </p>\n }\n @if (!entity.TrackRecordChanges) {\n <p>\n This entity does not have change tracking enabled. To enable it, set\n <code>TrackRecordChanges</code> to <code>true</code> in the entity metadata.\n </p>\n }\n </div>\n @if (entity.TrackRecordChanges) {\n <div class=\"info-card\">\n <h4>\n <i class=\"fa-solid fa-database\"></i>\n Audit Fields\n </h4>\n <ul class=\"audit-fields-list\">\n <li>\n <code>__mj_CreatedAt</code> - Record creation timestamp\n </li>\n <li>\n <code>__mj_UpdatedAt</code> - Last modification timestamp\n </li>\n @if (entity.DeleteType === 'Soft') {\n <li>\n <code>__mj_DeletedAt</code> - Soft delete timestamp (when applicable)\n </li>\n }\n </ul>\n </div>\n }\n </div>\n </div>\n </section>\n }\n <!-- ============================================================ -->\n <!-- SETTINGS SECTION -->\n <!-- ============================================================ -->\n @if (activeSection === 'settings') {\n <section class=\"section settings-section\">\n <div class=\"section-content\">\n <!-- IS-A Type Relationship Configuration -->\n @if (HasISARelationship || IsVirtualEntity) {\n <div class=\"settings-panel isa-settings-panel\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-layer-group\"></i>\n Type Relationship (IS-A)\n </h3>\n <div class=\"config-grid\">\n <div class=\"config-row\">\n <span class=\"config-label\">Virtual Entity</span>\n <span class=\"config-value\">\n @if (IsVirtualEntity) {\n <i class=\"fa-solid fa-circle-check\" style=\"color: var(--mj-brand-primary);\"></i> Yes \u2014 read-only view\n } @else {\n <i class=\"fa-solid fa-circle-minus\" style=\"color: var(--mj-text-muted);\"></i> No\n }\n </span>\n </div>\n <div class=\"config-row\">\n <span class=\"config-label\">Parent Entity</span>\n <span class=\"config-value\">\n @if (IsChildType) {\n <span class=\"link\" (click)=\"NavigateToEntity(ParentChain[0])\" title=\"Navigate to parent entity\">\n {{ ParentChain[0]?.Name }}\n <i class=\"fa-solid fa-arrow-right\"></i>\n </span>\n } @else {\n <span class=\"muted\">None</span>\n }\n </span>\n </div>\n @if (IsChildType) {\n <div class=\"config-row\">\n <span class=\"config-label\">Full Inheritance Chain</span>\n <span class=\"config-value\">{{ IsaBreadcrumb }}</span>\n </div>\n <div class=\"config-row\">\n <span class=\"config-label\">Inherited Fields</span>\n <span class=\"config-value\">{{ InheritedFieldCount }} field{{ InheritedFieldCount !== 1 ? 's' : '' }}</span>\n </div>\n }\n @if (IsParentType) {\n <div class=\"config-row\">\n <span class=\"config-label\">Child Types</span>\n <span class=\"config-value\">\n @for (child of ChildEntities; track child.ID; let last = $last) {\n <span class=\"link\" (click)=\"NavigateToEntity(child)\">{{ child.Name }}</span>{{ last ? '' : ', ' }}\n }\n </span>\n </div>\n }\n @if (SiblingEntities.length > 0) {\n <div class=\"config-row\">\n <span class=\"config-label\">Sibling Types</span>\n <span class=\"config-value\">\n @for (sibling of SiblingEntities; track sibling.ID; let last = $last) {\n <span class=\"link\" (click)=\"NavigateToEntity(sibling)\">{{ sibling.Name }}</span>{{ last ? '' : ', ' }}\n }\n </span>\n </div>\n }\n <div class=\"config-row\">\n <span class=\"config-label\">Disjoint Subtypes</span>\n <span class=\"config-value\">\n @if (IsParentType || IsChildType) {\n <i class=\"fa-solid fa-circle-check\" style=\"color: #059669;\"></i> Enforced \u2014 a parent record can only be one child type\n } @else {\n <span class=\"muted\">N/A</span>\n }\n </span>\n </div>\n </div>\n </div>\n }\n <!-- Entity Settings -->\n <div class=\"settings-panel\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-sliders\"></i>\n Entity Settings\n </h3>\n @if (entity.Settings.length > 0) {\n <div class=\"settings-list\">\n @for (setting of entity.Settings; track setting) {\n <div class=\"setting-item\">\n <div class=\"setting-name\">{{ setting.Name }}</div>\n @if (isJsonValue(setting.Value)) {\n <div class=\"setting-value-json\">\n <mj-code-editor\n [value]=\"formatJsonValue(setting.Value)\"\n language=\"json\"\n [readonly]=\"true\"\n [lineWrapping]=\"true\"\n setup=\"minimal\">\n </mj-code-editor>\n </div>\n } @else {\n <div class=\"setting-value\">{{ setting.Value }}</div>\n }\n @if (setting.Comments) {\n <div class=\"setting-comment\">{{ setting.Comments }}</div>\n }\n </div>\n }\n </div>\n }\n @if (entity.Settings.length === 0) {\n <div class=\"empty-state\">\n <p>No custom settings configured</p>\n </div>\n }\n </div>\n <!-- Full Text Search -->\n <div class=\"settings-panel\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-magnifying-glass\"></i>\n Full-Text Search\n </h3>\n @if (entity.FullTextSearchEnabled) {\n <div class=\"fts-config\">\n <div class=\"config-row\">\n <span class=\"config-label\">Status</span>\n <span class=\"config-value enabled\">\n <i class=\"fa-solid fa-circle-check\"></i>\n Enabled\n </span>\n </div>\n @if (entity.FullTextCatalog) {\n <div class=\"config-row\">\n <span class=\"config-label\">Catalog</span>\n <span class=\"config-value code\">{{ entity.FullTextCatalog }}</span>\n </div>\n }\n @if (entity.FullTextIndex) {\n <div class=\"config-row\">\n <span class=\"config-label\">Index</span>\n <span class=\"config-value code\">{{ entity.FullTextIndex }}</span>\n </div>\n }\n @if (entity.FullTextSearchFunction) {\n <div class=\"config-row\">\n <span class=\"config-label\">Function</span>\n <span class=\"config-value code\">{{ entity.FullTextSearchFunction }}</span>\n </div>\n }\n </div>\n }\n @if (!entity.FullTextSearchEnabled) {\n <div class=\"empty-state\">\n <p>Full-text search is not enabled for this entity</p>\n </div>\n }\n </div>\n <!-- Row Packaging -->\n <div class=\"settings-panel\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-box\"></i>\n Schema Packaging\n </h3>\n <div class=\"config-grid\">\n <div class=\"config-row\">\n <span class=\"config-label\">Rows to Pack</span>\n <span class=\"config-value\">{{ entity.RowsToPackWithSchema || 'None' }}</span>\n </div>\n @if (entity.RowsToPackSampleCount) {\n <div class=\"config-row\">\n <span class=\"config-label\">Sample Count</span>\n <span class=\"config-value\">{{ entity.RowsToPackSampleCount }}</span>\n </div>\n }\n @if (entity.RowsToPackSampleMethod) {\n <div class=\"config-row\">\n <span class=\"config-label\">Sample Method</span>\n <span class=\"config-value\">{{ entity.RowsToPackSampleMethod }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n </section>\n }\n </main>\n <!-- ============================================================ -->\n <!-- DETAIL PANEL (Slides in from right) -->\n <!-- ============================================================ -->\n <aside class=\"detail-panel\" [class.open]=\"detailPanelOpen\">\n <div class=\"panel-header\">\n @if (selectedField) {\n <h3>Field Details</h3>\n }\n @if (selectedRelationship) {\n <h3>Relationship Details</h3>\n }\n <button class=\"close-btn\" (click)=\"closeDetailPanel()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n <!-- Field Details -->\n @if (selectedField) {\n <div class=\"panel-content\">\n <div class=\"detail-section\">\n <h4>{{ selectedField.DisplayName || selectedField.Name }}</h4>\n <div class=\"detail-field-db-name\">{{ selectedField.Name }}</div>\n @if (selectedField.Description) {\n <p class=\"field-description\">{{ selectedField.Description }}</p>\n }\n </div>\n <div class=\"detail-section\">\n <h5>Type Information</h5>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"label\">SQL Type</span>\n <span class=\"value code\">{{ formatFieldType(selectedField) }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">TypeScript Type</span>\n <span class=\"value code\">{{ selectedField.TSType }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">Nullable</span>\n <span class=\"value\">{{ selectedField.AllowsNull ? 'Yes' : 'No' }}</span>\n </div>\n @if (selectedField.DefaultValue) {\n <div class=\"detail-item\">\n <span class=\"label\">Default</span>\n <span class=\"value code\">{{ selectedField.DefaultValue }}</span>\n </div>\n }\n </div>\n </div>\n @if (IsInheritedField(selectedField)) {\n <div class=\"detail-section isa-source-section\">\n <h5>\n <i class=\"fa-solid fa-arrow-up\"></i>\n IS-A Inherited Field\n </h5>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"label\">Source Entity</span>\n <span class=\"value link\" (click)=\"NavigateToEntity(ParentChain[0])\" title=\"Navigate to source entity\">\n {{ GetISAFieldSource(selectedField) }}\n <i class=\"fa-solid fa-arrow-right\"></i>\n </span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">Routing</span>\n <span class=\"value\">ORM routes Set/Get to parent</span>\n </div>\n </div>\n </div>\n }\n @if (selectedField.RelatedEntityID) {\n <div class=\"detail-section\">\n <h5>Relationship</h5>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"label\">Related Entity</span>\n <span class=\"value link\" (click)=\"navigateToRelatedEntity(selectedField)\">\n {{ getRelatedEntityName(selectedField) }}\n <i class=\"fa-solid fa-arrow-right\"></i>\n </span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">Display Type</span>\n <span class=\"value\">{{ selectedField.RelatedEntityDisplayType }}</span>\n </div>\n </div>\n </div>\n }\n @if (selectedField.Encrypt) {\n <div class=\"detail-section\">\n <h5>Encryption</h5>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"label\">Encrypted</span>\n <span class=\"value\">Yes</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">Decrypt in API</span>\n <span class=\"value\">{{ selectedField.AllowDecryptInAPI ? 'Yes' : 'No' }}</span>\n </div>\n </div>\n </div>\n }\n <div class=\"detail-section\">\n <h5>API Settings</h5>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"label\">Allow Update</span>\n <span class=\"value\">{{ selectedField.AllowUpdateAPI ? 'Yes' : 'No' }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">Include in Search</span>\n <span class=\"value\">{{ selectedField.IncludeInUserSearchAPI ? 'Yes' : 'No' }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">Full-Text Search</span>\n <span class=\"value\">{{ selectedField.FullTextSearchEnabled ? 'Yes' : 'No' }}</span>\n </div>\n </div>\n </div>\n <div class=\"detail-section\">\n <h5>Form Settings</h5>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"label\">Include in Form</span>\n <span class=\"value\">{{ selectedField.IncludeInGeneratedForm ? 'Yes' : 'No' }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">Section</span>\n <span class=\"value\">{{ selectedField.GeneratedFormSection }}</span>\n </div>\n @if (selectedField.Category) {\n <div class=\"detail-item\">\n <span class=\"label\">Category</span>\n <span class=\"value\">{{ selectedField.Category }}</span>\n </div>\n }\n <div class=\"detail-item\">\n <span class=\"label\">Sequence</span>\n <span class=\"value\">{{ selectedField.Sequence }}</span>\n </div>\n </div>\n </div>\n @if (selectedField.EntityFieldValues.length > 0) {\n <div class=\"detail-section\">\n <h5>Allowed Values</h5>\n <div class=\"value-list\">\n @for (val of selectedField.EntityFieldValues; track val) {\n <div class=\"value-item\">\n @if (val.Code !== val.Value) {\n <span class=\"value-code\">{{ val.Code }}</span>\n }\n <span class=\"value-display\">{{ val.Value }}</span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n <!-- Relationship Details -->\n @if (selectedRelationship) {\n <div class=\"panel-content\">\n <div class=\"detail-section\">\n <h4>{{ selectedRelationship.DisplayName || selectedRelationship.Entity }}</h4>\n </div>\n <div class=\"detail-section\">\n <h5>Connection</h5>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"label\">From Entity</span>\n <span class=\"value\">{{ selectedRelationship.Entity }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">Join Field</span>\n <span class=\"value code\">{{ selectedRelationship.RelatedEntityJoinField }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">Type</span>\n <span class=\"value\">{{ selectedRelationship.Type }}</span>\n </div>\n </div>\n </div>\n <div class=\"detail-section\">\n <h5>Display Settings</h5>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"label\">Display in Form</span>\n <span class=\"value\">{{ selectedRelationship.DisplayInForm ? 'Yes' : 'No' }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">Location</span>\n <span class=\"value\">{{ selectedRelationship.DisplayLocation }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">Bundle in API</span>\n <span class=\"value\">{{ selectedRelationship.BundleInAPI ? 'Yes' : 'No' }}</span>\n </div>\n </div>\n </div>\n </div>\n }\n </aside>\n </div>\n </div>\n} @else {\n @if (isExplorerLoading) {\n <div class=\"explorer-loading\">\n <mj-loading text=\"Loading entity...\"></mj-loading>\n </div>\n }\n @if (!isExplorerLoading && explorerError) {\n <div class=\"explorer-error\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <p>{{ explorerError }}</p>\n </div>\n }\n @if (!isExplorerLoading && !explorerError && !entity) {\n <div class=\"explorer-empty\">\n <i class=\"fa-solid fa-database\"></i>\n <p>Entity metadata not available</p>\n </div>\n }\n}\n\n<!-- Loading / Error State -->\n", styles: ["/* ============================================================\n ENTITY EXPLORER FORM - MAIN STYLES\n A world-class exploration-focused entity intelligence hub\n ============================================================ */\n\n/* CSS Variables */\n:host {\n --nav-rail-width: 64px;\n --header-height: 80px;\n --detail-panel-width: 400px;\n\n --bg-primary: var(--mj-bg-surface);\n --bg-secondary: var(--mj-bg-surface-sunken);\n --bg-tertiary: var(--mj-bg-surface-sunken);\n\n --text-primary: var(--mj-text-primary);\n --text-secondary: var(--mj-text-secondary);\n --text-muted: var(--mj-text-muted);\n\n --border-color: var(--mj-border-default);\n --border-light: var(--mj-border-default);\n\n --accent-color: var(--mj-brand-primary);\n --accent-light: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n --accent-dark: var(--mj-brand-primary);\n\n --success-color: var(--mj-status-success);\n --warning-color: var(--mj-status-warning);\n --danger-color: var(--mj-status-error);\n\n --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);\n --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);\n\n --radius-sm: 4px;\n --radius-md: 8px;\n --radius-lg: 12px;\n\n --transition-fast: 150ms ease;\n --transition-normal: 250ms ease;\n\n display: block;\n height: 100%;\n width: 100%;\n}\n\n.entity-explorer {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--bg-secondary);\n overflow: hidden;\n}\n\n/* ============================================================\n HEADER BAR\n ============================================================ */\n\n.explorer-header {\n display: flex;\n align-items: center;\n gap: 24px;\n padding: 16px 24px;\n background: var(--bg-primary);\n border-bottom: 1px solid var(--border-color);\n min-height: var(--header-height);\n}\n\n.entity-identity {\n display: flex;\n align-items: center;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n.entity-icon {\n width: 48px;\n height: 48px;\n border-radius: var(--radius-md);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 20px;\n flex-shrink: 0;\n}\n\n.entity-info {\n min-width: 0;\n flex: 1;\n}\n\n.entity-title-row {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.entity-name {\n font-size: 20px;\n font-weight: 600;\n color: var(--text-primary);\n margin: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.status-badge {\n padding: 2px 8px;\n border-radius: 9999px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-badge.status-active {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-badge.status-deprecated {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.status-badge.status-disabled {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.entity-subtitle {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 4px;\n font-size: 13px;\n color: var(--text-secondary);\n}\n\n.schema-table {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--text-muted);\n}\n\n.separator {\n color: var(--border-color);\n}\n\n.entity-description {\n color: var(--text-secondary);\n}\n\n/* Header Stats */\n.header-stats {\n display: flex;\n gap: 4px;\n}\n\n.stat-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 8px 16px;\n border-radius: var(--radius-md);\n cursor: pointer;\n transition: background var(--transition-fast);\n}\n\n.stat-item:hover {\n background: var(--bg-tertiary);\n}\n\n.stat-item i {\n font-size: 16px;\n color: var(--text-muted);\n margin-bottom: 4px;\n}\n\n.stat-value {\n font-size: 18px;\n font-weight: 600;\n color: var(--text-primary);\n}\n\n.stat-label {\n font-size: 11px;\n color: var(--text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* ============================================================\n MAIN BODY (NAV RAIL + CANVAS)\n ============================================================ */\n\n.explorer-body {\n display: flex;\n flex: 1;\n overflow: hidden;\n}\n\n/* Navigation Rail - Minimalist Icon-First Design */\n.nav-rail {\n width: var(--nav-rail-width);\n background: var(--bg-primary);\n border-right: 1px solid var(--border-color);\n display: flex;\n flex-direction: column;\n padding: 8px 0;\n flex-shrink: 0;\n gap: 2px;\n}\n\n.nav-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 12px 4px 8px 4px;\n margin: 0 8px;\n border: none;\n background: transparent;\n border-radius: var(--radius-md);\n cursor: pointer;\n transition: all var(--transition-fast);\n position: relative;\n color: var(--text-muted);\n min-height: 54px;\n}\n\n.nav-item i {\n font-size: 18px;\n margin-bottom: 4px;\n transition: transform var(--transition-fast);\n}\n\n.nav-label {\n font-size: 9px;\n font-weight: 500;\n letter-spacing: 0.2px;\n white-space: nowrap;\n text-align: center;\n line-height: 1;\n opacity: 0.9;\n}\n\n.nav-badge {\n position: absolute;\n top: 4px;\n right: 4px;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n background: var(--accent-color);\n color: white;\n font-size: 10px;\n font-weight: 600;\n border-radius: 9999px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n\n.nav-item:hover {\n background: var(--bg-tertiary);\n color: var(--text-primary);\n}\n\n.nav-item:hover i {\n transform: scale(1.1);\n}\n\n.nav-item.active {\n background: var(--accent-light);\n color: var(--accent-color);\n}\n\n.nav-item.active i {\n transform: scale(1.05);\n}\n\n.nav-item.active::before {\n content: '';\n position: absolute;\n left: -8px;\n top: 50%;\n transform: translateY(-50%);\n width: 3px;\n height: 28px;\n background: var(--accent-color);\n border-radius: 0 3px 3px 0;\n}\n\n/* ============================================================\n MAIN CANVAS\n ============================================================ */\n\n.main-canvas {\n flex: 1;\n overflow: auto;\n transition: margin-right var(--transition-normal);\n display: flex;\n flex-direction: column;\n}\n\n.main-canvas.panel-open {\n margin-right: var(--detail-panel-width);\n}\n\n/* Sections */\n.section {\n padding: 24px;\n}\n\n.section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 20px;\n}\n\n.section-content {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n/* Search Box */\n.search-box {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 16px;\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-md);\n width: 300px;\n}\n\n.search-box i {\n color: var(--text-muted);\n}\n\n.search-box input {\n flex: 1;\n border: none;\n background: transparent;\n font-size: 14px;\n outline: none;\n color: var(--text-primary);\n}\n\n.search-box input::placeholder {\n color: var(--text-muted);\n}\n\n/* View Toggle */\n.view-toggle {\n display: flex;\n border: 1px solid var(--border-color);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.toggle-btn {\n padding: 8px 16px;\n border: none;\n background: var(--bg-primary);\n color: var(--text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n transition: all var(--transition-fast);\n}\n\n.toggle-btn:not(:last-child) {\n border-right: 1px solid var(--border-color);\n}\n\n.toggle-btn:hover {\n background: var(--bg-tertiary);\n}\n\n.toggle-btn.active {\n background: var(--accent-color);\n color: white;\n}\n\n/* Depth Selector */\n.depth-selector {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-left: auto;\n}\n\n.depth-label {\n font-size: 13px;\n color: var(--text-secondary);\n font-weight: 500;\n}\n\n.depth-buttons {\n display: flex;\n border: 1px solid var(--border-color);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.depth-btn {\n width: 32px;\n height: 32px;\n border: none;\n background: var(--bg-primary);\n color: var(--text-secondary);\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n transition: all var(--transition-fast);\n}\n\n.depth-btn:not(:last-child) {\n border-right: 1px solid var(--border-color);\n}\n\n.depth-btn:hover {\n background: var(--bg-tertiary);\n}\n\n.depth-btn.active {\n background: var(--accent-color);\n color: white;\n}\n\n/* Header Controls (view mode + expand/collapse) */\n.header-controls {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.view-mode-toggle {\n display: flex;\n border: 1px solid var(--border-color);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.expand-collapse-controls {\n display: flex;\n gap: 4px;\n}\n\n.control-btn {\n padding: 6px 10px;\n border: 1px solid var(--border-color);\n background: var(--bg-primary);\n color: var(--text-secondary);\n cursor: pointer;\n border-radius: var(--radius-sm);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n transition: all var(--transition-fast);\n}\n\n.control-btn:hover:not(:disabled) {\n background: var(--bg-tertiary);\n color: var(--text-primary);\n}\n\n.control-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n/* Fields List View - Modern Design */\n.fields-list-view {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--bg-primary);\n border-radius: var(--radius-lg);\n overflow: hidden;\n}\n\n.list-header {\n display: grid;\n grid-template-columns: 50px 1fr 1fr 100px 70px 100px 100px 1fr;\n gap: 12px;\n padding: 12px 20px;\n background: var(--bg-secondary);\n border-bottom: 2px solid var(--border-color);\n position: sticky;\n top: 0;\n z-index: 10;\n}\n\n.list-header .list-col {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--text-secondary);\n}\n\n.list-header .list-col.sortable {\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color var(--transition-fast);\n user-select: none;\n}\n\n.list-header .list-col.sortable:hover {\n color: var(--accent-color);\n}\n\n.list-header .list-col.sortable.sorted {\n color: var(--accent-color);\n}\n\n.sort-icon {\n font-size: 10px;\n opacity: 0.4;\n transition: opacity var(--transition-fast);\n}\n\n.list-col.sortable:hover .sort-icon {\n opacity: 0.7;\n}\n\n.list-col.sortable.sorted .sort-icon {\n opacity: 1;\n}\n\n.list-body {\n flex: 1;\n overflow-y: auto;\n}\n\n.list-row {\n display: grid;\n grid-template-columns: 50px 1fr 1fr 100px 70px 100px 100px 1fr;\n gap: 12px;\n padding: 14px 20px;\n border-bottom: 1px solid var(--border-light);\n cursor: pointer;\n transition: all var(--transition-fast);\n align-items: center;\n}\n\n.list-row:hover {\n background: var(--bg-secondary);\n}\n\n.list-row.selected {\n background: var(--accent-light);\n border-left: 3px solid var(--accent-color);\n padding-left: 17px;\n}\n\n.list-row:last-child {\n border-bottom: none;\n}\n\n/* Column-specific styling */\n.col-seq {\n text-align: center;\n}\n\n.seq-num {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n background: var(--bg-tertiary);\n border-radius: 50%;\n font-size: 11px;\n font-weight: 600;\n color: var(--text-secondary);\n}\n\n.list-row:hover .seq-num,\n.list-row.selected .seq-num {\n background: var(--accent-color);\n color: white;\n}\n\n.col-name {\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n}\n\n.field-type-icon {\n color: var(--accent-color);\n font-size: 16px;\n width: 20px;\n flex-shrink: 0;\n}\n\n.field-name-text {\n font-weight: 500;\n color: var(--text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n}\n\n.col-display-name {\n min-width: 0;\n}\n\n.display-name-text {\n font-weight: 500;\n color: var(--text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.type-tag {\n display: inline-block;\n padding: 4px 10px;\n background: var(--bg-tertiary);\n border-radius: 20px;\n font-size: 11px;\n font-weight: 500;\n color: var(--text-secondary);\n font-family: 'SF Mono', 'Consolas', monospace;\n}\n\n.length-value {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--text-primary);\n}\n\n.length-value.muted {\n color: var(--text-muted);\n}\n\n.required-indicator {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 11px;\n font-weight: 500;\n padding: 4px 8px;\n border-radius: 4px;\n}\n\n.required-indicator.required {\n color: var(--danger-color);\n background: color-mix(in srgb, var(--mj-status-error) 10%, transparent);\n}\n\n.required-indicator.required i {\n color: var(--danger-color);\n}\n\n.required-indicator.optional {\n color: var(--text-muted);\n background: transparent;\n}\n\n.flag-badges {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.flag-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.flag-badge.pk {\n background: var(--mj-status-warning);\n color: var(--mj-bg-surface);\n}\n\n.flag-badge.fk {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n.flag-badge.encrypted {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n.col-desc {\n min-width: 0;\n}\n\n.desc-text {\n font-size: 13px;\n color: var(--text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n}\n\n.list-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: var(--text-muted);\n gap: 12px;\n}\n\n.list-empty i {\n font-size: 32px;\n opacity: 0.5;\n}\n\n.list-empty span {\n font-size: 14px;\n}\n\n/* ============================================================\n OVERVIEW SECTION\n ============================================================ */\n\n.stats-cards {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n}\n\n.stat-card {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 16px;\n position: relative;\n transition: all var(--transition-fast);\n}\n\n.stat-card.clickable {\n cursor: pointer;\n}\n\n.stat-card.clickable:hover {\n border-color: var(--accent-color);\n box-shadow: var(--shadow-md);\n transform: translateY(-2px);\n}\n\n.stat-card.clickable:hover .stat-card-action {\n opacity: 1;\n transform: translateX(0);\n}\n\n.stat-card-action {\n position: absolute;\n right: 16px;\n top: 50%;\n transform: translateY(-50%) translateX(-4px);\n color: var(--accent-color);\n opacity: 0;\n transition: all var(--transition-fast);\n}\n\n.stat-card-action i {\n font-size: 14px;\n}\n\n.stat-card-header {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--text-secondary);\n font-size: 13px;\n margin-bottom: 12px;\n}\n\n.stat-card-header i {\n font-size: 14px;\n}\n\n.stat-card-body .stat-main {\n font-size: 32px;\n font-weight: 700;\n color: var(--text-primary);\n line-height: 1;\n margin-bottom: 8px;\n}\n\n.stat-card-body .stat-details {\n display: flex;\n gap: 12px;\n font-size: 12px;\n color: var(--text-muted);\n}\n\n/* Info Panels */\n.info-panel {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary);\n margin: 0 0 16px 0;\n}\n\n.panel-title i {\n color: var(--accent-color);\n}\n\n/* Capability Tags */\n.capability-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.capability-tag {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 9999px;\n font-size: 12px;\n font-weight: 500;\n}\n\n.capability-tag i {\n font-size: 10px;\n}\n\n.capability-tag.disabled {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n/* Info Grid */\n.info-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.info-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.info-label {\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n}\n\n.info-value {\n font-size: 14px;\n color: var(--text-primary);\n}\n\n.info-value.code {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 13px;\n color: var(--accent-dark);\n}\n\n/* ============================================================\n FIELDS SECTION\n ============================================================ */\n\n.fields-content {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n overflow: hidden;\n}\n\n.field-groups {\n display: flex;\n flex-direction: column;\n}\n\n.field-group {\n border-bottom: 1px solid var(--border-light);\n}\n\n.field-group:last-child {\n border-bottom: none;\n}\n\n.group-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 20px;\n cursor: pointer;\n transition: background var(--transition-fast);\n user-select: none;\n background: var(--bg-secondary);\n border-left: 3px solid var(--accent-color);\n}\n\n.group-header:hover {\n background: var(--bg-tertiary);\n}\n\n.expand-icon {\n font-size: 10px;\n color: var(--text-muted);\n width: 16px;\n transition: transform var(--transition-fast);\n}\n\n.group-icon {\n font-size: 16px;\n color: var(--accent-color);\n width: 20px;\n text-align: center;\n}\n\n.group-label {\n flex: 1;\n font-size: 15px;\n font-weight: 600;\n color: var(--text-primary);\n letter-spacing: 0.01em;\n text-transform: uppercase;\n}\n\n.group-count {\n padding: 3px 10px;\n background: var(--accent-light);\n border-radius: 9999px;\n font-size: 12px;\n font-weight: 600;\n color: var(--accent-color);\n}\n\n.group-content {\n border-top: 1px solid var(--border-light);\n background: var(--bg-secondary);\n}\n\n.field-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 20px 12px 48px;\n cursor: pointer;\n transition: background var(--transition-fast);\n border-bottom: 1px solid var(--border-light);\n}\n\n.field-item:last-child {\n border-bottom: none;\n}\n\n.field-item:hover {\n background: var(--accent-light);\n}\n\n.field-item.selected {\n background: var(--accent-light);\n border-left: 3px solid var(--accent-color);\n padding-left: 45px;\n}\n\n.field-icon {\n width: 28px;\n height: 28px;\n border-radius: var(--radius-sm);\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n color: var(--text-muted);\n flex-shrink: 0;\n}\n\n.field-info {\n flex: 1;\n min-width: 0;\n}\n\n.field-name {\n font-size: 14px;\n font-weight: 500;\n color: var(--text-primary);\n}\n\n.field-db-name {\n font-size: 11px;\n font-family: 'SF Mono', 'Consolas', monospace;\n color: var(--text-secondary);\n margin-top: 2px;\n}\n\n.field-meta {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 2px;\n font-size: 12px;\n}\n\n.field-type {\n font-family: 'SF Mono', 'Consolas', monospace;\n color: var(--text-muted);\n}\n\n.field-nullable {\n color: var(--danger-color);\n}\n\n.field-related {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n color: var(--accent-color);\n cursor: pointer;\n}\n\n.field-related:hover {\n text-decoration: underline;\n}\n\n.field-badges {\n display: flex;\n gap: 4px;\n}\n\n.badge {\n padding: 2px 6px;\n border-radius: var(--radius-sm);\n font-size: 10px;\n font-weight: 600;\n}\n\n.badge.pk {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.badge.fk {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.badge.encrypted {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n/* ============================================================\n RELATIONSHIPS SECTION\n ============================================================ */\n\n.relationships-graph {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n min-height: 600px;\n height: calc(100vh - 280px);\n max-height: 800px;\n display: flex;\n align-items: stretch;\n justify-content: stretch;\n overflow: hidden;\n}\n\n.relationships-graph mj-entity-erd,\n.relationships-graph mj-erd-composite {\n width: 100%;\n height: 100%;\n flex: 1;\n}\n\n/* ERD Splitter for details panel */\n.relationships-graph .erd-splitter {\n width: 100%;\n height: 100%;\n}\n\n.relationships-graph kendo-splitter-pane {\n display: flex;\n flex-direction: column;\n}\n\n.relationships-graph mj-entity-details {\n height: 100%;\n overflow: auto;\n}\n\n.graph-placeholder {\n text-align: center;\n color: var(--text-muted);\n}\n\n.graph-placeholder i {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.5;\n}\n\n.graph-placeholder p {\n margin: 0;\n}\n\n.graph-placeholder .hint {\n font-size: 12px;\n margin-top: 8px;\n}\n\n.relationships-list {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n.relationship-group {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n overflow: hidden;\n}\n\n.relationship-group-title {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 20px;\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary);\n background: var(--bg-tertiary);\n border-bottom: 1px solid var(--border-color);\n}\n\n.relationship-group-title i {\n color: var(--accent-color);\n}\n\n.relationship-items {\n display: flex;\n flex-direction: column;\n}\n\n.relationship-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 20px;\n cursor: pointer;\n transition: background var(--transition-fast);\n border-bottom: 1px solid var(--border-light);\n}\n\n.relationship-item:last-child {\n border-bottom: none;\n}\n\n.relationship-item:hover {\n background: var(--accent-light);\n}\n\n.relationship-item.hidden {\n display: none;\n}\n\n.rel-icon {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: var(--accent-light);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--accent-color);\n font-size: 12px;\n}\n\n.rel-info {\n flex: 1;\n}\n\n.rel-entity {\n font-size: 14px;\n font-weight: 500;\n color: var(--accent-color);\n cursor: pointer;\n}\n\n.rel-entity:hover {\n text-decoration: underline;\n}\n\n.rel-field {\n font-size: 12px;\n color: var(--text-muted);\n margin-top: 2px;\n}\n\n.rel-meta {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.rel-type,\n.rel-display-type {\n padding: 2px 8px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-sm);\n font-size: 11px;\n color: var(--text-muted);\n}\n\n.rel-bundle {\n color: var(--success-color);\n}\n\n/* Grouped relationship styles */\n.relationship-group-title .group-count {\n margin-left: auto;\n background: var(--accent-light);\n color: var(--accent-color);\n padding: 2px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.relationship-items.grouped {\n padding: 8px 0;\n}\n\n.relationship-item-grouped {\n padding: 12px 20px;\n border-bottom: 1px solid var(--border-light);\n}\n\n.relationship-item-grouped:last-child {\n border-bottom: none;\n}\n\n.rel-header {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 10px;\n}\n\n.rel-icon.outgoing {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.rel-icon.incoming {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.rel-entity-name {\n font-size: 15px;\n font-weight: 600;\n color: var(--text-primary);\n}\n\n.rel-fields-chips {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n padding-left: 44px; /* Align with entity name (icon width + gap) */\n}\n\n.field-chip {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 5px 12px;\n border-radius: 16px;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.field-chip i {\n font-size: 10px;\n}\n\n.field-chip.outgoing {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid var(--mj-brand-primary);\n}\n\n.field-chip.outgoing:hover {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n.field-chip.incoming {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border: 1px solid var(--mj-status-success);\n}\n\n.field-chip.incoming:hover {\n background: var(--mj-status-success);\n color: white;\n}\n\n.field-chip .bundle-icon {\n font-size: 9px;\n margin-left: 2px;\n opacity: 0.8;\n}\n\n/* ============================================================\n PERMISSIONS SECTION\n ============================================================ */\n\n.permissions-matrix {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n overflow: hidden;\n}\n\n.matrix-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.matrix-table th,\n.matrix-table td {\n padding: 12px 16px;\n text-align: left;\n border-bottom: 1px solid var(--border-light);\n}\n\n.matrix-table th {\n background: var(--bg-tertiary);\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n}\n\n.matrix-table th.center,\n.matrix-table td.center {\n text-align: center;\n}\n\n.matrix-table tbody tr:hover {\n background: var(--bg-secondary);\n}\n\n.role-name {\n font-weight: 500;\n color: var(--text-primary);\n}\n\n.permission-icon {\n font-size: 14px;\n}\n\n.permission-icon.granted {\n color: var(--success-color);\n}\n\n.permission-icon.denied {\n color: var(--text-muted);\n}\n\n.rls-info {\n display: flex;\n gap: 4px;\n}\n\n.rls-badge {\n width: 20px;\n height: 20px;\n border-radius: var(--radius-sm);\n background: var(--warning-color);\n color: white;\n font-size: 10px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.no-rls {\n color: var(--text-muted);\n font-size: 12px;\n}\n\n/* API Capabilities */\n.api-capabilities {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.capability-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n gap: 12px;\n}\n\n.capability-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-md);\n font-size: 13px;\n color: var(--text-muted);\n}\n\n.capability-item i {\n font-size: 12px;\n}\n\n.capability-item.enabled {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.capability-item.enabled i {\n color: var(--success-color);\n}\n\n/* ============================================================\n LINEAGE SECTION\n ============================================================ */\n\n.lineage-diagram {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 24px;\n padding: 40px;\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n}\n\n.lineage-stage {\n text-align: center;\n}\n\n.lineage-stage h4 {\n font-size: 12px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n margin: 0 0 12px 0;\n}\n\n.lineage-items {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.lineage-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-md);\n font-size: 13px;\n color: var(--text-secondary);\n}\n\n.lineage-item i {\n color: var(--accent-color);\n}\n\n.lineage-arrow {\n font-size: 24px;\n color: var(--text-muted);\n}\n\n.entity-node .entity-box {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 24px 32px;\n background: var(--accent-color);\n color: white;\n border-radius: var(--radius-lg);\n font-weight: 600;\n}\n\n.entity-node .entity-box i {\n font-size: 24px;\n}\n\n.tracking-config {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.config-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.config-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-md);\n font-size: 13px;\n color: var(--text-muted);\n}\n\n.config-item.enabled {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.config-item .config-label {\n color: var(--text-muted);\n}\n\n.config-item .config-value {\n font-weight: 500;\n color: var(--text-primary);\n}\n\n/* ============================================================\n HISTORY SECTION\n ============================================================ */\n\n.history-config {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.config-status {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n}\n\n.config-status i {\n font-size: 24px;\n color: var(--text-muted);\n margin-top: 2px;\n}\n\n.config-status.enabled i {\n color: var(--success-color);\n}\n\n.config-text strong {\n display: block;\n font-size: 16px;\n color: var(--text-primary);\n margin-bottom: 4px;\n}\n\n.config-text span {\n font-size: 14px;\n color: var(--text-secondary);\n}\n\n.history-info {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 16px;\n}\n\n.info-card {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.info-card h4 {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n color: var(--text-primary);\n margin: 0 0 12px 0;\n}\n\n.info-card h4 i {\n color: var(--accent-color);\n}\n\n.info-card p {\n font-size: 14px;\n color: var(--text-secondary);\n line-height: 1.6;\n margin: 0;\n}\n\n.info-card code {\n background: var(--bg-tertiary);\n padding: 2px 6px;\n border-radius: var(--radius-sm);\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--accent-dark);\n}\n\n.audit-fields-list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.audit-fields-list li {\n padding: 8px 0;\n font-size: 14px;\n color: var(--text-secondary);\n border-bottom: 1px solid var(--border-light);\n}\n\n.audit-fields-list li:last-child {\n border-bottom: none;\n}\n\n/* ============================================================\n SETTINGS SECTION\n ============================================================ */\n\n.settings-panel {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.settings-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.setting-item {\n padding: 12px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-md);\n}\n\n.setting-name {\n font-weight: 500;\n color: var(--text-primary);\n margin-bottom: 4px;\n}\n\n.setting-value {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--accent-dark);\n word-break: break-all;\n}\n\n.setting-value-json {\n margin-top: 8px;\n border-radius: var(--radius-sm);\n overflow: hidden;\n border: 1px solid var(--border-color);\n background: var(--mj-bg-surface-sunken);\n}\n\n.setting-value-json mj-code-editor {\n display: block;\n max-height: 300px;\n}\n\n.setting-value-json ::ng-deep .cm-editor {\n font-size: 12px;\n background: var(--mj-bg-surface-sunken);\n}\n\n.setting-value-json ::ng-deep .cm-gutters {\n background: var(--mj-bg-surface-sunken);\n border-right: 1px solid var(--border-color);\n}\n\n.setting-comment {\n font-size: 12px;\n color: var(--text-muted);\n margin-top: 8px;\n}\n\n.fts-config,\n.settings-section .config-grid {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.config-row {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-row .config-label {\n width: 100px;\n font-size: 12px;\n color: var(--text-muted);\n}\n\n.config-row .config-value {\n font-size: 14px;\n color: var(--text-primary);\n}\n\n.config-row .config-value.code {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--accent-dark);\n}\n\n.config-row .config-value.enabled {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--success-color);\n}\n\n/* ============================================================\n DETAIL PANEL (Slide-in from right)\n ============================================================ */\n\n.detail-panel {\n position: fixed;\n top: 0;\n right: 0;\n width: var(--detail-panel-width);\n height: 100%;\n background: var(--bg-primary);\n border-left: 1px solid var(--border-color);\n box-shadow: var(--shadow-lg);\n transform: translateX(100%);\n transition: transform var(--transition-normal);\n z-index: 100;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.detail-panel.open {\n transform: translateX(0);\n}\n\n.panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--border-color);\n flex-shrink: 0;\n}\n\n.panel-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--text-primary);\n}\n\n.close-btn {\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n border-radius: var(--radius-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--text-muted);\n transition: all var(--transition-fast);\n}\n\n.close-btn:hover {\n background: var(--bg-tertiary);\n color: var(--text-primary);\n}\n\n.panel-content {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n.detail-section {\n margin-bottom: 24px;\n}\n\n.detail-section:last-child {\n margin-bottom: 0;\n}\n\n.detail-section h4 {\n font-size: 16px;\n font-weight: 600;\n color: var(--text-primary);\n margin: 0 0 8px 0;\n}\n\n.detail-section h5 {\n font-size: 12px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n margin: 0 0 12px 0;\n}\n\n.detail-field-db-name {\n font-size: 12px;\n font-family: 'SF Mono', 'Consolas', monospace;\n color: var(--text-secondary);\n margin-top: 4px;\n margin-bottom: 4px;\n}\n\n.field-description {\n font-size: 14px;\n color: var(--text-secondary);\n line-height: 1.5;\n margin: 0;\n}\n\n.detail-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.detail-item .label {\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n}\n\n.detail-item .value {\n font-size: 14px;\n color: var(--text-primary);\n}\n\n.detail-item .value.code {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--accent-dark);\n}\n\n.detail-item .value.link {\n color: var(--accent-color);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.detail-item .value.link:hover {\n text-decoration: underline;\n}\n\n.value-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.value-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-md);\n font-size: 13px;\n}\n\n.value-code {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 11px;\n color: var(--accent-dark);\n background: var(--bg-primary);\n padding: 2px 6px;\n border-radius: var(--radius-sm);\n}\n\n.value-display {\n color: var(--text-primary);\n}\n\n/* ============================================================\n EMPTY STATES\n ============================================================ */\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n text-align: center;\n color: var(--text-muted);\n}\n\n.empty-state i {\n font-size: 32px;\n margin-bottom: 12px;\n opacity: 0.5;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 14px;\n}\n\n/* ============================================================\n LOADING / ERROR STATES\n ============================================================ */\n\n.explorer-loading,\n.explorer-error,\n.explorer-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 40px;\n text-align: center;\n color: var(--text-muted);\n}\n\n.explorer-error i,\n.explorer-empty i {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.5;\n}\n\n.explorer-error {\n color: var(--danger-color);\n}\n\n.explorer-error i {\n opacity: 1;\n}\n\n/* ============================================================\n IS-A TYPE HIERARCHY & VIRTUAL ENTITY STYLES\n ============================================================ */\n\n/* Badge variants for header */\n.isa-badge {\n font-size: 11px;\n font-weight: 600;\n padding: 3px 10px;\n border-radius: 12px;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n cursor: default;\n white-space: nowrap;\n}\n\n.isa-badge.virtual {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.isa-badge.child-type {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.isa-badge.child-type:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 22%, transparent);\n}\n\n.isa-badge.parent-type {\n background: color-mix(in srgb, var(--mj-status-success) 12%, transparent);\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 25%, transparent);\n}\n\n.isa-badge.overlapping {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, transparent);\n color: var(--mj-status-warning);\n border: 1px solid color-mix(in srgb, var(--mj-status-warning) 25%, transparent);\n}\n\n/* Breadcrumb under title */\n.isa-breadcrumb {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n margin-top: 2px;\n padding: 2px 0;\n}\n\n.isa-breadcrumb i {\n font-size: 11px;\n opacity: 0.7;\n}\n\n/* IS-A Panel (overview section) */\n.isa-panel {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.isa-info-row {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 6px;\n font-size: 13px;\n color: var(--text-primary);\n}\n\n.isa-info-row.virtual-info {\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, transparent);\n}\n\n.isa-info-row.virtual-info i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.isa-info-row .code {\n font-family: 'SF Mono', 'Cascadia Code', 'Consolas', monospace;\n font-size: 12px;\n background: color-mix(in srgb, var(--mj-text-primary) 6%, transparent);\n padding: 1px 6px;\n border-radius: 3px;\n color: var(--mj-brand-primary);\n}\n\n/* Inheritance chain */\n.isa-chain {\n padding: 8px 0;\n}\n\n.isa-chain-label {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n margin-bottom: 8px;\n}\n\n.isa-chain-nodes {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n padding: 6px 0;\n}\n\n.isa-node {\n display: inline-flex;\n align-items: center;\n padding: 5px 12px;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n}\n\n.isa-node.current {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n.isa-node.parent {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n}\n\n.isa-arrow {\n color: var(--text-muted);\n font-size: 11px;\n}\n\n.isa-inherited-fields {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--text-muted);\n margin-top: 8px;\n padding-top: 8px;\n border-top: 1px solid var(--border-color);\n}\n\n.isa-inherited-fields i {\n font-size: 12px;\n color: var(--mj-brand-primary);\n}\n\n/* Child types list */\n.isa-children {\n padding: 8px 0;\n}\n\n.isa-child-list {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n padding: 4px 0;\n}\n\n.isa-child-chip {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 12px;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 20%, transparent);\n}\n\n/* Clickable elements */\n.clickable {\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.clickable:hover {\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.isa-node.parent.clickable:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n.isa-child-chip.clickable:hover {\n background: color-mix(in srgb, var(--mj-status-success) 20%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-success) 35%, transparent);\n}\n\n/* Field inherited badge (card and list views) */\n.badge.inherited,\n.flag-badge.inherited {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n font-size: 10px;\n font-weight: 600;\n gap: 3px;\n}\n\n.flag-badge.inherited {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n padding: 1px 6px;\n border-radius: 4px;\n font-size: 10px;\n}\n\n.flag-badge.inherited i {\n font-size: 9px;\n}\n\n/* IS-A source section in field detail panel */\n.isa-source-section {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n border-radius: 6px;\n padding: 12px;\n margin: -4px -12px 8px;\n}\n\n.isa-source-section h5 {\n color: var(--mj-brand-primary);\n}\n\n.isa-source-section h5 i {\n margin-right: 4px;\n}\n\n/* IS-A settings panel */\n.isa-settings-panel {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.isa-settings-panel .link {\n color: var(--mj-brand-primary);\n cursor: pointer;\n transition: color 0.15s ease;\n}\n\n.isa-settings-panel .link:hover {\n color: var(--mj-brand-primary);\n text-decoration: underline;\n}\n\n.isa-settings-panel .muted {\n color: var(--text-muted);\n}\n\n/* IS-A Field Inspector */\n.isa-field-inspector {\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--border-color);\n}\n\n.isa-field-inspector > .isa-chain-label {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.isa-inspector-groups {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-top: 8px;\n}\n\n.isa-inspector-group {\n border-radius: 6px;\n padding: 8px 12px;\n border: 1px solid var(--border-color);\n}\n\n.isa-inspector-group.own {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.isa-inspector-group.inherited {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.isa-inspector-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 6px;\n}\n\n.isa-inspector-entity {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 600;\n color: var(--text-primary);\n}\n\n.isa-inspector-count {\n font-size: 11px;\n color: var(--text-muted);\n font-weight: 500;\n}\n\n.isa-inspector-fields {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.isa-inspector-field {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 4px;\n background: color-mix(in srgb, var(--mj-text-primary) 4%, transparent);\n color: var(--text-primary);\n}\n\n.isa-inspector-type {\n font-size: 10px;\n color: var(--text-muted);\n font-family: 'SF Mono', 'Cascadia Code', 'Consolas', monospace;\n}\n\n/* Sibling chips */\n.isa-siblings {\n padding: 8px 0;\n}\n\n.isa-sibling-chip {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 12px;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent);\n color: var(--mj-status-warning);\n border: 1px solid color-mix(in srgb, var(--mj-status-warning) 20%, transparent);\n}\n\n.isa-sibling-chip.clickable:hover {\n background: color-mix(in srgb, var(--mj-status-warning) 20%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-warning) 35%, transparent);\n}\n\n/* Child count badge */\n.isa-child-count {\n font-size: 11px;\n background: color-mix(in srgb, var(--mj-text-primary) 8%, transparent);\n padding: 1px 6px;\n border-radius: 8px;\n margin-left: 2px;\n font-weight: 600;\n}\n\n.isa-child-count i {\n font-size: 10px;\n}\n\n/* ============================================================\n DATA SECTION\n ============================================================ */\n.data-section {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n padding: 0;\n overflow: hidden;\n}\n\n.data-viewer-container {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n", ".k-pane {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin {\n margin: 10px;\n}\n\n\na {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon {\n margin-right: 5px;\n}\n\n.record-form {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton {\n margin-right: 5px;\n}\n\n.record-form h2 {\n margin-bottom: 10px;\n}\n\n.k-splitter {\n border-width: 0px;\n}\n\n.record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form .record-form-row > :first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form .record-form-row > span {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n/* Collapsible Panel Styles */\n.form-panels-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n/* All field sections take full width */\n.form-panels-container > .form-card {\n width: 100%;\n}\n\n/* Related entity grid container - responsive layout */\n.form-panels-container .related-entity-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n/* Responsive multi-column layout for related entities on wider screens */\n@media (min-width: 1400px) {\n .form-panels-container .related-entity-grid {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card {\n overflow: hidden;\n}\n\n.collapsible-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title i {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header .collapse-icon {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body {\n padding: 24px;\n}\n\n/* Related Entity Sections - Visual Distinction */\n.form-card.related-entity {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-header {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-title i {\n color: var(--mj-brand-primary);\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls .control-group {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls button {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls button:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls button:active {\n transform: translateY(0);\n}\n\n.form-section-controls button i {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls .section-search {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls .section-search::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n/* Hidden sections for search filter */\n.form-card.search-hidden {\n display: none;\n}\n\n/* Section count badge */\n.section-count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Search highlighting in section names */\n.collapsible-title h3 .search-highlight {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n/* Row count badge in section headers */\n.collapsible-title .row-count-badge {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n/* Gray badge for zero rows (loaded but empty) */\n.collapsible-title .row-count-badge.zero-rows {\n background: var(--mj-text-muted);\n}\n"] }]
3588
+ args: [{ standalone: false, selector: 'mj-entity-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!isExplorerLoading && entity) {\n <div class=\"entity-explorer\">\n <!-- ============================================================ -->\n <!-- HEADER BAR -->\n <!-- ============================================================ -->\n <header class=\"explorer-header\">\n <div class=\"entity-identity\">\n <div class=\"entity-icon\" [style.background-color]=\"'var(--mj-brand-primary)'\">\n <i [class]=\"entityIcon\"></i>\n </div>\n <div class=\"entity-info\">\n <div class=\"entity-title-row\">\n <h1 class=\"entity-name\">{{ entityDisplayName }}</h1>\n <span class=\"status-badge\" [ngClass]=\"statusClass\">\n {{ entity.Status }}\n </span>\n @if (IsVirtualEntity) {\n <span class=\"status-badge isa-badge virtual\">\n <i class=\"fa-solid fa-eye\"></i> Virtual\n </span>\n }\n @if (IsChildType) {\n <span class=\"status-badge isa-badge child-type\" (click)=\"NavigateToEntity(ParentChain[0])\" title=\"Click to navigate to parent entity\">\n <i class=\"fa-solid fa-arrow-up\"></i> IS-A {{ ParentChain[0]?.Name }}\n </span>\n }\n @if (IsParentType) {\n <span class=\"status-badge isa-badge parent-type\">\n <i class=\"fa-solid fa-sitemap\"></i> {{ ChildEntities.length }} child type{{ ChildEntities.length !== 1 ? 's' : '' }}\n </span>\n @if (HasOverlappingSubtypes) {\n <span class=\"status-badge isa-badge overlapping\" title=\"Multiple child types can coexist for a single parent record\">\n <i class=\"fa-solid fa-clone\"></i> Overlapping Subtypes\n </span>\n }\n }\n </div>\n @if (IsChildType) {\n <div class=\"isa-breadcrumb\">\n <i class=\"fa-solid fa-layer-group\"></i>\n {{ IsaBreadcrumb }}\n </div>\n }\n <div class=\"entity-subtitle\">\n <span class=\"schema-table\">{{ entity.SchemaName }}.{{ entity.BaseTable }}</span>\n <span class=\"separator\">|</span>\n @if (entity.Description) {\n <span class=\"entity-description\" [title]=\"entity.Description\">\n {{ entity.Description | slice:0:80 }}{{ entity.Description.length > 80 ? '...' : '' }}\n </span>\n }\n </div>\n </div>\n </div>\n <div class=\"header-stats\">\n <div class=\"stat-item\" (click)=\"setActiveSection('fields')\">\n <i class=\"fa-solid fa-table-columns\"></i>\n <span class=\"stat-value\">{{ stats.fieldCount }}</span>\n <span class=\"stat-label\">Fields</span>\n </div>\n <div class=\"stat-item\" (click)=\"setActiveSection('relationships')\">\n <i class=\"fa-solid fa-link\"></i>\n <span class=\"stat-value\">{{ stats.relationshipCount }}</span>\n <span class=\"stat-label\">Relations</span>\n </div>\n <div class=\"stat-item\" (click)=\"setActiveSection('permissions')\">\n <i class=\"fa-solid fa-shield-halved\"></i>\n <span class=\"stat-value\">{{ stats.permissionCount }}</span>\n <span class=\"stat-label\">Roles</span>\n </div>\n <div class=\"stat-item\" (click)=\"setActiveSection('data')\">\n <i class=\"fa-solid fa-database\"></i>\n @if (!isRowCountLoading) {\n <span class=\"stat-value\">{{ formattedRowCount }}</span>\n }\n @if (isRowCountLoading) {\n <span class=\"stat-value loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n </span>\n }\n <span class=\"stat-label\">Rows</span>\n </div>\n </div>\n </header>\n <!-- ============================================================ -->\n <!-- MAIN CONTENT AREA -->\n <!-- ============================================================ -->\n <div class=\"explorer-body\">\n <!-- Navigation Rail -->\n <nav class=\"nav-rail\">\n @for (item of navItems; track item) {\n <button\n class=\"nav-item\"\n [class.active]=\"activeSection === item.id\"\n (click)=\"setActiveSection(item.id)\"\n [title]=\"item.label\">\n <i [class]=\"item.icon\"></i>\n <span class=\"nav-label\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"nav-badge\">{{ item.badge }}</span>\n }\n </button>\n }\n </nav>\n <!-- Main Canvas -->\n <main class=\"main-canvas\" [class.panel-open]=\"detailPanelOpen\">\n <!-- ============================================================ -->\n <!-- OVERVIEW SECTION -->\n <!-- ============================================================ -->\n @if (activeSection === 'overview') {\n <section class=\"section overview-section\">\n <div class=\"section-content\">\n <!-- Stats Cards Row - Clickable to navigate to sections -->\n <div class=\"stats-cards\">\n <div class=\"stat-card clickable\" (click)=\"setActiveSection('fields')\" title=\"View all fields\">\n <div class=\"stat-card-header\">\n <i class=\"fa-solid fa-table-cells\"></i>\n <span>Fields</span>\n </div>\n <div class=\"stat-card-body\">\n <div class=\"stat-main\">{{ stats.fieldCount }}</div>\n <div class=\"stat-details\">\n <span>{{ stats.primaryKeyCount }} PKs</span>\n <span>{{ stats.foreignKeyCount }} FKs</span>\n @if (stats.encryptedFieldCount) {\n <span>{{ stats.encryptedFieldCount }} Encrypted</span>\n }\n </div>\n </div>\n <div class=\"stat-card-action\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n </div>\n <div class=\"stat-card clickable\" (click)=\"setActiveSection('relationships')\" title=\"View relationships\">\n <div class=\"stat-card-header\">\n <i class=\"fa-solid fa-diagram-project\"></i>\n <span>Relationships</span>\n </div>\n <div class=\"stat-card-body\">\n <div class=\"stat-main\">{{ stats.relationshipCount }}</div>\n <div class=\"stat-details\">\n <span>{{ groupedOutgoingRelationships.length }} Out</span>\n <span>{{ groupedIncomingRelationships.length }} In</span>\n </div>\n </div>\n <div class=\"stat-card-action\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n </div>\n <div class=\"stat-card clickable\" (click)=\"setActiveSection('permissions')\" title=\"View security settings\">\n <div class=\"stat-card-header\">\n <i class=\"fa-solid fa-lock\"></i>\n <span>Security</span>\n </div>\n <div class=\"stat-card-body\">\n <div class=\"stat-main\">{{ stats.permissionCount }}</div>\n <div class=\"stat-details\">\n <span>Roles configured</span>\n </div>\n </div>\n <div class=\"stat-card-action\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-card-header\">\n <i class=\"fa-solid fa-database\"></i>\n <span>Data</span>\n </div>\n <div class=\"stat-card-body\">\n <div class=\"stat-main\">{{ formattedRowCount }}</div>\n <div class=\"stat-details\">\n @if (entity.RowCountRunAt) {\n <span>Updated {{ entity.RowCountRunAt | date:'short' }}</span>\n }\n @if (!entity.RowCountRunAt) {\n <span>Row count</span>\n }\n </div>\n </div>\n </div>\n </div>\n <!-- Capabilities -->\n <div class=\"info-panel capabilities-panel\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-bolt\"></i>\n Capabilities\n </h3>\n <div class=\"capability-tags\">\n @for (cap of capabilitySummary; track cap) {\n <span class=\"capability-tag\">\n <i class=\"fa-solid fa-check\"></i>\n {{ cap }}\n </span>\n }\n @if (!entity.IncludeInAPI) {\n <span class=\"capability-tag disabled\">\n <i class=\"fa-solid fa-xmark\"></i>\n No API\n </span>\n }\n </div>\n </div>\n <!-- IS-A Type Hierarchy -->\n @if (HasISARelationship || IsVirtualEntity) {\n <div class=\"info-panel isa-panel\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-layer-group\"></i>\n Type Hierarchy\n </h3>\n @if (IsVirtualEntity) {\n <div class=\"isa-info-row virtual-info\">\n <i class=\"fa-solid fa-eye\"></i>\n <span>Virtual Entity \u2014 read-only view backed by <span class=\"code\">{{ entity.BaseView }}</span></span>\n </div>\n }\n @if (IsChildType) {\n <div class=\"isa-chain\">\n <div class=\"isa-chain-label\">Inheritance Chain</div>\n <div class=\"isa-chain-nodes\">\n <span class=\"isa-node current\">{{ entity.Name }}</span>\n @for (parent of ParentChain; track parent.ID) {\n <i class=\"fa-solid fa-arrow-right isa-arrow\"></i>\n <span class=\"isa-node parent clickable\" (click)=\"NavigateToEntity(parent)\" [title]=\"'Navigate to ' + parent.Name\">\n {{ parent.Name }}\n </span>\n }\n </div>\n <div class=\"isa-inherited-fields\">\n <i class=\"fa-solid fa-table-cells\"></i>\n <span>{{ InheritedFieldCount }} field{{ InheritedFieldCount !== 1 ? 's' : '' }} inherited from parent{{ ParentChain.length > 1 ? 's' : '' }}</span>\n </div>\n </div>\n <!-- IS-A Field Inspector: shows fields grouped by source entity -->\n @if (isaFieldGroups.length > 1) {\n <div class=\"isa-field-inspector\">\n <div class=\"isa-chain-label clickable\" (click)=\"isaFieldInspectorExpanded = !isaFieldInspectorExpanded\">\n <i class=\"fa-solid\" [ngClass]=\"isaFieldInspectorExpanded ? 'fa-chevron-down' : 'fa-chevron-right'\"></i>\n Field Source Inspector\n </div>\n @if (isaFieldInspectorExpanded) {\n <div class=\"isa-inspector-groups\">\n @for (group of isaFieldGroups; track group.EntityName) {\n <div class=\"isa-inspector-group\" [class.own]=\"group.Level === 0\" [class.inherited]=\"group.Level > 0\">\n <div class=\"isa-inspector-header\">\n <span class=\"isa-inspector-entity\">\n @if (group.Level === 0) {\n <i class=\"fa-solid fa-circle\" style=\"color: var(--mj-brand-primary); font-size: 8px;\"></i>\n } @else {\n <i class=\"fa-solid fa-arrow-up\" style=\"color: var(--mj-brand-primary); font-size: 10px;\"></i>\n }\n {{ group.Label }}\n </span>\n <span class=\"isa-inspector-count\">{{ group.Fields.length }} field{{ group.Fields.length !== 1 ? 's' : '' }}</span>\n </div>\n <div class=\"isa-inspector-fields\">\n @for (field of group.Fields; track field.ID) {\n <span class=\"isa-inspector-field\" [title]=\"field.Description || field.Name\">\n {{ field.DisplayName || field.Name }}\n <span class=\"isa-inspector-type\">{{ field.Type }}</span>\n </span>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n <!-- Sibling Types -->\n @if (SiblingEntities.length > 0) {\n <div class=\"isa-siblings\">\n <div class=\"isa-chain-label\">Sibling Types ({{ ParentChain[0]?.AllowMultipleSubtypes ? 'overlapping' : 'disjoint' }} under {{ ParentChain[0]?.Name }})</div>\n <div class=\"isa-child-list\">\n @for (sibling of SiblingEntities; track sibling.ID) {\n <span class=\"isa-sibling-chip clickable\" (click)=\"NavigateToEntity(sibling)\" [title]=\"'Navigate to ' + sibling.Name\">\n <i class=\"fa-solid fa-arrows-left-right\"></i>\n {{ sibling.Name }}\n </span>\n }\n </div>\n </div>\n }\n }\n @if (IsParentType) {\n <div class=\"isa-children\">\n <div class=\"isa-chain-label\">Child Types</div>\n <div class=\"isa-child-list\">\n @for (childCount of childEntityCounts; track childCount.EntityName) {\n <span class=\"isa-child-chip clickable\" (click)=\"NavigateToEntity(childCount.EntityInfo)\" [title]=\"'Navigate to ' + childCount.EntityName\">\n <i class=\"fa-solid fa-arrow-down\"></i>\n {{ childCount.EntityName }}\n <span class=\"isa-child-count\">\n @if (childCount.IsLoading) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n {{ childCount.RecordCount | number }}\n }\n </span>\n </span>\n }\n </div>\n </div>\n }\n </div>\n }\n <!-- Database Info -->\n <div class=\"info-panel database-panel\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-server\"></i>\n Database\n </h3>\n <div class=\"info-grid\">\n <div class=\"info-item\">\n <span class=\"info-label\">Schema</span>\n <span class=\"info-value\">{{ entity.SchemaName }}</span>\n </div>\n <div class=\"info-item\">\n <span class=\"info-label\">Table</span>\n <span class=\"info-value\">{{ entity.BaseTable }}</span>\n </div>\n <div class=\"info-item\">\n <span class=\"info-label\">View</span>\n <span class=\"info-value\">{{ entity.BaseView }}</span>\n </div>\n <div class=\"info-item\">\n <span class=\"info-label\">Delete Type</span>\n <span class=\"info-value\">{{ entity.DeleteType }}</span>\n </div>\n @if (entity.spCreate) {\n <div class=\"info-item\">\n <span class=\"info-label\">SP Create</span>\n <span class=\"info-value code\">{{ entity.spCreate }}</span>\n </div>\n }\n @if (entity.spUpdate) {\n <div class=\"info-item\">\n <span class=\"info-label\">SP Update</span>\n <span class=\"info-value code\">{{ entity.spUpdate }}</span>\n </div>\n }\n @if (entity.spDelete) {\n <div class=\"info-item\">\n <span class=\"info-label\">SP Delete</span>\n <span class=\"info-value code\">{{ entity.spDelete }}</span>\n </div>\n }\n </div>\n </div>\n <!-- Code Gen Info -->\n <div class=\"info-panel codegen-panel\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-code\"></i>\n Code Generation\n </h3>\n <div class=\"info-grid\">\n <div class=\"info-item\">\n <span class=\"info-label\">Class Name</span>\n <span class=\"info-value code\">{{ entity.ClassName }}</span>\n </div>\n <div class=\"info-item\">\n <span class=\"info-label\">Code Name</span>\n <span class=\"info-value code\">{{ entity.CodeName }}</span>\n </div>\n @if (entity.EntityObjectSubclassName) {\n <div class=\"info-item\">\n <span class=\"info-label\">Subclass</span>\n <span class=\"info-value code\">{{ entity.EntityObjectSubclassName }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n </section>\n }\n <!-- ============================================================ -->\n <!-- FIELDS SECTION -->\n <!-- ============================================================ -->\n @if (activeSection === 'fields') {\n <section class=\"section fields-section\">\n <div class=\"section-header\">\n <div class=\"search-box\">\n <i class=\"fa-solid fa-search\"></i>\n <input\n type=\"text\"\n placeholder=\"Search fields...\"\n [ngModel]=\"fieldSearchTerm\"\n (ngModelChange)=\"onFieldSearch($event)\">\n </div>\n <div class=\"header-controls\">\n <!-- View mode toggle -->\n <div class=\"view-mode-toggle\">\n <button\n class=\"toggle-btn\"\n [class.active]=\"fieldViewMode === 'grouped'\"\n (click)=\"fieldViewMode = 'grouped'\"\n title=\"Group by category\">\n <i class=\"fa-solid fa-layer-group\"></i>\n </button>\n <button\n class=\"toggle-btn\"\n [class.active]=\"fieldViewMode === 'list'\"\n (click)=\"fieldViewMode = 'list'\"\n title=\"List view\">\n <i class=\"fa-solid fa-list\"></i>\n </button>\n </div>\n <!-- Expand/Collapse controls (only in grouped mode) -->\n @if (fieldViewMode === 'grouped') {\n <div class=\"expand-collapse-controls\">\n <button\n class=\"control-btn\"\n (click)=\"expandAllFieldGroups()\"\n [disabled]=\"allFieldGroupsExpanded\"\n title=\"Expand all\">\n <i class=\"fa-solid fa-angles-down\"></i>\n </button>\n <button\n class=\"control-btn\"\n (click)=\"collapseAllFieldGroups()\"\n [disabled]=\"allFieldGroupsCollapsed\"\n title=\"Collapse all\">\n <i class=\"fa-solid fa-angles-up\"></i>\n </button>\n </div>\n }\n </div>\n </div>\n <div class=\"section-content fields-content\">\n <!-- Grouped View -->\n @if (fieldViewMode === 'grouped') {\n <div class=\"field-groups\">\n @for (group of getFilteredFieldGroups(); track group) {\n <div\n class=\"field-group\"\n [class.expanded]=\"isFieldGroupExpanded(group.id)\">\n <div class=\"group-header\" (click)=\"toggleFieldGroup(group.id)\">\n <i class=\"expand-icon fa-solid\" [ngClass]=\"isFieldGroupExpanded(group.id) ? 'fa-chevron-down' : 'fa-chevron-right'\"></i>\n <i [class]=\"group.icon\" class=\"group-icon\"></i>\n <span class=\"group-label\">{{ group.label }}</span>\n <span class=\"group-count\">{{ group.fields.length }}</span>\n </div>\n @if (isFieldGroupExpanded(group.id)) {\n <div class=\"group-content\">\n @for (field of group.fields; track field) {\n <div\n class=\"field-item\"\n (click)=\"selectField(field)\"\n [class.selected]=\"IsFieldSelected(field)\">\n <div class=\"field-icon\">\n <i [class]=\"getFieldTypeIcon(field)\"></i>\n </div>\n <div class=\"field-info\">\n <div class=\"field-name\">{{ field.DisplayName || field.Name }}</div>\n <div class=\"field-db-name\">{{ field.Name }}</div>\n <div class=\"field-meta\">\n <span class=\"field-type\">{{ formatFieldType(field) }}</span>\n @if (!field.AllowsNull) {\n <span class=\"field-nullable\">Required</span>\n }\n @if (field.RelatedEntityID) {\n <span class=\"field-related\" (click)=\"navigateToRelatedEntity(field); $event.stopPropagation()\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n {{ getRelatedEntityName(field) }}\n </span>\n }\n </div>\n </div>\n <div class=\"field-badges\">\n @if (field.IsPrimaryKey) {\n <span class=\"badge pk\" title=\"Primary Key\">PK</span>\n }\n @if (field.RelatedEntityID && !field.IsPrimaryKey) {\n <span class=\"badge fk\" title=\"Foreign Key\">FK</span>\n }\n @if (field.Encrypt) {\n <span class=\"badge encrypted\" title=\"Encrypted\">\n <i class=\"fa-solid fa-lock\"></i>\n </span>\n }\n @if (IsInheritedField(field)) {\n <span class=\"badge inherited\" [title]=\"'Inherited from ' + GetISAFieldSource(field)\">\n <i class=\"fa-solid fa-arrow-up\"></i> {{ GetISAFieldSource(field) }}\n </span>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n <!-- List View - Modern Card-style Table -->\n @if (fieldViewMode === 'list') {\n <div class=\"fields-list-view\">\n <!-- Table Header -->\n <div class=\"list-header\">\n <div class=\"list-col col-seq sortable\" (click)=\"sortFieldList('Sequence')\" [class.sorted]=\"fieldListSortColumn === 'Sequence'\">\n #\n <i class=\"sort-icon fa-solid\" [ngClass]=\"fieldListSortColumn === 'Sequence' ? (fieldListSortDirection === 'asc' ? 'fa-caret-up' : 'fa-caret-down') : 'fa-sort'\"></i>\n </div>\n <div class=\"list-col col-name sortable\" (click)=\"sortFieldList('Name')\" [class.sorted]=\"fieldListSortColumn === 'Name'\">\n Field Name\n <i class=\"sort-icon fa-solid\" [ngClass]=\"fieldListSortColumn === 'Name' ? (fieldListSortDirection === 'asc' ? 'fa-caret-up' : 'fa-caret-down') : 'fa-sort'\"></i>\n </div>\n <div class=\"list-col col-display-name sortable\" (click)=\"sortFieldList('DisplayName')\" [class.sorted]=\"fieldListSortColumn === 'DisplayName'\">\n Display Name\n <i class=\"sort-icon fa-solid\" [ngClass]=\"fieldListSortColumn === 'DisplayName' ? (fieldListSortDirection === 'asc' ? 'fa-caret-up' : 'fa-caret-down') : 'fa-sort'\"></i>\n </div>\n <div class=\"list-col col-type sortable\" (click)=\"sortFieldList('Type')\" [class.sorted]=\"fieldListSortColumn === 'Type'\">\n Type\n <i class=\"sort-icon fa-solid\" [ngClass]=\"fieldListSortColumn === 'Type' ? (fieldListSortDirection === 'asc' ? 'fa-caret-up' : 'fa-caret-down') : 'fa-sort'\"></i>\n </div>\n <div class=\"list-col col-length sortable\" (click)=\"sortFieldList('Length')\" [class.sorted]=\"fieldListSortColumn === 'Length'\">\n Length\n <i class=\"sort-icon fa-solid\" [ngClass]=\"fieldListSortColumn === 'Length' ? (fieldListSortDirection === 'asc' ? 'fa-caret-up' : 'fa-caret-down') : 'fa-sort'\"></i>\n </div>\n <div class=\"list-col col-nullable sortable\" (click)=\"sortFieldList('AllowsNull')\" [class.sorted]=\"fieldListSortColumn === 'AllowsNull'\">\n Required\n <i class=\"sort-icon fa-solid\" [ngClass]=\"fieldListSortColumn === 'AllowsNull' ? (fieldListSortDirection === 'asc' ? 'fa-caret-up' : 'fa-caret-down') : 'fa-sort'\"></i>\n </div>\n <div class=\"list-col col-flags\">Flags</div>\n <div class=\"list-col col-desc sortable\" (click)=\"sortFieldList('Description')\" [class.sorted]=\"fieldListSortColumn === 'Description'\">\n Description\n <i class=\"sort-icon fa-solid\" [ngClass]=\"fieldListSortColumn === 'Description' ? (fieldListSortDirection === 'asc' ? 'fa-caret-up' : 'fa-caret-down') : 'fa-sort'\"></i>\n </div>\n </div>\n <!-- Table Body -->\n <div class=\"list-body\">\n @for (field of getFilteredFieldsList(); track field; let i = $index) {\n <div\n class=\"list-row\"\n [class.selected]=\"IsFieldSelected(field)\"\n (click)=\"selectField(field)\">\n <div class=\"list-col col-seq\">\n <span class=\"seq-num\">{{ field.Sequence }}</span>\n </div>\n <div class=\"list-col col-name\">\n <i [class]=\"getFieldTypeIcon(field)\" class=\"field-type-icon\"></i>\n <span class=\"field-name-text\">{{ field.Name }}</span>\n </div>\n <div class=\"list-col col-display-name\">\n <span class=\"display-name-text\">{{ field.DisplayName || field.Name }}</span>\n </div>\n <div class=\"list-col col-type\">\n <span class=\"type-tag\">{{ field.Type }}</span>\n </div>\n <div class=\"list-col col-length\">\n @if (field.Length > 0) {\n <span class=\"length-value\">{{ field.Length }}</span>\n }\n @if (field.Length <= 0) {\n <span class=\"length-value muted\">\u2014</span>\n }\n </div>\n <div class=\"list-col col-nullable\">\n <span class=\"required-indicator\" [class.required]=\"!field.AllowsNull\" [class.optional]=\"field.AllowsNull\">\n <i [class]=\"field.AllowsNull ? 'fa-solid fa-circle-minus' : 'fa-solid fa-circle-check'\"></i>\n {{ field.AllowsNull ? 'Optional' : 'Required' }}\n </span>\n </div>\n <div class=\"list-col col-flags\">\n <div class=\"flag-badges\">\n @if (field.IsPrimaryKey) {\n <span class=\"flag-badge pk\" title=\"Primary Key\">\n <i class=\"fa-solid fa-key\"></i> PK\n </span>\n }\n @if (field.RelatedEntityID && !field.IsPrimaryKey) {\n <span class=\"flag-badge fk\" title=\"Foreign Key\">\n <i class=\"fa-solid fa-link\"></i> FK\n </span>\n }\n @if (field.Encrypt) {\n <span class=\"flag-badge encrypted\" title=\"Encrypted\">\n <i class=\"fa-solid fa-lock\"></i>\n </span>\n }\n @if (IsInheritedField(field)) {\n <span class=\"flag-badge inherited\" [title]=\"'Inherited from ' + GetISAFieldSource(field)\">\n <i class=\"fa-solid fa-arrow-up\"></i> {{ GetISAFieldSource(field) }}\n </span>\n }\n </div>\n </div>\n <div class=\"list-col col-desc\">\n <span class=\"desc-text\" [title]=\"field.Description || ''\">{{ field.Description || '\u2014' }}</span>\n </div>\n </div>\n }\n </div>\n <!-- Empty state -->\n @if (getFilteredFieldsList().length === 0) {\n <div class=\"list-empty\">\n <i class=\"fa-solid fa-search\"></i>\n <span>No fields match your search</span>\n </div>\n }\n </div>\n }\n </div>\n </section>\n }\n <!-- ============================================================ -->\n <!-- RELATIONSHIPS SECTION -->\n <!-- ============================================================ -->\n @if (activeSection === 'relationships') {\n <section class=\"section relationships-section\">\n <div class=\"section-header\">\n <div class=\"view-toggle\">\n <button\n class=\"toggle-btn\"\n [class.active]=\"relationshipViewMode === 'diagram'\"\n (click)=\"relationshipViewMode = 'diagram'\">\n <i class=\"fa-solid fa-diagram-project\"></i>\n Diagram\n </button>\n <button\n class=\"toggle-btn\"\n [class.active]=\"relationshipViewMode === 'list'\"\n (click)=\"relationshipViewMode = 'list'\">\n <i class=\"fa-solid fa-list\"></i>\n List\n </button>\n </div>\n <!-- Depth selector (only in diagram mode) -->\n @if (relationshipViewMode === 'diagram') {\n <div class=\"depth-selector\">\n <span class=\"depth-label\">Depth:</span>\n <div class=\"depth-buttons\">\n @for (d of [1, 2, 3, 4, 5]; track d) {\n <button\n class=\"depth-btn\"\n [class.active]=\"erdDepth === d\"\n (click)=\"setErdDepth(d)\"\n [title]=\"'Show ' + d + ' level(s) of relationships'\">\n {{ d }}\n </button>\n }\n </div>\n </div>\n }\n </div>\n <div class=\"section-content\">\n <!-- Diagram View using the ERD composite component -->\n @if (relationshipViewMode === 'diagram') {\n <div class=\"relationships-graph\">\n <mj-erd-composite\n [focusEntities]=\"entity ? [entity] : []\"\n [showFilterPanel]=\"false\"\n [showHeader]=\"false\"\n [depth]=\"erdDepth\"\n (stateChange)=\"onERDStateChange($event)\"\n (openRecord)=\"onERDOpenRecord($event)\">\n </mj-erd-composite>\n </div>\n }\n <!-- List View -->\n @if (relationshipViewMode === 'list') {\n <div class=\"relationships-list\">\n <!-- Outgoing Relationships (FK fields on this entity) - Grouped by target entity -->\n <div class=\"relationship-group\">\n <h3 class=\"relationship-group-title\">\n <i class=\"fa-solid fa-arrow-right-from-bracket\"></i>\n Outgoing (References to other entities)\n <span class=\"group-count\">{{ groupedOutgoingRelationships.length }}</span>\n </h3>\n <div class=\"relationship-items grouped\">\n @for (group of groupedOutgoingRelationships; track group) {\n <div\n class=\"relationship-item-grouped\"\n >\n <div class=\"rel-header\">\n <div class=\"rel-icon outgoing\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n <div class=\"rel-entity-name\">{{ group.entityName }}</div>\n </div>\n <div class=\"rel-fields-chips\">\n @for (field of group.fields; track field) {\n <span\n class=\"field-chip outgoing\"\n [title]=\"field.Description || field.Name\"\n (click)=\"selectField(field)\">\n <i class=\"fa-solid fa-link\"></i>\n {{ field.Name }}\n </span>\n }\n </div>\n </div>\n }\n @if (groupedOutgoingRelationships.length === 0) {\n <div class=\"empty-state\">\n <p>No outgoing relationships</p>\n </div>\n }\n </div>\n </div>\n <!-- Incoming Relationships - Grouped by source entity -->\n <div class=\"relationship-group\">\n <h3 class=\"relationship-group-title\">\n <i class=\"fa-solid fa-arrow-right-to-bracket\"></i>\n Incoming (Entities that reference this one)\n <span class=\"group-count\">{{ groupedIncomingRelationships.length }}</span>\n </h3>\n <div class=\"relationship-items grouped\">\n @for (group of groupedIncomingRelationships; track group) {\n <div\n class=\"relationship-item-grouped\"\n >\n <div class=\"rel-header\">\n <div class=\"rel-icon incoming\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </div>\n <div class=\"rel-entity-name\">{{ group.entityName }}</div>\n </div>\n <div class=\"rel-fields-chips\">\n @for (field of group.fields; track field) {\n <span\n class=\"field-chip incoming\"\n [title]=\"'Type: ' + field.type\">\n <i class=\"fa-solid fa-link\"></i>\n {{ field.fieldName }}\n @if (field.bundleInAPI) {\n <i class=\"fa-solid fa-box bundle-icon\" title=\"Bundled in API\"></i>\n }\n </span>\n }\n </div>\n </div>\n }\n @if (groupedIncomingRelationships.length === 0) {\n <div class=\"empty-state\">\n <p>No incoming relationships</p>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n </section>\n }\n <!-- ============================================================ -->\n <!-- ORGANIC KEYS SECTION -->\n <!-- ============================================================ -->\n @if (activeSection === 'organicKeys') {\n <section class=\"section organic-keys-section\">\n <div class=\"section-content\">\n @if (organicKeysOutgoing.length === 0 && organicKeysIncoming.length === 0) {\n <div class=\"empty-state-card\">\n <i class=\"fa-solid fa-fingerprint empty-state-icon\"></i>\n <h3>No Organic Keys</h3>\n <p>This entity has no organic key relationships configured. Organic keys enable cross-system matching by shared business data like email addresses, phone numbers, or domain names \u2014 without requiring foreign key constraints.</p>\n </div>\n } @else {\n <!-- Outgoing: Keys defined on THIS entity -->\n @if (organicKeysOutgoing.length > 0) {\n <div class=\"relationship-group\">\n <h3 class=\"relationship-group-title\">\n <i class=\"fa-solid fa-arrow-right-from-bracket\"></i>\n Outgoing (Matches from this entity)\n <span class=\"group-count\">{{ organicKeysOutgoing.length }}</span>\n </h3>\n <div class=\"organic-key-cards\">\n @for (okGroup of organicKeysOutgoing; track okGroup.OrganicKey.ID) {\n <div class=\"organic-key-card\">\n <div class=\"organic-key-card-header\">\n <div class=\"organic-key-name\">\n <i class=\"fa-solid fa-fingerprint organic-key-icon\"></i>\n {{ okGroup.OrganicKey.Name }}\n </div>\n <div class=\"organic-key-badges\">\n <span class=\"organic-key-badge strategy\">{{ okGroup.OrganicKey.NormalizationStrategy }}</span>\n <span class=\"organic-key-badge fields\">{{ okGroup.OrganicKey.MatchFieldNames }}</span>\n </div>\n </div>\n @if (okGroup.OrganicKey.Description) {\n <p class=\"organic-key-description\">{{ okGroup.OrganicKey.Description }}</p>\n }\n <div class=\"organic-key-targets\">\n @for (target of okGroup.RelatedEntities; track target.Info.ID) {\n <div class=\"organic-key-target clickable\" (click)=\"NavigateToEntityByID(target.Info.RelatedEntityID)\">\n <div class=\"rel-icon outgoing\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n <div class=\"target-main\">\n <div class=\"target-header\">\n <i [class]=\"target.EntityIcon\" class=\"target-entity-icon\"></i>\n <span class=\"target-entity-name\">{{ target.Info.DisplayName || target.EntityName }}</span>\n <i class=\"fa-solid fa-external-link-alt target-nav-icon\"></i>\n </div>\n <div class=\"target-match-detail\">\n @if (target.Info.IsDirectMatch) {\n <span class=\"match-type-badge direct\">Direct</span>\n <span class=\"match-fields\">{{ okGroup.OrganicKey.MatchFieldNames }} \u2192 {{ target.Info.RelatedEntityFieldNames }}</span>\n } @else {\n <span class=\"match-type-badge transitive\">Transitive</span>\n <span class=\"match-fields\" [title]=\"target.Info.TransitiveObjectName || ''\">via {{ target.Info.TransitiveObjectName }}</span>\n }\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Incoming: Keys on OTHER entities targeting THIS entity -->\n @if (organicKeysIncoming.length > 0) {\n <div class=\"relationship-group\">\n <h3 class=\"relationship-group-title\">\n <i class=\"fa-solid fa-arrow-right-to-bracket\"></i>\n Incoming (Other entities matching to this one)\n <span class=\"group-count\">{{ organicKeysIncoming.length }}</span>\n </h3>\n <div class=\"organic-key-cards\">\n @for (incoming of organicKeysIncoming; track incoming.OrganicKey.ID + incoming.SourceEntityName) {\n <div class=\"organic-key-card incoming clickable\" (click)=\"NavigateToEntityByID(incoming.SourceEntityID)\">\n <div class=\"organic-key-card-header\">\n <div class=\"organic-key-name\">\n <div class=\"rel-icon incoming\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </div>\n <i [class]=\"incoming.SourceEntityIcon\" class=\"target-entity-icon\"></i>\n {{ incoming.SourceEntityName }}\n <i class=\"fa-solid fa-external-link-alt target-nav-icon\"></i>\n </div>\n <div class=\"organic-key-badges\">\n <span class=\"match-type-badge\" [class.direct]=\"incoming.MatchType === 'Direct'\" [class.transitive]=\"incoming.MatchType === 'Transitive'\">{{ incoming.MatchType }}</span>\n </div>\n </div>\n <div class=\"organic-key-detail-row\">\n <span class=\"detail-label\">Key:</span>\n <span class=\"detail-value\">{{ incoming.OrganicKey.Name }}</span>\n <span class=\"organic-key-badge fields\">{{ incoming.OrganicKey.MatchFieldNames }}</span>\n <span class=\"organic-key-badge strategy\">{{ incoming.OrganicKey.NormalizationStrategy }}</span>\n </div>\n @if (incoming.RelatedEntityConfig.IsDirectMatch) {\n <div class=\"organic-key-detail-row\">\n <span class=\"detail-label\">Matched via:</span>\n <span class=\"detail-value\">{{ incoming.RelatedEntityConfig.RelatedEntityFieldNames }}</span>\n </div>\n } @else {\n <div class=\"organic-key-detail-row\">\n <span class=\"detail-label\">Bridge:</span>\n <span class=\"detail-value\">{{ incoming.RelatedEntityConfig.TransitiveObjectName }}</span>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n }\n </div>\n </section>\n }\n <!-- ============================================================ -->\n <!-- PERMISSIONS SECTION -->\n <!-- ============================================================ -->\n @if (activeSection === 'permissions') {\n <section class=\"section permissions-section\">\n <div class=\"section-content\">\n <div class=\"permissions-matrix\">\n <table class=\"matrix-table\">\n <thead>\n <tr>\n <th>Role</th>\n <th class=\"center\">Create</th>\n <th class=\"center\">Read</th>\n <th class=\"center\">Update</th>\n <th class=\"center\">Delete</th>\n <th>RLS</th>\n </tr>\n </thead>\n <tbody>\n @for (perm of entity.Permissions; track perm) {\n <tr>\n <td class=\"role-name\">{{ getRoleName(perm) }}</td>\n <td class=\"center\">\n <i class=\"permission-icon\" [ngClass]=\"perm.CanCreate ? 'fa-solid fa-check granted' : 'fa-solid fa-xmark denied'\"></i>\n </td>\n <td class=\"center\">\n <i class=\"permission-icon\" [ngClass]=\"perm.CanRead ? 'fa-solid fa-check granted' : 'fa-solid fa-xmark denied'\"></i>\n </td>\n <td class=\"center\">\n <i class=\"permission-icon\" [ngClass]=\"perm.CanUpdate ? 'fa-solid fa-check granted' : 'fa-solid fa-xmark denied'\"></i>\n </td>\n <td class=\"center\">\n <i class=\"permission-icon\" [ngClass]=\"perm.CanDelete ? 'fa-solid fa-check granted' : 'fa-solid fa-xmark denied'\"></i>\n </td>\n <td class=\"rls-info\">\n @if (perm.ReadRLSFilterID) {\n <span class=\"rls-badge\" title=\"Read RLS\">R</span>\n }\n @if (perm.CreateRLSFilterID) {\n <span class=\"rls-badge\" title=\"Create RLS\">C</span>\n }\n @if (perm.UpdateRLSFilterID) {\n <span class=\"rls-badge\" title=\"Update RLS\">U</span>\n }\n @if (perm.DeleteRLSFilterID) {\n <span class=\"rls-badge\" title=\"Delete RLS\">D</span>\n }\n @if (!perm.ReadRLSFilterID && !perm.CreateRLSFilterID && !perm.UpdateRLSFilterID && !perm.DeleteRLSFilterID) {\n <span class=\"no-rls\">None</span>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n @if (entity.Permissions.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-shield-halved\"></i>\n <p>No permissions configured</p>\n </div>\n }\n </div>\n <div class=\"api-capabilities\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-plug\"></i>\n API Capabilities\n </h3>\n <div class=\"capability-grid\">\n <div class=\"capability-item\" [class.enabled]=\"entity.IncludeInAPI\">\n <i class=\"fa-solid\" [ngClass]=\"entity.IncludeInAPI ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Include in API</span>\n </div>\n <div class=\"capability-item\" [class.enabled]=\"entity.AllowAllRowsAPI\">\n <i class=\"fa-solid\" [ngClass]=\"entity.AllowAllRowsAPI ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Allow All Rows</span>\n </div>\n <div class=\"capability-item\" [class.enabled]=\"entity.AllowCreateAPI\">\n <i class=\"fa-solid\" [ngClass]=\"entity.AllowCreateAPI ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Allow Create</span>\n </div>\n <div class=\"capability-item\" [class.enabled]=\"entity.AllowUpdateAPI\">\n <i class=\"fa-solid\" [ngClass]=\"entity.AllowUpdateAPI ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Allow Update</span>\n </div>\n <div class=\"capability-item\" [class.enabled]=\"entity.AllowDeleteAPI\">\n <i class=\"fa-solid\" [ngClass]=\"entity.AllowDeleteAPI ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Allow Delete</span>\n </div>\n <div class=\"capability-item\" [class.enabled]=\"entity.AllowUserSearchAPI\">\n <i class=\"fa-solid\" [ngClass]=\"entity.AllowUserSearchAPI ? 'fa-check' : 'fa-xmark'\"></i>\n <span>User Search</span>\n </div>\n <div class=\"capability-item\" [class.enabled]=\"entity.CustomResolverAPI\">\n <i class=\"fa-solid\" [ngClass]=\"entity.CustomResolverAPI ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Custom Resolver</span>\n </div>\n </div>\n </div>\n </div>\n </section>\n }\n <!-- ============================================================ -->\n <!-- DATA SECTION -->\n <!-- ============================================================ -->\n @if (activeSection === 'data') {\n <section class=\"section data-section\">\n <div class=\"data-viewer-container\">\n @if (entity) {\n <mj-entity-viewer\n [entity]=\"entity\"\n [showGridToolbar]=\"true\"\n (recordOpened)=\"OnRecordOpened($event)\"\n (addRequested)=\"OnAddRequested()\">\n </mj-entity-viewer>\n }\n </div>\n </section>\n }\n <!-- ============================================================ -->\n <!-- LINEAGE SECTION -->\n <!-- ============================================================ -->\n @if (activeSection === 'lineage') {\n <section class=\"section lineage-section\">\n <div class=\"section-content\">\n <div class=\"lineage-diagram\">\n <div class=\"lineage-stage sources\">\n <h4>Data Sources</h4>\n <div class=\"lineage-items\">\n <div class=\"lineage-item\">\n <i class=\"fa-solid fa-keyboard\"></i>\n <span>Manual Entry</span>\n </div>\n @if (entity.IncludeInAPI) {\n <div class=\"lineage-item\">\n <i class=\"fa-solid fa-plug\"></i>\n <span>API Create</span>\n </div>\n }\n </div>\n </div>\n <div class=\"lineage-arrow\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n <div class=\"lineage-stage entity-node\">\n <div class=\"entity-box\">\n <i [class]=\"entityIcon\"></i>\n <span>{{ entity.Name }}</span>\n </div>\n </div>\n <div class=\"lineage-arrow\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n <div class=\"lineage-stage sinks\">\n <h4>Data Sinks</h4>\n <div class=\"lineage-items\">\n @if (entity.TrackRecordChanges) {\n <div class=\"lineage-item\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i>\n <span>Record Changes</span>\n </div>\n }\n @if (entity.AuditRecordAccess) {\n <div class=\"lineage-item\">\n <i class=\"fa-solid fa-eye\"></i>\n <span>Access Audit</span>\n </div>\n }\n <div class=\"lineage-item\">\n <i class=\"fa-solid fa-link\"></i>\n <span>Related Entities ({{ stats.relationshipCount }})</span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"tracking-config\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i>\n Tracking Configuration\n </h3>\n <div class=\"config-grid\">\n <div class=\"config-item\" [class.enabled]=\"entity.TrackRecordChanges\">\n <i class=\"fa-solid\" [ngClass]=\"entity.TrackRecordChanges ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Track Record Changes</span>\n </div>\n <div class=\"config-item\" [class.enabled]=\"entity.AuditRecordAccess\">\n <i class=\"fa-solid\" [ngClass]=\"entity.AuditRecordAccess ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Audit Record Access</span>\n </div>\n <div class=\"config-item\" [class.enabled]=\"entity.AuditViewRuns\">\n <i class=\"fa-solid\" [ngClass]=\"entity.AuditViewRuns ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Audit View Runs</span>\n </div>\n <div class=\"config-item\">\n <span class=\"config-label\">Delete Type:</span>\n <span class=\"config-value\">{{ entity.DeleteType }}</span>\n </div>\n <div class=\"config-item\" [class.enabled]=\"entity.CascadeDeletes\">\n <i class=\"fa-solid\" [ngClass]=\"entity.CascadeDeletes ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Cascade Deletes</span>\n </div>\n </div>\n </div>\n </div>\n </section>\n }\n <!-- ============================================================ -->\n <!-- HISTORY SECTION -->\n <!-- ============================================================ -->\n @if (activeSection === 'history') {\n <section class=\"section history-section\">\n <div class=\"section-content\">\n <div class=\"history-config\">\n <div class=\"config-status\" [class.enabled]=\"entity.TrackRecordChanges\">\n <i class=\"fa-solid\" [ngClass]=\"entity.TrackRecordChanges ? 'fa-circle-check' : 'fa-circle-xmark'\"></i>\n <div class=\"config-text\">\n <strong>Record Change Tracking</strong>\n <span>{{ entity.TrackRecordChanges ? 'Enabled - All changes are recorded' : 'Disabled - Changes are not tracked' }}</span>\n </div>\n </div>\n </div>\n <div class=\"history-info\">\n <div class=\"info-card\">\n <h4>\n <i class=\"fa-solid fa-info-circle\"></i>\n About Change Tracking\n </h4>\n @if (entity.TrackRecordChanges) {\n <p>\n This entity has change tracking enabled. All modifications to records are stored in the\n <code>RecordChange</code> table, including the user who made the change, timestamp, and\n the before/after values.\n </p>\n }\n @if (!entity.TrackRecordChanges) {\n <p>\n This entity does not have change tracking enabled. To enable it, set\n <code>TrackRecordChanges</code> to <code>true</code> in the entity metadata.\n </p>\n }\n </div>\n @if (entity.TrackRecordChanges) {\n <div class=\"info-card\">\n <h4>\n <i class=\"fa-solid fa-database\"></i>\n Audit Fields\n </h4>\n <ul class=\"audit-fields-list\">\n <li>\n <code>__mj_CreatedAt</code> - Record creation timestamp\n </li>\n <li>\n <code>__mj_UpdatedAt</code> - Last modification timestamp\n </li>\n @if (entity.DeleteType === 'Soft') {\n <li>\n <code>__mj_DeletedAt</code> - Soft delete timestamp (when applicable)\n </li>\n }\n </ul>\n </div>\n }\n </div>\n </div>\n </section>\n }\n <!-- ============================================================ -->\n <!-- SETTINGS SECTION -->\n <!-- ============================================================ -->\n @if (activeSection === 'settings') {\n <section class=\"section settings-section\">\n <div class=\"section-content\">\n <!-- IS-A Type Relationship Configuration -->\n @if (HasISARelationship || IsVirtualEntity) {\n <div class=\"settings-panel isa-settings-panel\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-layer-group\"></i>\n Type Relationship (IS-A)\n </h3>\n <div class=\"config-grid\">\n <div class=\"config-row\">\n <span class=\"config-label\">Virtual Entity</span>\n <span class=\"config-value\">\n @if (IsVirtualEntity) {\n <i class=\"fa-solid fa-circle-check\" style=\"color: var(--mj-brand-primary);\"></i> Yes \u2014 read-only view\n } @else {\n <i class=\"fa-solid fa-circle-minus\" style=\"color: var(--mj-text-muted);\"></i> No\n }\n </span>\n </div>\n <div class=\"config-row\">\n <span class=\"config-label\">Parent Entity</span>\n <span class=\"config-value\">\n @if (IsChildType) {\n <span class=\"link\" (click)=\"NavigateToEntity(ParentChain[0])\" title=\"Navigate to parent entity\">\n {{ ParentChain[0]?.Name }}\n <i class=\"fa-solid fa-arrow-right\"></i>\n </span>\n } @else {\n <span class=\"muted\">None</span>\n }\n </span>\n </div>\n @if (IsChildType) {\n <div class=\"config-row\">\n <span class=\"config-label\">Full Inheritance Chain</span>\n <span class=\"config-value\">{{ IsaBreadcrumb }}</span>\n </div>\n <div class=\"config-row\">\n <span class=\"config-label\">Inherited Fields</span>\n <span class=\"config-value\">{{ InheritedFieldCount }} field{{ InheritedFieldCount !== 1 ? 's' : '' }}</span>\n </div>\n }\n @if (IsParentType) {\n <div class=\"config-row\">\n <span class=\"config-label\">Child Types</span>\n <span class=\"config-value\">\n @for (child of ChildEntities; track child.ID; let last = $last) {\n <span class=\"link\" (click)=\"NavigateToEntity(child)\">{{ child.Name }}</span>{{ last ? '' : ', ' }}\n }\n </span>\n </div>\n }\n @if (SiblingEntities.length > 0) {\n <div class=\"config-row\">\n <span class=\"config-label\">Sibling Types</span>\n <span class=\"config-value\">\n @for (sibling of SiblingEntities; track sibling.ID; let last = $last) {\n <span class=\"link\" (click)=\"NavigateToEntity(sibling)\">{{ sibling.Name }}</span>{{ last ? '' : ', ' }}\n }\n </span>\n </div>\n }\n <div class=\"config-row\">\n <span class=\"config-label\">Disjoint Subtypes</span>\n <span class=\"config-value\">\n @if (IsParentType || IsChildType) {\n <i class=\"fa-solid fa-circle-check\" style=\"color: #059669;\"></i> Enforced \u2014 a parent record can only be one child type\n } @else {\n <span class=\"muted\">N/A</span>\n }\n </span>\n </div>\n </div>\n </div>\n }\n <!-- Entity Settings -->\n <div class=\"settings-panel\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-sliders\"></i>\n Entity Settings\n </h3>\n @if (entity.Settings.length > 0) {\n <div class=\"settings-list\">\n @for (setting of entity.Settings; track setting) {\n <div class=\"setting-item\">\n <div class=\"setting-name\">{{ setting.Name }}</div>\n @if (isJsonValue(setting.Value)) {\n <div class=\"setting-value-json\">\n <mj-code-editor\n [value]=\"formatJsonValue(setting.Value)\"\n language=\"json\"\n [readonly]=\"true\"\n [lineWrapping]=\"true\"\n setup=\"minimal\">\n </mj-code-editor>\n </div>\n } @else {\n <div class=\"setting-value\">{{ setting.Value }}</div>\n }\n @if (setting.Comments) {\n <div class=\"setting-comment\">{{ setting.Comments }}</div>\n }\n </div>\n }\n </div>\n }\n @if (entity.Settings.length === 0) {\n <div class=\"empty-state\">\n <p>No custom settings configured</p>\n </div>\n }\n </div>\n <!-- Full Text Search -->\n <div class=\"settings-panel\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-magnifying-glass\"></i>\n Full-Text Search\n </h3>\n @if (entity.FullTextSearchEnabled) {\n <div class=\"fts-config\">\n <div class=\"config-row\">\n <span class=\"config-label\">Status</span>\n <span class=\"config-value enabled\">\n <i class=\"fa-solid fa-circle-check\"></i>\n Enabled\n </span>\n </div>\n @if (entity.FullTextCatalog) {\n <div class=\"config-row\">\n <span class=\"config-label\">Catalog</span>\n <span class=\"config-value code\">{{ entity.FullTextCatalog }}</span>\n </div>\n }\n @if (entity.FullTextIndex) {\n <div class=\"config-row\">\n <span class=\"config-label\">Index</span>\n <span class=\"config-value code\">{{ entity.FullTextIndex }}</span>\n </div>\n }\n @if (entity.FullTextSearchFunction) {\n <div class=\"config-row\">\n <span class=\"config-label\">Function</span>\n <span class=\"config-value code\">{{ entity.FullTextSearchFunction }}</span>\n </div>\n }\n </div>\n }\n @if (!entity.FullTextSearchEnabled) {\n <div class=\"empty-state\">\n <p>Full-text search is not enabled for this entity</p>\n </div>\n }\n </div>\n <!-- Row Packaging -->\n <div class=\"settings-panel\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-box\"></i>\n Schema Packaging\n </h3>\n <div class=\"config-grid\">\n <div class=\"config-row\">\n <span class=\"config-label\">Rows to Pack</span>\n <span class=\"config-value\">{{ entity.RowsToPackWithSchema || 'None' }}</span>\n </div>\n @if (entity.RowsToPackSampleCount) {\n <div class=\"config-row\">\n <span class=\"config-label\">Sample Count</span>\n <span class=\"config-value\">{{ entity.RowsToPackSampleCount }}</span>\n </div>\n }\n @if (entity.RowsToPackSampleMethod) {\n <div class=\"config-row\">\n <span class=\"config-label\">Sample Method</span>\n <span class=\"config-value\">{{ entity.RowsToPackSampleMethod }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n </section>\n }\n </main>\n <!-- ============================================================ -->\n <!-- DETAIL PANEL (Slides in from right) -->\n <!-- ============================================================ -->\n <aside class=\"detail-panel\" [class.open]=\"detailPanelOpen\">\n <div class=\"panel-header\">\n @if (selectedField) {\n <h3>Field Details</h3>\n }\n @if (selectedRelationship) {\n <h3>Relationship Details</h3>\n }\n <button class=\"close-btn\" (click)=\"closeDetailPanel()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n <!-- Field Details -->\n @if (selectedField) {\n <div class=\"panel-content\">\n <div class=\"detail-section\">\n <h4>{{ selectedField.DisplayName || selectedField.Name }}</h4>\n <div class=\"detail-field-db-name\">{{ selectedField.Name }}</div>\n @if (selectedField.Description) {\n <p class=\"field-description\">{{ selectedField.Description }}</p>\n }\n </div>\n <div class=\"detail-section\">\n <h5>Type Information</h5>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"label\">SQL Type</span>\n <span class=\"value code\">{{ formatFieldType(selectedField) }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">TypeScript Type</span>\n <span class=\"value code\">{{ selectedField.TSType }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">Nullable</span>\n <span class=\"value\">{{ selectedField.AllowsNull ? 'Yes' : 'No' }}</span>\n </div>\n @if (selectedField.DefaultValue) {\n <div class=\"detail-item\">\n <span class=\"label\">Default</span>\n <span class=\"value code\">{{ selectedField.DefaultValue }}</span>\n </div>\n }\n </div>\n </div>\n @if (IsInheritedField(selectedField)) {\n <div class=\"detail-section isa-source-section\">\n <h5>\n <i class=\"fa-solid fa-arrow-up\"></i>\n IS-A Inherited Field\n </h5>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"label\">Source Entity</span>\n <span class=\"value link\" (click)=\"NavigateToEntity(ParentChain[0])\" title=\"Navigate to source entity\">\n {{ GetISAFieldSource(selectedField) }}\n <i class=\"fa-solid fa-arrow-right\"></i>\n </span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">Routing</span>\n <span class=\"value\">ORM routes Set/Get to parent</span>\n </div>\n </div>\n </div>\n }\n @if (selectedField.RelatedEntityID) {\n <div class=\"detail-section\">\n <h5>Relationship</h5>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"label\">Related Entity</span>\n <span class=\"value link\" (click)=\"navigateToRelatedEntity(selectedField)\">\n {{ getRelatedEntityName(selectedField) }}\n <i class=\"fa-solid fa-arrow-right\"></i>\n </span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">Display Type</span>\n <span class=\"value\">{{ selectedField.RelatedEntityDisplayType }}</span>\n </div>\n </div>\n </div>\n }\n @if (selectedField.Encrypt) {\n <div class=\"detail-section\">\n <h5>Encryption</h5>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"label\">Encrypted</span>\n <span class=\"value\">Yes</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">Decrypt in API</span>\n <span class=\"value\">{{ selectedField.AllowDecryptInAPI ? 'Yes' : 'No' }}</span>\n </div>\n </div>\n </div>\n }\n <div class=\"detail-section\">\n <h5>API Settings</h5>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"label\">Allow Update</span>\n <span class=\"value\">{{ selectedField.AllowUpdateAPI ? 'Yes' : 'No' }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">Include in Search</span>\n <span class=\"value\">{{ selectedField.IncludeInUserSearchAPI ? 'Yes' : 'No' }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">Full-Text Search</span>\n <span class=\"value\">{{ selectedField.FullTextSearchEnabled ? 'Yes' : 'No' }}</span>\n </div>\n </div>\n </div>\n <div class=\"detail-section\">\n <h5>Form Settings</h5>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"label\">Include in Form</span>\n <span class=\"value\">{{ selectedField.IncludeInGeneratedForm ? 'Yes' : 'No' }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">Section</span>\n <span class=\"value\">{{ selectedField.GeneratedFormSection }}</span>\n </div>\n @if (selectedField.Category) {\n <div class=\"detail-item\">\n <span class=\"label\">Category</span>\n <span class=\"value\">{{ selectedField.Category }}</span>\n </div>\n }\n <div class=\"detail-item\">\n <span class=\"label\">Sequence</span>\n <span class=\"value\">{{ selectedField.Sequence }}</span>\n </div>\n </div>\n </div>\n @if (selectedField.EntityFieldValues.length > 0) {\n <div class=\"detail-section\">\n <h5>Allowed Values</h5>\n <div class=\"value-list\">\n @for (val of selectedField.EntityFieldValues; track val) {\n <div class=\"value-item\">\n @if (val.Code !== val.Value) {\n <span class=\"value-code\">{{ val.Code }}</span>\n }\n <span class=\"value-display\">{{ val.Value }}</span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n <!-- Relationship Details -->\n @if (selectedRelationship) {\n <div class=\"panel-content\">\n <div class=\"detail-section\">\n <h4>{{ selectedRelationship.DisplayName || selectedRelationship.Entity }}</h4>\n </div>\n <div class=\"detail-section\">\n <h5>Connection</h5>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"label\">From Entity</span>\n <span class=\"value\">{{ selectedRelationship.Entity }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">Join Field</span>\n <span class=\"value code\">{{ selectedRelationship.RelatedEntityJoinField }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">Type</span>\n <span class=\"value\">{{ selectedRelationship.Type }}</span>\n </div>\n </div>\n </div>\n <div class=\"detail-section\">\n <h5>Display Settings</h5>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"label\">Display in Form</span>\n <span class=\"value\">{{ selectedRelationship.DisplayInForm ? 'Yes' : 'No' }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">Location</span>\n <span class=\"value\">{{ selectedRelationship.DisplayLocation }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"label\">Bundle in API</span>\n <span class=\"value\">{{ selectedRelationship.BundleInAPI ? 'Yes' : 'No' }}</span>\n </div>\n </div>\n </div>\n </div>\n }\n </aside>\n </div>\n </div>\n} @else {\n @if (isExplorerLoading) {\n <div class=\"explorer-loading\">\n <mj-loading text=\"Loading entity...\"></mj-loading>\n </div>\n }\n @if (!isExplorerLoading && explorerError) {\n <div class=\"explorer-error\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <p>{{ explorerError }}</p>\n </div>\n }\n @if (!isExplorerLoading && !explorerError && !entity) {\n <div class=\"explorer-empty\">\n <i class=\"fa-solid fa-database\"></i>\n <p>Entity metadata not available</p>\n </div>\n }\n}\n\n<!-- Loading / Error State -->\n", styles: ["/* ============================================================\n ENTITY EXPLORER FORM - MAIN STYLES\n A world-class exploration-focused entity intelligence hub\n ============================================================ */\n\n/* CSS Variables */\n:host {\n --nav-rail-width: 64px;\n --header-height: 80px;\n --detail-panel-width: 400px;\n\n --bg-primary: var(--mj-bg-surface);\n --bg-secondary: var(--mj-bg-surface-sunken);\n --bg-tertiary: var(--mj-bg-surface-sunken);\n\n --text-primary: var(--mj-text-primary);\n --text-secondary: var(--mj-text-secondary);\n --text-muted: var(--mj-text-muted);\n\n --border-color: var(--mj-border-default);\n --border-light: var(--mj-border-default);\n\n --accent-color: var(--mj-brand-primary);\n --accent-light: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n --accent-dark: var(--mj-brand-primary);\n\n --success-color: var(--mj-status-success);\n --warning-color: var(--mj-status-warning);\n --danger-color: var(--mj-status-error);\n\n --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);\n --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);\n\n --radius-sm: 4px;\n --radius-md: 8px;\n --radius-lg: 12px;\n\n --transition-fast: 150ms ease;\n --transition-normal: 250ms ease;\n\n display: block;\n height: 100%;\n width: 100%;\n}\n\n.entity-explorer {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--bg-secondary);\n overflow: hidden;\n}\n\n/* ============================================================\n HEADER BAR\n ============================================================ */\n\n.explorer-header {\n display: flex;\n align-items: center;\n gap: 24px;\n padding: 16px 24px;\n background: var(--bg-primary);\n border-bottom: 1px solid var(--border-color);\n min-height: var(--header-height);\n}\n\n.entity-identity {\n display: flex;\n align-items: center;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n.entity-icon {\n width: 48px;\n height: 48px;\n border-radius: var(--radius-md);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 20px;\n flex-shrink: 0;\n}\n\n.entity-info {\n min-width: 0;\n flex: 1;\n}\n\n.entity-title-row {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.entity-name {\n font-size: 20px;\n font-weight: 600;\n color: var(--text-primary);\n margin: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.status-badge {\n padding: 2px 8px;\n border-radius: 9999px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-badge.status-active {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-badge.status-deprecated {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.status-badge.status-disabled {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.entity-subtitle {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 4px;\n font-size: 13px;\n color: var(--text-secondary);\n}\n\n.schema-table {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--text-muted);\n}\n\n.separator {\n color: var(--border-color);\n}\n\n.entity-description {\n color: var(--text-secondary);\n}\n\n/* Header Stats */\n.header-stats {\n display: flex;\n gap: 4px;\n}\n\n.stat-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 8px 16px;\n border-radius: var(--radius-md);\n cursor: pointer;\n transition: background var(--transition-fast);\n}\n\n.stat-item:hover {\n background: var(--bg-tertiary);\n}\n\n.stat-item i {\n font-size: 16px;\n color: var(--text-muted);\n margin-bottom: 4px;\n}\n\n.stat-value {\n font-size: 18px;\n font-weight: 600;\n color: var(--text-primary);\n}\n\n.stat-label {\n font-size: 11px;\n color: var(--text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* ============================================================\n MAIN BODY (NAV RAIL + CANVAS)\n ============================================================ */\n\n.explorer-body {\n display: flex;\n flex: 1;\n overflow: hidden;\n}\n\n/* Navigation Rail - Minimalist Icon-First Design */\n.nav-rail {\n width: var(--nav-rail-width);\n background: var(--bg-primary);\n border-right: 1px solid var(--border-color);\n display: flex;\n flex-direction: column;\n padding: 8px 0;\n flex-shrink: 0;\n gap: 2px;\n}\n\n.nav-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 12px 4px 8px 4px;\n margin: 0 8px;\n border: none;\n background: transparent;\n border-radius: var(--radius-md);\n cursor: pointer;\n transition: all var(--transition-fast);\n position: relative;\n color: var(--text-muted);\n min-height: 54px;\n}\n\n.nav-item i {\n font-size: 18px;\n margin-bottom: 4px;\n transition: transform var(--transition-fast);\n}\n\n.nav-label {\n font-size: 9px;\n font-weight: 500;\n letter-spacing: 0.2px;\n white-space: nowrap;\n text-align: center;\n line-height: 1;\n opacity: 0.9;\n}\n\n.nav-badge {\n position: absolute;\n top: 4px;\n right: 4px;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n background: var(--accent-color);\n color: white;\n font-size: 10px;\n font-weight: 600;\n border-radius: 9999px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n\n.nav-item:hover {\n background: var(--bg-tertiary);\n color: var(--text-primary);\n}\n\n.nav-item:hover i {\n transform: scale(1.1);\n}\n\n.nav-item.active {\n background: var(--accent-light);\n color: var(--accent-color);\n}\n\n.nav-item.active i {\n transform: scale(1.05);\n}\n\n.nav-item.active::before {\n content: '';\n position: absolute;\n left: -8px;\n top: 50%;\n transform: translateY(-50%);\n width: 3px;\n height: 28px;\n background: var(--accent-color);\n border-radius: 0 3px 3px 0;\n}\n\n/* ============================================================\n MAIN CANVAS\n ============================================================ */\n\n.main-canvas {\n flex: 1;\n overflow: auto;\n transition: margin-right var(--transition-normal);\n display: flex;\n flex-direction: column;\n}\n\n.main-canvas.panel-open {\n margin-right: var(--detail-panel-width);\n}\n\n/* Sections */\n.section {\n padding: 24px;\n}\n\n.section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 20px;\n}\n\n.section-content {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n/* Search Box */\n.search-box {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 16px;\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-md);\n width: 300px;\n}\n\n.search-box i {\n color: var(--text-muted);\n}\n\n.search-box input {\n flex: 1;\n border: none;\n background: transparent;\n font-size: 14px;\n outline: none;\n color: var(--text-primary);\n}\n\n.search-box input::placeholder {\n color: var(--text-muted);\n}\n\n/* View Toggle */\n.view-toggle {\n display: flex;\n border: 1px solid var(--border-color);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.toggle-btn {\n padding: 8px 16px;\n border: none;\n background: var(--bg-primary);\n color: var(--text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n transition: all var(--transition-fast);\n}\n\n.toggle-btn:not(:last-child) {\n border-right: 1px solid var(--border-color);\n}\n\n.toggle-btn:hover {\n background: var(--bg-tertiary);\n}\n\n.toggle-btn.active {\n background: var(--accent-color);\n color: white;\n}\n\n/* Depth Selector */\n.depth-selector {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-left: auto;\n}\n\n.depth-label {\n font-size: 13px;\n color: var(--text-secondary);\n font-weight: 500;\n}\n\n.depth-buttons {\n display: flex;\n border: 1px solid var(--border-color);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.depth-btn {\n width: 32px;\n height: 32px;\n border: none;\n background: var(--bg-primary);\n color: var(--text-secondary);\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n transition: all var(--transition-fast);\n}\n\n.depth-btn:not(:last-child) {\n border-right: 1px solid var(--border-color);\n}\n\n.depth-btn:hover {\n background: var(--bg-tertiary);\n}\n\n.depth-btn.active {\n background: var(--accent-color);\n color: white;\n}\n\n/* Header Controls (view mode + expand/collapse) */\n.header-controls {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.view-mode-toggle {\n display: flex;\n border: 1px solid var(--border-color);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.expand-collapse-controls {\n display: flex;\n gap: 4px;\n}\n\n.control-btn {\n padding: 6px 10px;\n border: 1px solid var(--border-color);\n background: var(--bg-primary);\n color: var(--text-secondary);\n cursor: pointer;\n border-radius: var(--radius-sm);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n transition: all var(--transition-fast);\n}\n\n.control-btn:hover:not(:disabled) {\n background: var(--bg-tertiary);\n color: var(--text-primary);\n}\n\n.control-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n/* Fields List View - Modern Design */\n.fields-list-view {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--bg-primary);\n border-radius: var(--radius-lg);\n overflow: hidden;\n}\n\n.list-header {\n display: grid;\n grid-template-columns: 50px 1fr 1fr 100px 70px 100px 100px 1fr;\n gap: 12px;\n padding: 12px 20px;\n background: var(--bg-secondary);\n border-bottom: 2px solid var(--border-color);\n position: sticky;\n top: 0;\n z-index: 10;\n}\n\n.list-header .list-col {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--text-secondary);\n}\n\n.list-header .list-col.sortable {\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color var(--transition-fast);\n user-select: none;\n}\n\n.list-header .list-col.sortable:hover {\n color: var(--accent-color);\n}\n\n.list-header .list-col.sortable.sorted {\n color: var(--accent-color);\n}\n\n.sort-icon {\n font-size: 10px;\n opacity: 0.4;\n transition: opacity var(--transition-fast);\n}\n\n.list-col.sortable:hover .sort-icon {\n opacity: 0.7;\n}\n\n.list-col.sortable.sorted .sort-icon {\n opacity: 1;\n}\n\n.list-body {\n flex: 1;\n overflow-y: auto;\n}\n\n.list-row {\n display: grid;\n grid-template-columns: 50px 1fr 1fr 100px 70px 100px 100px 1fr;\n gap: 12px;\n padding: 14px 20px;\n border-bottom: 1px solid var(--border-light);\n cursor: pointer;\n transition: all var(--transition-fast);\n align-items: center;\n}\n\n.list-row:hover {\n background: var(--bg-secondary);\n}\n\n.list-row.selected {\n background: var(--accent-light);\n border-left: 3px solid var(--accent-color);\n padding-left: 17px;\n}\n\n.list-row:last-child {\n border-bottom: none;\n}\n\n/* Column-specific styling */\n.col-seq {\n text-align: center;\n}\n\n.seq-num {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n background: var(--bg-tertiary);\n border-radius: 50%;\n font-size: 11px;\n font-weight: 600;\n color: var(--text-secondary);\n}\n\n.list-row:hover .seq-num,\n.list-row.selected .seq-num {\n background: var(--accent-color);\n color: white;\n}\n\n.col-name {\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n}\n\n.field-type-icon {\n color: var(--accent-color);\n font-size: 16px;\n width: 20px;\n flex-shrink: 0;\n}\n\n.field-name-text {\n font-weight: 500;\n color: var(--text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n}\n\n.col-display-name {\n min-width: 0;\n}\n\n.display-name-text {\n font-weight: 500;\n color: var(--text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.type-tag {\n display: inline-block;\n padding: 4px 10px;\n background: var(--bg-tertiary);\n border-radius: 20px;\n font-size: 11px;\n font-weight: 500;\n color: var(--text-secondary);\n font-family: 'SF Mono', 'Consolas', monospace;\n}\n\n.length-value {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--text-primary);\n}\n\n.length-value.muted {\n color: var(--text-muted);\n}\n\n.required-indicator {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 11px;\n font-weight: 500;\n padding: 4px 8px;\n border-radius: 4px;\n}\n\n.required-indicator.required {\n color: var(--danger-color);\n background: color-mix(in srgb, var(--mj-status-error) 10%, transparent);\n}\n\n.required-indicator.required i {\n color: var(--danger-color);\n}\n\n.required-indicator.optional {\n color: var(--text-muted);\n background: transparent;\n}\n\n.flag-badges {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.flag-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.flag-badge.pk {\n background: var(--mj-status-warning);\n color: var(--mj-bg-surface);\n}\n\n.flag-badge.fk {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n.flag-badge.encrypted {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n.col-desc {\n min-width: 0;\n}\n\n.desc-text {\n font-size: 13px;\n color: var(--text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n}\n\n.list-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: var(--text-muted);\n gap: 12px;\n}\n\n.list-empty i {\n font-size: 32px;\n opacity: 0.5;\n}\n\n.list-empty span {\n font-size: 14px;\n}\n\n/* ============================================================\n OVERVIEW SECTION\n ============================================================ */\n\n.stats-cards {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n}\n\n.stat-card {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 16px;\n position: relative;\n transition: all var(--transition-fast);\n}\n\n.stat-card.clickable {\n cursor: pointer;\n}\n\n.stat-card.clickable:hover {\n border-color: var(--accent-color);\n box-shadow: var(--shadow-md);\n transform: translateY(-2px);\n}\n\n.stat-card.clickable:hover .stat-card-action {\n opacity: 1;\n transform: translateX(0);\n}\n\n.stat-card-action {\n position: absolute;\n right: 16px;\n top: 50%;\n transform: translateY(-50%) translateX(-4px);\n color: var(--accent-color);\n opacity: 0;\n transition: all var(--transition-fast);\n}\n\n.stat-card-action i {\n font-size: 14px;\n}\n\n.stat-card-header {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--text-secondary);\n font-size: 13px;\n margin-bottom: 12px;\n}\n\n.stat-card-header i {\n font-size: 14px;\n}\n\n.stat-card-body .stat-main {\n font-size: 32px;\n font-weight: 700;\n color: var(--text-primary);\n line-height: 1;\n margin-bottom: 8px;\n}\n\n.stat-card-body .stat-details {\n display: flex;\n gap: 12px;\n font-size: 12px;\n color: var(--text-muted);\n}\n\n/* Info Panels */\n.info-panel {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary);\n margin: 0 0 16px 0;\n}\n\n.panel-title i {\n color: var(--accent-color);\n}\n\n/* Capability Tags */\n.capability-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.capability-tag {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 9999px;\n font-size: 12px;\n font-weight: 500;\n}\n\n.capability-tag i {\n font-size: 10px;\n}\n\n.capability-tag.disabled {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n/* Info Grid */\n.info-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.info-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.info-label {\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n}\n\n.info-value {\n font-size: 14px;\n color: var(--text-primary);\n}\n\n.info-value.code {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 13px;\n color: var(--accent-dark);\n}\n\n/* ============================================================\n FIELDS SECTION\n ============================================================ */\n\n.fields-content {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n overflow: hidden;\n}\n\n.field-groups {\n display: flex;\n flex-direction: column;\n}\n\n.field-group {\n border-bottom: 1px solid var(--border-light);\n}\n\n.field-group:last-child {\n border-bottom: none;\n}\n\n.group-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 20px;\n cursor: pointer;\n transition: background var(--transition-fast);\n user-select: none;\n background: var(--bg-secondary);\n border-left: 3px solid var(--accent-color);\n}\n\n.group-header:hover {\n background: var(--bg-tertiary);\n}\n\n.expand-icon {\n font-size: 10px;\n color: var(--text-muted);\n width: 16px;\n transition: transform var(--transition-fast);\n}\n\n.group-icon {\n font-size: 16px;\n color: var(--accent-color);\n width: 20px;\n text-align: center;\n}\n\n.group-label {\n flex: 1;\n font-size: 15px;\n font-weight: 600;\n color: var(--text-primary);\n letter-spacing: 0.01em;\n text-transform: uppercase;\n}\n\n.group-count {\n padding: 3px 10px;\n background: var(--accent-light);\n border-radius: 9999px;\n font-size: 12px;\n font-weight: 600;\n color: var(--accent-color);\n}\n\n.group-content {\n border-top: 1px solid var(--border-light);\n background: var(--bg-secondary);\n}\n\n.field-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 20px 12px 48px;\n cursor: pointer;\n transition: background var(--transition-fast);\n border-bottom: 1px solid var(--border-light);\n}\n\n.field-item:last-child {\n border-bottom: none;\n}\n\n.field-item:hover {\n background: var(--accent-light);\n}\n\n.field-item.selected {\n background: var(--accent-light);\n border-left: 3px solid var(--accent-color);\n padding-left: 45px;\n}\n\n.field-icon {\n width: 28px;\n height: 28px;\n border-radius: var(--radius-sm);\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n color: var(--text-muted);\n flex-shrink: 0;\n}\n\n.field-info {\n flex: 1;\n min-width: 0;\n}\n\n.field-name {\n font-size: 14px;\n font-weight: 500;\n color: var(--text-primary);\n}\n\n.field-db-name {\n font-size: 11px;\n font-family: 'SF Mono', 'Consolas', monospace;\n color: var(--text-secondary);\n margin-top: 2px;\n}\n\n.field-meta {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 2px;\n font-size: 12px;\n}\n\n.field-type {\n font-family: 'SF Mono', 'Consolas', monospace;\n color: var(--text-muted);\n}\n\n.field-nullable {\n color: var(--danger-color);\n}\n\n.field-related {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n color: var(--accent-color);\n cursor: pointer;\n}\n\n.field-related:hover {\n text-decoration: underline;\n}\n\n.field-badges {\n display: flex;\n gap: 4px;\n}\n\n.badge {\n padding: 2px 6px;\n border-radius: var(--radius-sm);\n font-size: 10px;\n font-weight: 600;\n}\n\n.badge.pk {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.badge.fk {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.badge.encrypted {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n/* ============================================================\n RELATIONSHIPS SECTION\n ============================================================ */\n\n.relationships-graph {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n min-height: 600px;\n height: calc(100vh - 280px);\n max-height: 800px;\n display: flex;\n align-items: stretch;\n justify-content: stretch;\n overflow: hidden;\n}\n\n.relationships-graph mj-entity-erd,\n.relationships-graph mj-erd-composite {\n width: 100%;\n height: 100%;\n flex: 1;\n}\n\n/* ERD Splitter for details panel */\n.relationships-graph .erd-splitter {\n width: 100%;\n height: 100%;\n}\n\n.relationships-graph kendo-splitter-pane {\n display: flex;\n flex-direction: column;\n}\n\n.relationships-graph mj-entity-details {\n height: 100%;\n overflow: auto;\n}\n\n.graph-placeholder {\n text-align: center;\n color: var(--text-muted);\n}\n\n.graph-placeholder i {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.5;\n}\n\n.graph-placeholder p {\n margin: 0;\n}\n\n.graph-placeholder .hint {\n font-size: 12px;\n margin-top: 8px;\n}\n\n.relationships-list {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n.relationship-group {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n overflow: hidden;\n}\n\n.relationship-group-title {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 20px;\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary);\n background: var(--bg-tertiary);\n border-bottom: 1px solid var(--border-color);\n}\n\n.relationship-group-title i {\n color: var(--accent-color);\n}\n\n.relationship-items {\n display: flex;\n flex-direction: column;\n}\n\n.relationship-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 20px;\n cursor: pointer;\n transition: background var(--transition-fast);\n border-bottom: 1px solid var(--border-light);\n}\n\n.relationship-item:last-child {\n border-bottom: none;\n}\n\n.relationship-item:hover {\n background: var(--accent-light);\n}\n\n.relationship-item.hidden {\n display: none;\n}\n\n.rel-icon {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: var(--accent-light);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--accent-color);\n font-size: 12px;\n}\n\n.rel-info {\n flex: 1;\n}\n\n.rel-entity {\n font-size: 14px;\n font-weight: 500;\n color: var(--accent-color);\n cursor: pointer;\n}\n\n.rel-entity:hover {\n text-decoration: underline;\n}\n\n.rel-field {\n font-size: 12px;\n color: var(--text-muted);\n margin-top: 2px;\n}\n\n.rel-meta {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.rel-type,\n.rel-display-type {\n padding: 2px 8px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-sm);\n font-size: 11px;\n color: var(--text-muted);\n}\n\n.rel-bundle {\n color: var(--success-color);\n}\n\n/* Grouped relationship styles */\n.relationship-group-title .group-count {\n margin-left: auto;\n background: var(--accent-light);\n color: var(--accent-color);\n padding: 2px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.relationship-items.grouped {\n padding: 8px 0;\n}\n\n.relationship-item-grouped {\n padding: 12px 20px;\n border-bottom: 1px solid var(--border-light);\n}\n\n.relationship-item-grouped:last-child {\n border-bottom: none;\n}\n\n.rel-header {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 10px;\n}\n\n.rel-icon.outgoing {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.rel-icon.incoming {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.rel-entity-name {\n font-size: 15px;\n font-weight: 600;\n color: var(--text-primary);\n}\n\n.rel-fields-chips {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n padding-left: 44px; /* Align with entity name (icon width + gap) */\n}\n\n.field-chip {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 5px 12px;\n border-radius: 16px;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.field-chip i {\n font-size: 10px;\n}\n\n.field-chip.outgoing {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid var(--mj-brand-primary);\n}\n\n.field-chip.outgoing:hover {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n.field-chip.incoming {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border: 1px solid var(--mj-status-success);\n}\n\n.field-chip.incoming:hover {\n background: var(--mj-status-success);\n color: white;\n}\n\n.field-chip .bundle-icon {\n font-size: 9px;\n margin-left: 2px;\n opacity: 0.8;\n}\n\n/* ============================================================\n PERMISSIONS SECTION\n ============================================================ */\n\n.permissions-matrix {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n overflow: hidden;\n}\n\n.matrix-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.matrix-table th,\n.matrix-table td {\n padding: 12px 16px;\n text-align: left;\n border-bottom: 1px solid var(--border-light);\n}\n\n.matrix-table th {\n background: var(--bg-tertiary);\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n}\n\n.matrix-table th.center,\n.matrix-table td.center {\n text-align: center;\n}\n\n.matrix-table tbody tr:hover {\n background: var(--bg-secondary);\n}\n\n.role-name {\n font-weight: 500;\n color: var(--text-primary);\n}\n\n.permission-icon {\n font-size: 14px;\n}\n\n.permission-icon.granted {\n color: var(--success-color);\n}\n\n.permission-icon.denied {\n color: var(--text-muted);\n}\n\n.rls-info {\n display: flex;\n gap: 4px;\n}\n\n.rls-badge {\n width: 20px;\n height: 20px;\n border-radius: var(--radius-sm);\n background: var(--warning-color);\n color: white;\n font-size: 10px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.no-rls {\n color: var(--text-muted);\n font-size: 12px;\n}\n\n/* API Capabilities */\n.api-capabilities {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.capability-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n gap: 12px;\n}\n\n.capability-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-md);\n font-size: 13px;\n color: var(--text-muted);\n}\n\n.capability-item i {\n font-size: 12px;\n}\n\n.capability-item.enabled {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.capability-item.enabled i {\n color: var(--success-color);\n}\n\n/* ============================================================\n LINEAGE SECTION\n ============================================================ */\n\n.lineage-diagram {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 24px;\n padding: 40px;\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n}\n\n.lineage-stage {\n text-align: center;\n}\n\n.lineage-stage h4 {\n font-size: 12px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n margin: 0 0 12px 0;\n}\n\n.lineage-items {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.lineage-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-md);\n font-size: 13px;\n color: var(--text-secondary);\n}\n\n.lineage-item i {\n color: var(--accent-color);\n}\n\n.lineage-arrow {\n font-size: 24px;\n color: var(--text-muted);\n}\n\n.entity-node .entity-box {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 24px 32px;\n background: var(--accent-color);\n color: white;\n border-radius: var(--radius-lg);\n font-weight: 600;\n}\n\n.entity-node .entity-box i {\n font-size: 24px;\n}\n\n.tracking-config {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.config-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.config-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-md);\n font-size: 13px;\n color: var(--text-muted);\n}\n\n.config-item.enabled {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.config-item .config-label {\n color: var(--text-muted);\n}\n\n.config-item .config-value {\n font-weight: 500;\n color: var(--text-primary);\n}\n\n/* ============================================================\n HISTORY SECTION\n ============================================================ */\n\n.history-config {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.config-status {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n}\n\n.config-status i {\n font-size: 24px;\n color: var(--text-muted);\n margin-top: 2px;\n}\n\n.config-status.enabled i {\n color: var(--success-color);\n}\n\n.config-text strong {\n display: block;\n font-size: 16px;\n color: var(--text-primary);\n margin-bottom: 4px;\n}\n\n.config-text span {\n font-size: 14px;\n color: var(--text-secondary);\n}\n\n.history-info {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 16px;\n}\n\n.info-card {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.info-card h4 {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n color: var(--text-primary);\n margin: 0 0 12px 0;\n}\n\n.info-card h4 i {\n color: var(--accent-color);\n}\n\n.info-card p {\n font-size: 14px;\n color: var(--text-secondary);\n line-height: 1.6;\n margin: 0;\n}\n\n.info-card code {\n background: var(--bg-tertiary);\n padding: 2px 6px;\n border-radius: var(--radius-sm);\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--accent-dark);\n}\n\n.audit-fields-list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.audit-fields-list li {\n padding: 8px 0;\n font-size: 14px;\n color: var(--text-secondary);\n border-bottom: 1px solid var(--border-light);\n}\n\n.audit-fields-list li:last-child {\n border-bottom: none;\n}\n\n/* ============================================================\n SETTINGS SECTION\n ============================================================ */\n\n.settings-panel {\n background: var(--bg-primary);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n padding: 20px;\n}\n\n.settings-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.setting-item {\n padding: 12px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-md);\n}\n\n.setting-name {\n font-weight: 500;\n color: var(--text-primary);\n margin-bottom: 4px;\n}\n\n.setting-value {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--accent-dark);\n word-break: break-all;\n}\n\n.setting-value-json {\n margin-top: 8px;\n border-radius: var(--radius-sm);\n overflow: hidden;\n border: 1px solid var(--border-color);\n background: var(--mj-bg-surface-sunken);\n}\n\n.setting-value-json mj-code-editor {\n display: block;\n max-height: 300px;\n}\n\n.setting-value-json ::ng-deep .cm-editor {\n font-size: 12px;\n background: var(--mj-bg-surface-sunken);\n}\n\n.setting-value-json ::ng-deep .cm-gutters {\n background: var(--mj-bg-surface-sunken);\n border-right: 1px solid var(--border-color);\n}\n\n.setting-comment {\n font-size: 12px;\n color: var(--text-muted);\n margin-top: 8px;\n}\n\n.fts-config,\n.settings-section .config-grid {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.config-row {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-row .config-label {\n width: 100px;\n font-size: 12px;\n color: var(--text-muted);\n}\n\n.config-row .config-value {\n font-size: 14px;\n color: var(--text-primary);\n}\n\n.config-row .config-value.code {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--accent-dark);\n}\n\n.config-row .config-value.enabled {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--success-color);\n}\n\n/* ============================================================\n DETAIL PANEL (Slide-in from right)\n ============================================================ */\n\n.detail-panel {\n position: fixed;\n top: 0;\n right: 0;\n width: var(--detail-panel-width);\n height: 100%;\n background: var(--bg-primary);\n border-left: 1px solid var(--border-color);\n box-shadow: var(--shadow-lg);\n transform: translateX(100%);\n transition: transform var(--transition-normal);\n z-index: 100;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.detail-panel.open {\n transform: translateX(0);\n}\n\n.panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--border-color);\n flex-shrink: 0;\n}\n\n.panel-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--text-primary);\n}\n\n.close-btn {\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n border-radius: var(--radius-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--text-muted);\n transition: all var(--transition-fast);\n}\n\n.close-btn:hover {\n background: var(--bg-tertiary);\n color: var(--text-primary);\n}\n\n.panel-content {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n.detail-section {\n margin-bottom: 24px;\n}\n\n.detail-section:last-child {\n margin-bottom: 0;\n}\n\n.detail-section h4 {\n font-size: 16px;\n font-weight: 600;\n color: var(--text-primary);\n margin: 0 0 8px 0;\n}\n\n.detail-section h5 {\n font-size: 12px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n margin: 0 0 12px 0;\n}\n\n.detail-field-db-name {\n font-size: 12px;\n font-family: 'SF Mono', 'Consolas', monospace;\n color: var(--text-secondary);\n margin-top: 4px;\n margin-bottom: 4px;\n}\n\n.field-description {\n font-size: 14px;\n color: var(--text-secondary);\n line-height: 1.5;\n margin: 0;\n}\n\n.detail-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.detail-item .label {\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n}\n\n.detail-item .value {\n font-size: 14px;\n color: var(--text-primary);\n}\n\n.detail-item .value.code {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 12px;\n color: var(--accent-dark);\n}\n\n.detail-item .value.link {\n color: var(--accent-color);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.detail-item .value.link:hover {\n text-decoration: underline;\n}\n\n.value-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.value-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--bg-tertiary);\n border-radius: var(--radius-md);\n font-size: 13px;\n}\n\n.value-code {\n font-family: 'SF Mono', 'Consolas', monospace;\n font-size: 11px;\n color: var(--accent-dark);\n background: var(--bg-primary);\n padding: 2px 6px;\n border-radius: var(--radius-sm);\n}\n\n.value-display {\n color: var(--text-primary);\n}\n\n/* ============================================================\n EMPTY STATES\n ============================================================ */\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n text-align: center;\n color: var(--text-muted);\n}\n\n.empty-state i {\n font-size: 32px;\n margin-bottom: 12px;\n opacity: 0.5;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 14px;\n}\n\n/* ============================================================\n LOADING / ERROR STATES\n ============================================================ */\n\n.explorer-loading,\n.explorer-error,\n.explorer-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 40px;\n text-align: center;\n color: var(--text-muted);\n}\n\n.explorer-error i,\n.explorer-empty i {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.5;\n}\n\n.explorer-error {\n color: var(--danger-color);\n}\n\n.explorer-error i {\n opacity: 1;\n}\n\n/* ============================================================\n IS-A TYPE HIERARCHY & VIRTUAL ENTITY STYLES\n ============================================================ */\n\n/* Badge variants for header */\n.isa-badge {\n font-size: 11px;\n font-weight: 600;\n padding: 3px 10px;\n border-radius: 12px;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n cursor: default;\n white-space: nowrap;\n}\n\n.isa-badge.virtual {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.isa-badge.child-type {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.isa-badge.child-type:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 22%, transparent);\n}\n\n.isa-badge.parent-type {\n background: color-mix(in srgb, var(--mj-status-success) 12%, transparent);\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 25%, transparent);\n}\n\n.isa-badge.overlapping {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, transparent);\n color: var(--mj-status-warning);\n border: 1px solid color-mix(in srgb, var(--mj-status-warning) 25%, transparent);\n}\n\n/* Breadcrumb under title */\n.isa-breadcrumb {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n margin-top: 2px;\n padding: 2px 0;\n}\n\n.isa-breadcrumb i {\n font-size: 11px;\n opacity: 0.7;\n}\n\n/* IS-A Panel (overview section) */\n.isa-panel {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.isa-info-row {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 6px;\n font-size: 13px;\n color: var(--text-primary);\n}\n\n.isa-info-row.virtual-info {\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, transparent);\n}\n\n.isa-info-row.virtual-info i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.isa-info-row .code {\n font-family: 'SF Mono', 'Cascadia Code', 'Consolas', monospace;\n font-size: 12px;\n background: color-mix(in srgb, var(--mj-text-primary) 6%, transparent);\n padding: 1px 6px;\n border-radius: 3px;\n color: var(--mj-brand-primary);\n}\n\n/* Inheritance chain */\n.isa-chain {\n padding: 8px 0;\n}\n\n.isa-chain-label {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-muted);\n margin-bottom: 8px;\n}\n\n.isa-chain-nodes {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n padding: 6px 0;\n}\n\n.isa-node {\n display: inline-flex;\n align-items: center;\n padding: 5px 12px;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n}\n\n.isa-node.current {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n.isa-node.parent {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n}\n\n.isa-arrow {\n color: var(--text-muted);\n font-size: 11px;\n}\n\n.isa-inherited-fields {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--text-muted);\n margin-top: 8px;\n padding-top: 8px;\n border-top: 1px solid var(--border-color);\n}\n\n.isa-inherited-fields i {\n font-size: 12px;\n color: var(--mj-brand-primary);\n}\n\n/* Child types list */\n.isa-children {\n padding: 8px 0;\n}\n\n.isa-child-list {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n padding: 4px 0;\n}\n\n.isa-child-chip {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 12px;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 20%, transparent);\n}\n\n/* Clickable elements */\n.clickable {\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.clickable:hover {\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.isa-node.parent.clickable:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n.isa-child-chip.clickable:hover {\n background: color-mix(in srgb, var(--mj-status-success) 20%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-success) 35%, transparent);\n}\n\n/* Field inherited badge (card and list views) */\n.badge.inherited,\n.flag-badge.inherited {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n font-size: 10px;\n font-weight: 600;\n gap: 3px;\n}\n\n.flag-badge.inherited {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n padding: 1px 6px;\n border-radius: 4px;\n font-size: 10px;\n}\n\n.flag-badge.inherited i {\n font-size: 9px;\n}\n\n/* IS-A source section in field detail panel */\n.isa-source-section {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n border-radius: 6px;\n padding: 12px;\n margin: -4px -12px 8px;\n}\n\n.isa-source-section h5 {\n color: var(--mj-brand-primary);\n}\n\n.isa-source-section h5 i {\n margin-right: 4px;\n}\n\n/* IS-A settings panel */\n.isa-settings-panel {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.isa-settings-panel .link {\n color: var(--mj-brand-primary);\n cursor: pointer;\n transition: color 0.15s ease;\n}\n\n.isa-settings-panel .link:hover {\n color: var(--mj-brand-primary);\n text-decoration: underline;\n}\n\n.isa-settings-panel .muted {\n color: var(--text-muted);\n}\n\n/* IS-A Field Inspector */\n.isa-field-inspector {\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--border-color);\n}\n\n.isa-field-inspector > .isa-chain-label {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.isa-inspector-groups {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-top: 8px;\n}\n\n.isa-inspector-group {\n border-radius: 6px;\n padding: 8px 12px;\n border: 1px solid var(--border-color);\n}\n\n.isa-inspector-group.own {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.isa-inspector-group.inherited {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.isa-inspector-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 6px;\n}\n\n.isa-inspector-entity {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 600;\n color: var(--text-primary);\n}\n\n.isa-inspector-count {\n font-size: 11px;\n color: var(--text-muted);\n font-weight: 500;\n}\n\n.isa-inspector-fields {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.isa-inspector-field {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 4px;\n background: color-mix(in srgb, var(--mj-text-primary) 4%, transparent);\n color: var(--text-primary);\n}\n\n.isa-inspector-type {\n font-size: 10px;\n color: var(--text-muted);\n font-family: 'SF Mono', 'Cascadia Code', 'Consolas', monospace;\n}\n\n/* Sibling chips */\n.isa-siblings {\n padding: 8px 0;\n}\n\n.isa-sibling-chip {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 12px;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent);\n color: var(--mj-status-warning);\n border: 1px solid color-mix(in srgb, var(--mj-status-warning) 20%, transparent);\n}\n\n.isa-sibling-chip.clickable:hover {\n background: color-mix(in srgb, var(--mj-status-warning) 20%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-warning) 35%, transparent);\n}\n\n/* Child count badge */\n.isa-child-count {\n font-size: 11px;\n background: color-mix(in srgb, var(--mj-text-primary) 8%, transparent);\n padding: 1px 6px;\n border-radius: 8px;\n margin-left: 2px;\n font-weight: 600;\n}\n\n.isa-child-count i {\n font-size: 10px;\n}\n\n/* ============================================================\n DATA SECTION\n ============================================================ */\n.data-section {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n padding: 0;\n overflow: hidden;\n}\n\n.data-viewer-container {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n/* ============================================================\n ORGANIC KEYS SECTION\n ============================================================ */\n\n.organic-key-cards {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 4px 0;\n}\n\n.organic-key-card {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 16px;\n transition: border-color 0.15s ease;\n}\n\n.organic-key-card:hover {\n border-color: var(--mj-border-strong);\n}\n\n.organic-key-card.incoming {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.organic-key-card-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.organic-key-name {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.organic-key-icon {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.organic-key-badges {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n}\n\n.organic-key-badge {\n display: inline-flex;\n align-items: center;\n padding: 2px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n font-family: 'SF Mono', 'Fira Code', monospace;\n}\n\n.organic-key-badge.strategy {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.organic-key-badge.fields {\n background: color-mix(in srgb, var(--mj-status-info) 10%, var(--mj-bg-surface));\n color: var(--mj-status-info-text, var(--mj-status-info));\n}\n\n.organic-key-description {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin: 0 0 12px 0;\n line-height: 1.4;\n}\n\n.organic-key-targets {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.organic-key-target {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 10px 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n font-size: 13px;\n transition: background 0.15s ease, border-color 0.15s ease;\n}\n\n.organic-key-target.clickable,\n.organic-key-card.clickable {\n cursor: pointer;\n}\n\n.organic-key-target.clickable:hover,\n.organic-key-card.clickable:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.target-main {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n flex: 1;\n}\n\n.target-header {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.target-entity-icon {\n font-size: 12px;\n color: var(--mj-text-muted);\n width: 16px;\n text-align: center;\n}\n\n.target-entity-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n min-width: 0;\n}\n\n.target-nav-icon {\n font-size: 10px;\n color: var(--mj-text-disabled);\n margin-left: 4px;\n transition: color 0.15s ease;\n}\n\n.organic-key-target.clickable:hover .target-nav-icon,\n.organic-key-card.clickable:hover .target-nav-icon {\n color: var(--mj-brand-primary);\n}\n\n.target-match-detail {\n display: flex;\n align-items: center;\n gap: 6px;\n padding-left: 24px;\n}\n\n.match-type-badge {\n display: inline-flex;\n align-items: center;\n padding: 2px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.match-type-badge.direct {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success-text, var(--mj-status-success));\n}\n\n.match-type-badge.transitive {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n color: var(--mj-status-warning-text, var(--mj-status-warning));\n}\n\n.match-fields {\n font-size: 11px;\n font-family: 'SF Mono', 'Fira Code', monospace;\n color: var(--mj-text-secondary);\n}\n\n.organic-key-detail-row {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n font-size: 12px;\n}\n\n.detail-label {\n color: var(--mj-text-muted);\n font-weight: 500;\n flex-shrink: 0;\n}\n\n.detail-value {\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', 'Fira Code', monospace;\n}\n\n.empty-state-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.empty-state-icon {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.empty-state-card h3 {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin: 0 0 8px 0;\n}\n\n.empty-state-card p {\n font-size: 13px;\n line-height: 1.5;\n max-width: 500px;\n margin: 0;\n}\n", ".k-pane {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin {\n margin: 10px;\n}\n\n\na {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon {\n margin-right: 5px;\n}\n\n.record-form {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton {\n margin-right: 5px;\n}\n\n.record-form h2 {\n margin-bottom: 10px;\n}\n\n.k-splitter {\n border-width: 0px;\n}\n\n.record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form .record-form-row > :first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form .record-form-row > span {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n/* Collapsible Panel Styles */\n.form-panels-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n/* All field sections take full width */\n.form-panels-container > .form-card {\n width: 100%;\n}\n\n/* Related entity grid container - responsive layout */\n.form-panels-container .related-entity-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n/* Responsive multi-column layout for related entities on wider screens */\n@media (min-width: 1400px) {\n .form-panels-container .related-entity-grid {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card {\n overflow: hidden;\n}\n\n.collapsible-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title i {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header .collapse-icon {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body {\n padding: 24px;\n}\n\n/* Related Entity Sections - Visual Distinction */\n.form-card.related-entity {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-header {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-title i {\n color: var(--mj-brand-primary);\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls .control-group {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls button {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls button:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls button:active {\n transform: translateY(0);\n}\n\n.form-section-controls button i {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls .section-search {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls .section-search::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n/* Hidden sections for search filter */\n.form-card.search-hidden {\n display: none;\n}\n\n/* Section count badge */\n.section-count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Search highlighting in section names */\n.collapsible-title h3 .search-highlight {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n/* Row count badge in section headers */\n.collapsible-title .row-count-badge {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n/* Gray badge for zero rows (loaded but empty) */\n.collapsible-title .row-count-badge.zero-rows {\n background: var(--mj-text-muted);\n}\n"] }]
3304
3589
  }], null, null); })();
3305
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJEntityFormComponentExtended, { className: "MJEntityFormComponentExtended", filePath: "src/lib/custom/Entities/entity-form.component.ts", lineNumber: 132 }); })();
3590
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJEntityFormComponentExtended, { className: "MJEntityFormComponentExtended", filePath: "src/lib/custom/Entities/entity-form.component.ts", lineNumber: 155 }); })();
3306
3591
  //# sourceMappingURL=entity-form.component.js.map