@memberjunction/ng-core-entity-forms 6.2.1 → 6.3.0-edge.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 (204) hide show
  1. package/README.md +5 -6
  2. package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.d.ts.map +1 -1
  3. package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js +3 -3
  4. package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js.map +1 -1
  5. package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts +12 -0
  6. package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts.map +1 -1
  7. package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js +293 -230
  8. package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -1
  9. package/dist/lib/custom/AIAgents/add-action-dialog.component.js +2 -2
  10. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +2 -2
  11. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +11 -0
  12. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  13. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +862 -812
  14. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  15. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +2 -2
  16. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +2 -2
  17. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +2 -2
  18. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +2 -2
  19. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +2 -2
  20. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +2 -2
  21. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +12 -0
  22. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
  23. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +821 -763
  24. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  25. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +2 -2
  26. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +10 -0
  27. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
  28. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +700 -605
  29. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  30. package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +10 -0
  31. package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -1
  32. package/dist/lib/custom/Actions/action-execution-log-form.component.js +223 -175
  33. package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
  34. package/dist/lib/custom/Actions/action-form.component.d.ts +10 -0
  35. package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
  36. package/dist/lib/custom/Actions/action-form.component.js +502 -453
  37. package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
  38. package/dist/lib/custom/Companies/company-header.panel.d.ts.map +1 -1
  39. package/dist/lib/custom/Companies/company-header.panel.js +3 -3
  40. package/dist/lib/custom/Companies/company-header.panel.js.map +1 -1
  41. package/dist/lib/custom/Conversations/conversation-header.panel.d.ts.map +1 -1
  42. package/dist/lib/custom/Conversations/conversation-header.panel.js +3 -3
  43. package/dist/lib/custom/Conversations/conversation-header.panel.js.map +1 -1
  44. package/dist/lib/custom/Employees/employee-header.panel.d.ts.map +1 -1
  45. package/dist/lib/custom/Employees/employee-header.panel.js +3 -3
  46. package/dist/lib/custom/Employees/employee-header.panel.js.map +1 -1
  47. package/dist/lib/custom/Entities/entity-form.component.d.ts +15 -0
  48. package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
  49. package/dist/lib/custom/Entities/entity-form.component.js +836 -801
  50. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  51. package/dist/lib/custom/EntityActions/entityaction.form.component.js +2 -2
  52. package/dist/lib/custom/Files/file-form.component.js +2 -2
  53. package/dist/lib/custom/Lists/list-form.component.d.ts +5 -0
  54. package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
  55. package/dist/lib/custom/Lists/list-form.component.js +355 -338
  56. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  57. package/dist/lib/custom/MLModels/ml-model-form.component.js +3 -3
  58. package/dist/lib/custom/MLModels/ml-model-form.component.js.map +1 -1
  59. package/dist/lib/custom/MLModels/ml-model-view-models.d.ts +17 -35
  60. package/dist/lib/custom/MLModels/ml-model-view-models.d.ts.map +1 -1
  61. package/dist/lib/custom/MLModels/ml-model-view-models.js +55 -54
  62. package/dist/lib/custom/MLModels/ml-model-view-models.js.map +1 -1
  63. package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts +7 -99
  64. package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts.map +1 -1
  65. package/dist/lib/custom/MLModels/ps-model-detail.component.js +124 -303
  66. package/dist/lib/custom/MLModels/ps-model-detail.component.js.map +1 -1
  67. package/dist/lib/custom/Queries/query-form.component.d.ts +9 -0
  68. package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
  69. package/dist/lib/custom/Queries/query-form.component.js +493 -444
  70. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  71. package/dist/lib/custom/Queries/query-run-dialog.component.js +2 -2
  72. package/dist/lib/custom/Templates/template-param-dialog.component.js +2 -2
  73. package/dist/lib/custom/Templates/templates-form.component.d.ts +9 -0
  74. package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
  75. package/dist/lib/custom/Templates/templates-form.component.js +118 -74
  76. package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
  77. package/dist/lib/custom/Tests/test-form.component.d.ts +5 -0
  78. package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
  79. package/dist/lib/custom/Tests/test-form.component.js +471 -451
  80. package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
  81. package/dist/lib/custom/Tests/test-run-form.component.d.ts +5 -0
  82. package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
  83. package/dist/lib/custom/Tests/test-run-form.component.js +312 -289
  84. package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
  85. package/dist/lib/custom/Tests/test-suite-form.component.d.ts +5 -0
  86. package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
  87. package/dist/lib/custom/Tests/test-suite-form.component.js +697 -677
  88. package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
  89. package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts +5 -0
  90. package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
  91. package/dist/lib/custom/Tests/test-suite-run-form.component.js +453 -433
  92. package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
  93. package/dist/lib/custom/Users/user-header.panel.d.ts.map +1 -1
  94. package/dist/lib/custom/Users/user-header.panel.js +3 -3
  95. package/dist/lib/custom/Users/user-header.panel.js.map +1 -1
  96. package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts +2 -2
  97. package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts.map +1 -1
  98. package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js +30 -13
  99. package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js.map +1 -1
  100. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +23 -0
  101. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
  102. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +276 -216
  103. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  104. package/dist/lib/custom/custom-forms.module.d.ts +1 -1
  105. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  106. package/dist/lib/custom/custom-forms.module.js +7 -1
  107. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  108. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.d.ts.map +1 -1
  109. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +32 -14
  110. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
  111. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.d.ts.map +1 -1
  112. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +119 -95
  113. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
  114. package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.d.ts +10 -0
  115. package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.d.ts.map +1 -0
  116. package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.js +124 -0
  117. package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.js.map +1 -0
  118. package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.d.ts +10 -0
  119. package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.d.ts.map +1 -0
  120. package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.js +99 -0
  121. package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.js.map +1 -0
  122. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +2 -2
  123. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
  124. package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.d.ts +10 -0
  125. package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.d.ts.map +1 -0
  126. package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.js +95 -0
  127. package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.js.map +1 -0
  128. package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.d.ts +10 -0
  129. package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.d.ts.map +1 -0
  130. package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.js +60 -0
  131. package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.js.map +1 -0
  132. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
  133. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +124 -106
  134. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
  135. package/dist/lib/generated/Entities/MJEntityFieldValue/mjentityfieldvalue.form.component.d.ts.map +1 -1
  136. package/dist/lib/generated/Entities/MJEntityFieldValue/mjentityfieldvalue.form.component.js +12 -4
  137. package/dist/lib/generated/Entities/MJEntityFieldValue/mjentityfieldvalue.form.component.js.map +1 -1
  138. package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.d.ts.map +1 -1
  139. package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js +19 -11
  140. package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js.map +1 -1
  141. package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.d.ts +10 -0
  142. package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.d.ts.map +1 -0
  143. package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.js +62 -0
  144. package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.js.map +1 -0
  145. package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.d.ts.map +1 -1
  146. package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js +26 -12
  147. package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js.map +1 -1
  148. package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.d.ts +10 -0
  149. package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.d.ts.map +1 -0
  150. package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.js +140 -0
  151. package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.js.map +1 -0
  152. package/dist/lib/generated/Entities/MJFile/mjfile.form.component.d.ts.map +1 -1
  153. package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js +69 -15
  154. package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js.map +1 -1
  155. package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.d.ts.map +1 -1
  156. package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js +31 -13
  157. package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js.map +1 -1
  158. package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.d.ts +10 -0
  159. package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.d.ts.map +1 -0
  160. package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.js +205 -0
  161. package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.js.map +1 -0
  162. package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.d.ts.map +1 -1
  163. package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js +24 -6
  164. package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js.map +1 -1
  165. package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.d.ts +10 -0
  166. package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.d.ts.map +1 -0
  167. package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.js +173 -0
  168. package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.js.map +1 -0
  169. package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.d.ts.map +1 -1
  170. package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js +46 -24
  171. package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js.map +1 -1
  172. package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js +22 -14
  173. package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js.map +1 -1
  174. package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.d.ts +10 -0
  175. package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.d.ts.map +1 -0
  176. package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.js +175 -0
  177. package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.js.map +1 -0
  178. package/dist/lib/generated/Entities/MJQueryField/mjqueryfield.form.component.js +8 -6
  179. package/dist/lib/generated/Entities/MJQueryField/mjqueryfield.form.component.js.map +1 -1
  180. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.d.ts.map +1 -1
  181. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js +44 -36
  182. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -1
  183. package/dist/lib/generated/Entities/MJTask/mjtask.form.component.d.ts.map +1 -1
  184. package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js +54 -32
  185. package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js.map +1 -1
  186. package/dist/lib/generated/generated-forms.module.d.ts +452 -443
  187. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  188. package/dist/lib/generated/generated-forms.module.js +27 -0
  189. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  190. package/dist/lib/panels/feature-values/feature-values.panel.js +1 -1
  191. package/dist/lib/panels/feature-values/feature-values.panel.js.map +1 -1
  192. package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts +1 -1
  193. package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -1
  194. package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -1
  195. package/dist/lib/shared/components/template-editor.component.js +2 -2
  196. package/dist/lib/shared/phone-hero.d.ts +17 -0
  197. package/dist/lib/shared/phone-hero.d.ts.map +1 -0
  198. package/dist/lib/shared/phone-hero.js +30 -0
  199. package/dist/lib/shared/phone-hero.js.map +1 -0
  200. package/dist/lib/shared/phone-sections-state.d.ts +28 -0
  201. package/dist/lib/shared/phone-sections-state.d.ts.map +1 -0
  202. package/dist/lib/shared/phone-sections-state.js +38 -0
  203. package/dist/lib/shared/phone-sections-state.js.map +1 -0
  204. package/package.json +50 -50
@@ -12,6 +12,7 @@ import { IndexByUUID, RegisterClass, UUIDMap, UUIDsEqual } from '@memberjunction
12
12
  import { BaseFormComponent } from '@memberjunction/ng-base-forms';
13
13
  import { SharedService } from '@memberjunction/ng-shared';
14
14
  import { MJEntityFormComponent } from '../../generated/Entities/MJEntity/mjentity.form.component';
15
+ import { IsPhoneViewport, WatchPhoneViewport } from '@memberjunction/ng-ui-components';
15
16
  import * as i0 from "@angular/core";
16
17
  import * as i1 from "@angular/common";
17
18
  import * as i2 from "@angular/forms";
@@ -32,15 +33,15 @@ const _forTrack3 = ($index, $item) => $item.Info.ID;
32
33
  const _forTrack4 = ($index, $item) => $item.OrganicKey.ID + $item.SourceEntityName;
33
34
  function MJEntityFormComponentExtended_Conditional_0_Conditional_11_Template(rf, ctx) { if (rf & 1) {
34
35
  i0.ɵɵelementStart(0, "span", 8);
35
- i0.ɵɵelement(1, "i", 42);
36
+ i0.ɵɵelement(1, "i", 43);
36
37
  i0.ɵɵtext(2, " Virtual ");
37
38
  i0.ɵɵelementEnd();
38
39
  } }
39
40
  function MJEntityFormComponentExtended_Conditional_0_Conditional_12_Template(rf, ctx) { if (rf & 1) {
40
41
  const _r2 = i0.ɵɵgetCurrentView();
41
- i0.ɵɵelementStart(0, "span", 43);
42
+ i0.ɵɵelementStart(0, "span", 44);
42
43
  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])); });
43
- i0.ɵɵelement(1, "i", 44);
44
+ i0.ɵɵelement(1, "i", 45);
44
45
  i0.ɵɵtext(2);
45
46
  i0.ɵɵelementEnd();
46
47
  } if (rf & 2) {
@@ -49,17 +50,17 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_12_Template(rf,
49
50
  i0.ɵɵtextInterpolate1(" IS-A ", ctx_r2.ParentChain[0] == null ? null : ctx_r2.ParentChain[0].Name, " ");
50
51
  } }
51
52
  function MJEntityFormComponentExtended_Conditional_0_Conditional_13_Conditional_3_Template(rf, ctx) { if (rf & 1) {
52
- i0.ɵɵelementStart(0, "span", 47);
53
- i0.ɵɵelement(1, "i", 48);
53
+ i0.ɵɵelementStart(0, "span", 48);
54
+ i0.ɵɵelement(1, "i", 49);
54
55
  i0.ɵɵtext(2, " Overlapping Subtypes ");
55
56
  i0.ɵɵelementEnd();
56
57
  } }
57
58
  function MJEntityFormComponentExtended_Conditional_0_Conditional_13_Template(rf, ctx) { if (rf & 1) {
58
- i0.ɵɵelementStart(0, "span", 45);
59
- i0.ɵɵelement(1, "i", 46);
59
+ i0.ɵɵelementStart(0, "span", 46);
60
+ i0.ɵɵelement(1, "i", 47);
60
61
  i0.ɵɵtext(2);
61
62
  i0.ɵɵelementEnd();
62
- i0.ɵɵconditionalCreate(3, MJEntityFormComponentExtended_Conditional_0_Conditional_13_Conditional_3_Template, 3, 0, "span", 47);
63
+ i0.ɵɵconditionalCreate(3, MJEntityFormComponentExtended_Conditional_0_Conditional_13_Conditional_3_Template, 3, 0, "span", 48);
63
64
  } if (rf & 2) {
64
65
  const ctx_r2 = i0.ɵɵnextContext(2);
65
66
  i0.ɵɵadvance(2);
@@ -69,7 +70,7 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_13_Template(rf,
69
70
  } }
70
71
  function MJEntityFormComponentExtended_Conditional_0_Conditional_14_Template(rf, ctx) { if (rf & 1) {
71
72
  i0.ɵɵelementStart(0, "div", 10);
72
- i0.ɵɵelement(1, "i", 49);
73
+ i0.ɵɵelement(1, "i", 50);
73
74
  i0.ɵɵtext(2);
74
75
  i0.ɵɵelementEnd();
75
76
  } if (rf & 2) {
@@ -99,11 +100,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_42_Template(rf,
99
100
  } }
100
101
  function MJEntityFormComponentExtended_Conditional_0_Conditional_43_Template(rf, ctx) { if (rf & 1) {
101
102
  i0.ɵɵelementStart(0, "span", 23);
102
- i0.ɵɵelement(1, "i", 50);
103
+ i0.ɵɵelement(1, "i", 51);
103
104
  i0.ɵɵelementEnd();
104
105
  } }
105
- function MJEntityFormComponentExtended_Conditional_0_For_49_Conditional_4_Template(rf, ctx) { if (rf & 1) {
106
- i0.ɵɵelementStart(0, "span", 53);
106
+ function MJEntityFormComponentExtended_Conditional_0_For_50_Conditional_4_Template(rf, ctx) { if (rf & 1) {
107
+ i0.ɵɵelementStart(0, "span", 54);
107
108
  i0.ɵɵtext(1);
108
109
  i0.ɵɵelementEnd();
109
110
  } if (rf & 2) {
@@ -111,15 +112,15 @@ function MJEntityFormComponentExtended_Conditional_0_For_49_Conditional_4_Templa
111
112
  i0.ɵɵadvance();
112
113
  i0.ɵɵtextInterpolate(item_r5.badge);
113
114
  } }
114
- function MJEntityFormComponentExtended_Conditional_0_For_49_Template(rf, ctx) { if (rf & 1) {
115
+ function MJEntityFormComponentExtended_Conditional_0_For_50_Template(rf, ctx) { if (rf & 1) {
115
116
  const _r4 = i0.ɵɵgetCurrentView();
116
- i0.ɵɵelementStart(0, "button", 51);
117
- 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)); });
117
+ i0.ɵɵelementStart(0, "button", 52);
118
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_For_50_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)); });
118
119
  i0.ɵɵelement(1, "i");
119
- i0.ɵɵelementStart(2, "span", 52);
120
+ i0.ɵɵelementStart(2, "span", 53);
120
121
  i0.ɵɵtext(3);
121
122
  i0.ɵɵelementEnd();
122
- i0.ɵɵconditionalCreate(4, MJEntityFormComponentExtended_Conditional_0_For_49_Conditional_4_Template, 2, 1, "span", 53);
123
+ i0.ɵɵconditionalCreate(4, MJEntityFormComponentExtended_Conditional_0_For_50_Conditional_4_Template, 2, 1, "span", 54);
123
124
  i0.ɵɵelementEnd();
124
125
  } if (rf & 2) {
125
126
  const item_r5 = ctx.$implicit;
@@ -133,7 +134,7 @@ function MJEntityFormComponentExtended_Conditional_0_For_49_Template(rf, ctx) {
133
134
  i0.ɵɵadvance();
134
135
  i0.ɵɵconditional(item_r5.badge ? 4 : -1);
135
136
  } }
136
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_16_Template(rf, ctx) { if (rf & 1) {
137
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_16_Template(rf, ctx) { if (rf & 1) {
137
138
  i0.ɵɵelementStart(0, "span");
138
139
  i0.ɵɵtext(1);
139
140
  i0.ɵɵelementEnd();
@@ -142,7 +143,7 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
142
143
  i0.ɵɵadvance();
143
144
  i0.ɵɵtextInterpolate1("", ctx_r2.stats.encryptedFieldCount, " Encrypted");
144
145
  } }
145
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_56_Template(rf, ctx) { if (rf & 1) {
146
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_56_Template(rf, ctx) { if (rf & 1) {
146
147
  i0.ɵɵelementStart(0, "span");
147
148
  i0.ɵɵtext(1);
148
149
  i0.ɵɵpipe(2, "date");
@@ -152,14 +153,14 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
152
153
  i0.ɵɵadvance();
153
154
  i0.ɵɵtextInterpolate1("Updated ", i0.ɵɵpipeBind2(2, 1, ctx_r2.entity.RowCountRunAt, "short"));
154
155
  } }
155
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_57_Template(rf, ctx) { if (rf & 1) {
156
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_57_Template(rf, ctx) { if (rf & 1) {
156
157
  i0.ɵɵelementStart(0, "span");
157
158
  i0.ɵɵtext(1, "Row count");
158
159
  i0.ɵɵelementEnd();
159
160
  } }
160
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_For_64_Template(rf, ctx) { if (rf & 1) {
161
- i0.ɵɵelementStart(0, "span", 73);
162
- i0.ɵɵelement(1, "i", 85);
161
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_For_64_Template(rf, ctx) { if (rf & 1) {
162
+ i0.ɵɵelementStart(0, "span", 74);
163
+ i0.ɵɵelement(1, "i", 86);
163
164
  i0.ɵɵtext(2);
164
165
  i0.ɵɵelementEnd();
165
166
  } if (rf & 2) {
@@ -167,18 +168,18 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_For_64_Templ
167
168
  i0.ɵɵadvance(2);
168
169
  i0.ɵɵtextInterpolate1(" ", cap_r7, " ");
169
170
  } }
170
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_65_Template(rf, ctx) { if (rf & 1) {
171
- i0.ɵɵelementStart(0, "span", 74);
172
- i0.ɵɵelement(1, "i", 40);
171
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_65_Template(rf, ctx) { if (rf & 1) {
172
+ i0.ɵɵelementStart(0, "span", 75);
173
+ i0.ɵɵelement(1, "i", 41);
173
174
  i0.ɵɵtext(2, " No API ");
174
175
  i0.ɵɵelementEnd();
175
176
  } }
176
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_4_Template(rf, ctx) { if (rf & 1) {
177
- i0.ɵɵelementStart(0, "div", 86);
178
- i0.ɵɵelement(1, "i", 42);
177
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_4_Template(rf, ctx) { if (rf & 1) {
178
+ i0.ɵɵelementStart(0, "div", 87);
179
+ i0.ɵɵelement(1, "i", 43);
179
180
  i0.ɵɵelementStart(2, "span");
180
181
  i0.ɵɵtext(3, "Virtual Entity \u2014 read-only view backed by ");
181
- i0.ɵɵelementStart(4, "span", 88);
182
+ i0.ɵɵelementStart(4, "span", 89);
182
183
  i0.ɵɵtext(5);
183
184
  i0.ɵɵelementEnd()()();
184
185
  } if (rf & 2) {
@@ -186,11 +187,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
186
187
  i0.ɵɵadvance(5);
187
188
  i0.ɵɵtextInterpolate(ctx_r2.entity.BaseView);
188
189
  } }
189
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_For_7_Template(rf, ctx) { if (rf & 1) {
190
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_For_7_Template(rf, ctx) { if (rf & 1) {
190
191
  const _r8 = i0.ɵɵgetCurrentView();
191
- i0.ɵɵelement(0, "i", 96);
192
- i0.ɵɵelementStart(1, "span", 97);
193
- 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)); });
192
+ i0.ɵɵelement(0, "i", 97);
193
+ i0.ɵɵelementStart(1, "span", 98);
194
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_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)); });
194
195
  i0.ɵɵtext(2);
195
196
  i0.ɵɵelementEnd();
196
197
  } if (rf & 2) {
@@ -200,21 +201,21 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
200
201
  i0.ɵɵadvance();
201
202
  i0.ɵɵtextInterpolate1(" ", parent_r9.Name, " ");
202
203
  } }
203
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_ng_template_2_Template(rf, ctx) { if (rf & 1) {
204
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_Conditional_12_ng_template_2_Template(rf, ctx) { if (rf & 1) {
204
205
  i0.ɵɵelementStart(0, "span");
205
206
  i0.ɵɵtext(1, "Field Source Inspector");
206
207
  i0.ɵɵelementEnd();
207
208
  } }
208
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_ng_template_3_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
209
- i0.ɵɵelement(0, "i", 106);
210
- } }
211
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_ng_template_3_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
209
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_Conditional_12_ng_template_3_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
212
210
  i0.ɵɵelement(0, "i", 107);
213
211
  } }
214
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_ng_template_3_For_2_For_10_Template(rf, ctx) { if (rf & 1) {
215
- i0.ɵɵelementStart(0, "span", 110);
212
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_Conditional_12_ng_template_3_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
213
+ i0.ɵɵelement(0, "i", 108);
214
+ } }
215
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_Conditional_12_ng_template_3_For_2_For_10_Template(rf, ctx) { if (rf & 1) {
216
+ i0.ɵɵelementStart(0, "span", 111);
216
217
  i0.ɵɵtext(1);
217
- i0.ɵɵelementStart(2, "span", 111);
218
+ i0.ɵɵelementStart(2, "span", 112);
218
219
  i0.ɵɵtext(3);
219
220
  i0.ɵɵelementEnd()();
220
221
  } if (rf & 2) {
@@ -225,16 +226,16 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
225
226
  i0.ɵɵadvance(2);
226
227
  i0.ɵɵtextInterpolate(field_r11.Type);
227
228
  } }
228
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_ng_template_3_For_2_Template(rf, ctx) { if (rf & 1) {
229
- i0.ɵɵelementStart(0, "div", 103)(1, "div", 104)(2, "span", 105);
230
- i0.ɵɵconditionalCreate(3, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_ng_template_3_For_2_Conditional_3_Template, 1, 0, "i", 106)(4, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_ng_template_3_For_2_Conditional_4_Template, 1, 0, "i", 107);
229
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_Conditional_12_ng_template_3_For_2_Template(rf, ctx) { if (rf & 1) {
230
+ i0.ɵɵelementStart(0, "div", 104)(1, "div", 105)(2, "span", 106);
231
+ i0.ɵɵconditionalCreate(3, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_Conditional_12_ng_template_3_For_2_Conditional_3_Template, 1, 0, "i", 107)(4, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_Conditional_12_ng_template_3_For_2_Conditional_4_Template, 1, 0, "i", 108);
231
232
  i0.ɵɵtext(5);
232
233
  i0.ɵɵelementEnd();
233
- i0.ɵɵelementStart(6, "span", 108);
234
+ i0.ɵɵelementStart(6, "span", 109);
234
235
  i0.ɵɵtext(7);
235
236
  i0.ɵɵelementEnd()();
236
- i0.ɵɵelementStart(8, "div", 109);
237
- i0.ɵɵrepeaterCreate(9, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_ng_template_3_For_2_For_10_Template, 4, 3, "span", 110, _forTrack0);
237
+ i0.ɵɵelementStart(8, "div", 110);
238
+ i0.ɵɵrepeaterCreate(9, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_Conditional_12_ng_template_3_For_2_For_10_Template, 4, 3, "span", 111, _forTrack0);
238
239
  i0.ɵɵelementEnd()();
239
240
  } if (rf & 2) {
240
241
  const group_r12 = ctx.$implicit;
@@ -248,31 +249,31 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
248
249
  i0.ɵɵadvance(2);
249
250
  i0.ɵɵrepeater(group_r12.Fields);
250
251
  } }
251
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_ng_template_3_Template(rf, ctx) { if (rf & 1) {
252
- i0.ɵɵelementStart(0, "div", 101);
253
- i0.ɵɵrepeaterCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_ng_template_3_For_2_Template, 11, 8, "div", 102, _forTrack1);
252
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_Conditional_12_ng_template_3_Template(rf, ctx) { if (rf & 1) {
253
+ i0.ɵɵelementStart(0, "div", 102);
254
+ i0.ɵɵrepeaterCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_Conditional_12_ng_template_3_For_2_Template, 11, 8, "div", 103, _forTrack1);
254
255
  i0.ɵɵelementEnd();
255
256
  } if (rf & 2) {
256
257
  const ctx_r2 = i0.ɵɵnextContext(6);
257
258
  i0.ɵɵadvance();
258
259
  i0.ɵɵrepeater(ctx_r2.isaFieldGroups);
259
260
  } }
260
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_Template(rf, ctx) { if (rf & 1) {
261
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_Conditional_12_Template(rf, ctx) { if (rf & 1) {
261
262
  const _r10 = i0.ɵɵgetCurrentView();
262
- i0.ɵɵelementStart(0, "div", 94)(1, "mj-accordion-panel", 98);
263
- i0.ɵɵlistener("ExpandedChange", function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_Template_mj_accordion_panel_ExpandedChange_1_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.isaFieldInspectorExpanded = $event); });
264
- i0.ɵɵtemplate(2, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_ng_template_2_Template, 2, 0, "ng-template", 99)(3, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_ng_template_3_Template, 3, 0, "ng-template", 100);
263
+ i0.ɵɵelementStart(0, "div", 95)(1, "mj-accordion-panel", 99);
264
+ i0.ɵɵlistener("ExpandedChange", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_Conditional_12_Template_mj_accordion_panel_ExpandedChange_1_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.isaFieldInspectorExpanded = $event); });
265
+ i0.ɵɵtemplate(2, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_Conditional_12_ng_template_2_Template, 2, 0, "ng-template", 100)(3, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_Conditional_12_ng_template_3_Template, 3, 0, "ng-template", 101);
265
266
  i0.ɵɵelementEnd()();
266
267
  } if (rf & 2) {
267
268
  const ctx_r2 = i0.ɵɵnextContext(5);
268
269
  i0.ɵɵadvance();
269
270
  i0.ɵɵproperty("FlushBody", true)("Expanded", ctx_r2.isaFieldInspectorExpanded);
270
271
  } }
271
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_13_For_5_Template(rf, ctx) { if (rf & 1) {
272
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_Conditional_13_For_5_Template(rf, ctx) { if (rf & 1) {
272
273
  const _r13 = i0.ɵɵgetCurrentView();
273
- i0.ɵɵelementStart(0, "span", 114);
274
- 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)); });
275
- i0.ɵɵelement(1, "i", 115);
274
+ i0.ɵɵelementStart(0, "span", 115);
275
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_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)); });
276
+ i0.ɵɵelement(1, "i", 116);
276
277
  i0.ɵɵtext(2);
277
278
  i0.ɵɵelementEnd();
278
279
  } if (rf & 2) {
@@ -281,12 +282,12 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
281
282
  i0.ɵɵadvance(2);
282
283
  i0.ɵɵtextInterpolate1(" ", sibling_r14.Name, " ");
283
284
  } }
284
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_13_Template(rf, ctx) { if (rf & 1) {
285
- i0.ɵɵelementStart(0, "div", 95)(1, "div", 90);
285
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_Conditional_13_Template(rf, ctx) { if (rf & 1) {
286
+ i0.ɵɵelementStart(0, "div", 96)(1, "div", 91);
286
287
  i0.ɵɵtext(2);
287
288
  i0.ɵɵelementEnd();
288
- i0.ɵɵelementStart(3, "div", 112);
289
- i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_13_For_5_Template, 3, 2, "span", 113, _forTrack0);
289
+ i0.ɵɵelementStart(3, "div", 113);
290
+ i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_Conditional_13_For_5_Template, 3, 2, "span", 114, _forTrack0);
290
291
  i0.ɵɵelementEnd()();
291
292
  } if (rf & 2) {
292
293
  const ctx_r2 = i0.ɵɵnextContext(5);
@@ -295,22 +296,22 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
295
296
  i0.ɵɵadvance(2);
296
297
  i0.ɵɵrepeater(ctx_r2.SiblingEntities);
297
298
  } }
298
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Template(rf, ctx) { if (rf & 1) {
299
- i0.ɵɵelementStart(0, "div", 89)(1, "div", 90);
299
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_Template(rf, ctx) { if (rf & 1) {
300
+ i0.ɵɵelementStart(0, "div", 90)(1, "div", 91);
300
301
  i0.ɵɵtext(2, "Inheritance Chain");
301
302
  i0.ɵɵelementEnd();
302
- i0.ɵɵelementStart(3, "div", 91)(4, "span", 92);
303
+ i0.ɵɵelementStart(3, "div", 92)(4, "span", 93);
303
304
  i0.ɵɵtext(5);
304
305
  i0.ɵɵelementEnd();
305
- i0.ɵɵrepeaterCreate(6, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_For_7_Template, 3, 2, null, null, _forTrack0);
306
+ i0.ɵɵrepeaterCreate(6, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_For_7_Template, 3, 2, null, null, _forTrack0);
306
307
  i0.ɵɵelementEnd();
307
- i0.ɵɵelementStart(8, "div", 93);
308
- i0.ɵɵelement(9, "i", 58);
308
+ i0.ɵɵelementStart(8, "div", 94);
309
+ i0.ɵɵelement(9, "i", 59);
309
310
  i0.ɵɵelementStart(10, "span");
310
311
  i0.ɵɵtext(11);
311
312
  i0.ɵɵelementEnd()()();
312
- i0.ɵɵconditionalCreate(12, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_12_Template, 4, 2, "div", 94);
313
- i0.ɵɵconditionalCreate(13, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Conditional_13_Template, 6, 2, "div", 95);
313
+ i0.ɵɵconditionalCreate(12, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_Conditional_12_Template, 4, 2, "div", 95);
314
+ i0.ɵɵconditionalCreate(13, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_Conditional_13_Template, 6, 2, "div", 96);
314
315
  } if (rf & 2) {
315
316
  const ctx_r2 = i0.ɵɵnextContext(4);
316
317
  i0.ɵɵadvance(5);
@@ -324,24 +325,24 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
324
325
  i0.ɵɵadvance();
325
326
  i0.ɵɵconditional(ctx_r2.SiblingEntities.length > 0 ? 13 : -1);
326
327
  } }
327
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_6_For_5_Conditional_4_Template(rf, ctx) { if (rf & 1) {
328
- i0.ɵɵelement(0, "i", 50);
328
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_6_For_5_Conditional_4_Template(rf, ctx) { if (rf & 1) {
329
+ i0.ɵɵelement(0, "i", 51);
329
330
  } }
330
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_6_For_5_Conditional_5_Template(rf, ctx) { if (rf & 1) {
331
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_6_For_5_Conditional_5_Template(rf, ctx) { if (rf & 1) {
331
332
  i0.ɵɵtext(0);
332
333
  i0.ɵɵpipe(1, "number");
333
334
  } if (rf & 2) {
334
335
  const childCount_r16 = i0.ɵɵnextContext().$implicit;
335
336
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(1, 1, childCount_r16.RecordCount), " ");
336
337
  } }
337
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_6_For_5_Template(rf, ctx) { if (rf & 1) {
338
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_6_For_5_Template(rf, ctx) { if (rf & 1) {
338
339
  const _r15 = i0.ɵɵgetCurrentView();
339
- i0.ɵɵelementStart(0, "span", 117);
340
- 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)); });
341
- i0.ɵɵelement(1, "i", 118);
340
+ i0.ɵɵelementStart(0, "span", 118);
341
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_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)); });
342
+ i0.ɵɵelement(1, "i", 119);
342
343
  i0.ɵɵtext(2);
343
- i0.ɵɵelementStart(3, "span", 119);
344
- 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);
344
+ i0.ɵɵelementStart(3, "span", 120);
345
+ i0.ɵɵconditionalCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_6_For_5_Conditional_4_Template, 1, 0, "i", 51)(5, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_6_For_5_Conditional_5_Template, 2, 3);
345
346
  i0.ɵɵelementEnd()();
346
347
  } if (rf & 2) {
347
348
  const childCount_r16 = ctx.$implicit;
@@ -351,26 +352,26 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
351
352
  i0.ɵɵadvance(2);
352
353
  i0.ɵɵconditional(childCount_r16.IsLoading ? 4 : 5);
353
354
  } }
354
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_6_Template(rf, ctx) { if (rf & 1) {
355
- i0.ɵɵelementStart(0, "div", 87)(1, "div", 90);
355
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_6_Template(rf, ctx) { if (rf & 1) {
356
+ i0.ɵɵelementStart(0, "div", 88)(1, "div", 91);
356
357
  i0.ɵɵtext(2, "Child Types");
357
358
  i0.ɵɵelementEnd();
358
- i0.ɵɵelementStart(3, "div", 112);
359
- i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_6_For_5_Template, 6, 3, "span", 116, _forTrack1);
359
+ i0.ɵɵelementStart(3, "div", 113);
360
+ i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_6_For_5_Template, 6, 3, "span", 117, _forTrack1);
360
361
  i0.ɵɵelementEnd()();
361
362
  } if (rf & 2) {
362
363
  const ctx_r2 = i0.ɵɵnextContext(4);
363
364
  i0.ɵɵadvance(4);
364
365
  i0.ɵɵrepeater(ctx_r2.childEntityCounts);
365
366
  } }
366
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Template(rf, ctx) { if (rf & 1) {
367
- i0.ɵɵelementStart(0, "div", 75)(1, "h3", 70);
368
- i0.ɵɵelement(2, "i", 49);
367
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Template(rf, ctx) { if (rf & 1) {
368
+ i0.ɵɵelementStart(0, "div", 76)(1, "h3", 71);
369
+ i0.ɵɵelement(2, "i", 50);
369
370
  i0.ɵɵtext(3, " Type Hierarchy ");
370
371
  i0.ɵɵelementEnd();
371
- i0.ɵɵconditionalCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_4_Template, 6, 1, "div", 86);
372
- i0.ɵɵconditionalCreate(5, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_5_Template, 14, 6);
373
- i0.ɵɵconditionalCreate(6, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Conditional_6_Template, 6, 0, "div", 87);
372
+ i0.ɵɵconditionalCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_4_Template, 6, 1, "div", 87);
373
+ i0.ɵɵconditionalCreate(5, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_5_Template, 14, 6);
374
+ i0.ɵɵconditionalCreate(6, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Conditional_6_Template, 6, 0, "div", 88);
374
375
  i0.ɵɵelementEnd();
375
376
  } if (rf & 2) {
376
377
  const ctx_r2 = i0.ɵɵnextContext(3);
@@ -381,11 +382,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
381
382
  i0.ɵɵadvance();
382
383
  i0.ɵɵconditional(ctx_r2.IsParentType ? 6 : -1);
383
384
  } }
384
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_92_Template(rf, ctx) { if (rf & 1) {
385
- i0.ɵɵelementStart(0, "div", 79)(1, "span", 80);
385
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_92_Template(rf, ctx) { if (rf & 1) {
386
+ i0.ɵɵelementStart(0, "div", 80)(1, "span", 81);
386
387
  i0.ɵɵtext(2, "SP Create");
387
388
  i0.ɵɵelementEnd();
388
- i0.ɵɵelementStart(3, "span", 84);
389
+ i0.ɵɵelementStart(3, "span", 85);
389
390
  i0.ɵɵtext(4);
390
391
  i0.ɵɵelementEnd()();
391
392
  } if (rf & 2) {
@@ -393,11 +394,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
393
394
  i0.ɵɵadvance(4);
394
395
  i0.ɵɵtextInterpolate(ctx_r2.entity.spCreate);
395
396
  } }
396
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_93_Template(rf, ctx) { if (rf & 1) {
397
- i0.ɵɵelementStart(0, "div", 79)(1, "span", 80);
397
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_93_Template(rf, ctx) { if (rf & 1) {
398
+ i0.ɵɵelementStart(0, "div", 80)(1, "span", 81);
398
399
  i0.ɵɵtext(2, "SP Update");
399
400
  i0.ɵɵelementEnd();
400
- i0.ɵɵelementStart(3, "span", 84);
401
+ i0.ɵɵelementStart(3, "span", 85);
401
402
  i0.ɵɵtext(4);
402
403
  i0.ɵɵelementEnd()();
403
404
  } if (rf & 2) {
@@ -405,11 +406,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
405
406
  i0.ɵɵadvance(4);
406
407
  i0.ɵɵtextInterpolate(ctx_r2.entity.spUpdate);
407
408
  } }
408
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_94_Template(rf, ctx) { if (rf & 1) {
409
- i0.ɵɵelementStart(0, "div", 79)(1, "span", 80);
409
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_94_Template(rf, ctx) { if (rf & 1) {
410
+ i0.ɵɵelementStart(0, "div", 80)(1, "span", 81);
410
411
  i0.ɵɵtext(2, "SP Delete");
411
412
  i0.ɵɵelementEnd();
412
- i0.ɵɵelementStart(3, "span", 84);
413
+ i0.ɵɵelementStart(3, "span", 85);
413
414
  i0.ɵɵtext(4);
414
415
  i0.ɵɵelementEnd()();
415
416
  } if (rf & 2) {
@@ -417,11 +418,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
417
418
  i0.ɵɵadvance(4);
418
419
  i0.ɵɵtextInterpolate(ctx_r2.entity.spDelete);
419
420
  } }
420
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_110_Template(rf, ctx) { if (rf & 1) {
421
- i0.ɵɵelementStart(0, "div", 79)(1, "span", 80);
421
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_110_Template(rf, ctx) { if (rf & 1) {
422
+ i0.ɵɵelementStart(0, "div", 80)(1, "span", 81);
422
423
  i0.ɵɵtext(2, "Subclass");
423
424
  i0.ɵɵelementEnd();
424
- i0.ɵɵelementStart(3, "span", 84);
425
+ i0.ɵɵelementStart(3, "span", 85);
425
426
  i0.ɵɵtext(4);
426
427
  i0.ɵɵelementEnd()();
427
428
  } if (rf & 2) {
@@ -429,134 +430,134 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_
429
430
  i0.ɵɵadvance(4);
430
431
  i0.ɵɵtextInterpolate(ctx_r2.entity.EntityObjectSubclassName);
431
432
  } }
432
- function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Template(rf, ctx) { if (rf & 1) {
433
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Template(rf, ctx) { if (rf & 1) {
433
434
  const _r6 = i0.ɵɵgetCurrentView();
434
- i0.ɵɵelementStart(0, "section", 28)(1, "div", 54)(2, "div", 55)(3, "div", 56);
435
- 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")); });
436
- i0.ɵɵelementStart(4, "div", 57);
437
- i0.ɵɵelement(5, "i", 58);
435
+ i0.ɵɵelementStart(0, "section", 29)(1, "div", 55)(2, "div", 56)(3, "div", 57);
436
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.setActiveSection("fields")); });
437
+ i0.ɵɵelementStart(4, "div", 58);
438
+ i0.ɵɵelement(5, "i", 59);
438
439
  i0.ɵɵelementStart(6, "span");
439
440
  i0.ɵɵtext(7, "Fields");
440
441
  i0.ɵɵelementEnd()();
441
- i0.ɵɵelementStart(8, "div", 59)(9, "div", 60);
442
+ i0.ɵɵelementStart(8, "div", 60)(9, "div", 61);
442
443
  i0.ɵɵtext(10);
443
444
  i0.ɵɵelementEnd();
444
- i0.ɵɵelementStart(11, "div", 61)(12, "span");
445
+ i0.ɵɵelementStart(11, "div", 62)(12, "span");
445
446
  i0.ɵɵtext(13);
446
447
  i0.ɵɵelementEnd();
447
448
  i0.ɵɵelementStart(14, "span");
448
449
  i0.ɵɵtext(15);
449
450
  i0.ɵɵelementEnd();
450
- i0.ɵɵconditionalCreate(16, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_16_Template, 2, 1, "span");
451
+ i0.ɵɵconditionalCreate(16, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_16_Template, 2, 1, "span");
451
452
  i0.ɵɵelementEnd()();
452
- i0.ɵɵelementStart(17, "div", 62);
453
- i0.ɵɵelement(18, "i", 63);
453
+ i0.ɵɵelementStart(17, "div", 63);
454
+ i0.ɵɵelement(18, "i", 64);
454
455
  i0.ɵɵelementEnd()();
455
- i0.ɵɵelementStart(19, "div", 64);
456
- 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")); });
457
- i0.ɵɵelementStart(20, "div", 57);
458
- i0.ɵɵelement(21, "i", 65);
456
+ i0.ɵɵelementStart(19, "div", 65);
457
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Template_div_click_19_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.setActiveSection("relationships")); });
458
+ i0.ɵɵelementStart(20, "div", 58);
459
+ i0.ɵɵelement(21, "i", 66);
459
460
  i0.ɵɵelementStart(22, "span");
460
461
  i0.ɵɵtext(23, "Relationships");
461
462
  i0.ɵɵelementEnd()();
462
- i0.ɵɵelementStart(24, "div", 59)(25, "div", 60);
463
+ i0.ɵɵelementStart(24, "div", 60)(25, "div", 61);
463
464
  i0.ɵɵtext(26);
464
465
  i0.ɵɵelementEnd();
465
- i0.ɵɵelementStart(27, "div", 61)(28, "span");
466
+ i0.ɵɵelementStart(27, "div", 62)(28, "span");
466
467
  i0.ɵɵtext(29);
467
468
  i0.ɵɵelementEnd();
468
469
  i0.ɵɵelementStart(30, "span");
469
470
  i0.ɵɵtext(31);
470
471
  i0.ɵɵelementEnd()()();
471
- i0.ɵɵelementStart(32, "div", 62);
472
- i0.ɵɵelement(33, "i", 63);
472
+ i0.ɵɵelementStart(32, "div", 63);
473
+ i0.ɵɵelement(33, "i", 64);
473
474
  i0.ɵɵelementEnd()();
474
- i0.ɵɵelementStart(34, "div", 66);
475
- 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")); });
476
- i0.ɵɵelementStart(35, "div", 57);
477
- i0.ɵɵelement(36, "i", 67);
475
+ i0.ɵɵelementStart(34, "div", 67);
476
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Template_div_click_34_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.setActiveSection("permissions")); });
477
+ i0.ɵɵelementStart(35, "div", 58);
478
+ i0.ɵɵelement(36, "i", 68);
478
479
  i0.ɵɵelementStart(37, "span");
479
480
  i0.ɵɵtext(38, "Security");
480
481
  i0.ɵɵelementEnd()();
481
- i0.ɵɵelementStart(39, "div", 59)(40, "div", 60);
482
+ i0.ɵɵelementStart(39, "div", 60)(40, "div", 61);
482
483
  i0.ɵɵtext(41);
483
484
  i0.ɵɵelementEnd();
484
- i0.ɵɵelementStart(42, "div", 61)(43, "span");
485
+ i0.ɵɵelementStart(42, "div", 62)(43, "span");
485
486
  i0.ɵɵtext(44, "Roles configured");
486
487
  i0.ɵɵelementEnd()()();
487
- i0.ɵɵelementStart(45, "div", 62);
488
- i0.ɵɵelement(46, "i", 63);
488
+ i0.ɵɵelementStart(45, "div", 63);
489
+ i0.ɵɵelement(46, "i", 64);
489
490
  i0.ɵɵelementEnd()();
490
- i0.ɵɵelementStart(47, "div", 68)(48, "div", 57);
491
+ i0.ɵɵelementStart(47, "div", 69)(48, "div", 58);
491
492
  i0.ɵɵelement(49, "i", 22);
492
493
  i0.ɵɵelementStart(50, "span");
493
494
  i0.ɵɵtext(51, "Data");
494
495
  i0.ɵɵelementEnd()();
495
- i0.ɵɵelementStart(52, "div", 59)(53, "div", 60);
496
+ i0.ɵɵelementStart(52, "div", 60)(53, "div", 61);
496
497
  i0.ɵɵtext(54);
497
498
  i0.ɵɵelementEnd();
498
- i0.ɵɵelementStart(55, "div", 61);
499
- i0.ɵɵconditionalCreate(56, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_56_Template, 3, 4, "span");
500
- i0.ɵɵconditionalCreate(57, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_57_Template, 2, 0, "span");
499
+ i0.ɵɵelementStart(55, "div", 62);
500
+ i0.ɵɵconditionalCreate(56, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_56_Template, 3, 4, "span");
501
+ i0.ɵɵconditionalCreate(57, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_57_Template, 2, 0, "span");
501
502
  i0.ɵɵelementEnd()()()();
502
- i0.ɵɵelementStart(58, "div", 69)(59, "h3", 70);
503
- i0.ɵɵelement(60, "i", 71);
503
+ i0.ɵɵelementStart(58, "div", 70)(59, "h3", 71);
504
+ i0.ɵɵelement(60, "i", 72);
504
505
  i0.ɵɵtext(61, " Capabilities ");
505
506
  i0.ɵɵelementEnd();
506
- i0.ɵɵelementStart(62, "div", 72);
507
- i0.ɵɵrepeaterCreate(63, MJEntityFormComponentExtended_Conditional_0_Conditional_51_For_64_Template, 3, 1, "span", 73, i0.ɵɵrepeaterTrackByIdentity);
508
- i0.ɵɵconditionalCreate(65, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_65_Template, 3, 0, "span", 74);
507
+ i0.ɵɵelementStart(62, "div", 73);
508
+ i0.ɵɵrepeaterCreate(63, MJEntityFormComponentExtended_Conditional_0_Conditional_52_For_64_Template, 3, 1, "span", 74, i0.ɵɵrepeaterTrackByIdentity);
509
+ i0.ɵɵconditionalCreate(65, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_65_Template, 3, 0, "span", 75);
509
510
  i0.ɵɵelementEnd()();
510
- i0.ɵɵconditionalCreate(66, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_66_Template, 7, 3, "div", 75);
511
- i0.ɵɵelementStart(67, "div", 76)(68, "h3", 70);
512
- i0.ɵɵelement(69, "i", 77);
511
+ i0.ɵɵconditionalCreate(66, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_66_Template, 7, 3, "div", 76);
512
+ i0.ɵɵelementStart(67, "div", 77)(68, "h3", 71);
513
+ i0.ɵɵelement(69, "i", 78);
513
514
  i0.ɵɵtext(70, " Database ");
514
515
  i0.ɵɵelementEnd();
515
- i0.ɵɵelementStart(71, "div", 78)(72, "div", 79)(73, "span", 80);
516
+ i0.ɵɵelementStart(71, "div", 79)(72, "div", 80)(73, "span", 81);
516
517
  i0.ɵɵtext(74, "Schema");
517
518
  i0.ɵɵelementEnd();
518
- i0.ɵɵelementStart(75, "span", 81);
519
+ i0.ɵɵelementStart(75, "span", 82);
519
520
  i0.ɵɵtext(76);
520
521
  i0.ɵɵelementEnd()();
521
- i0.ɵɵelementStart(77, "div", 79)(78, "span", 80);
522
+ i0.ɵɵelementStart(77, "div", 80)(78, "span", 81);
522
523
  i0.ɵɵtext(79, "Table");
523
524
  i0.ɵɵelementEnd();
524
- i0.ɵɵelementStart(80, "span", 81);
525
+ i0.ɵɵelementStart(80, "span", 82);
525
526
  i0.ɵɵtext(81);
526
527
  i0.ɵɵelementEnd()();
527
- i0.ɵɵelementStart(82, "div", 79)(83, "span", 80);
528
+ i0.ɵɵelementStart(82, "div", 80)(83, "span", 81);
528
529
  i0.ɵɵtext(84, "View");
529
530
  i0.ɵɵelementEnd();
530
- i0.ɵɵelementStart(85, "span", 81);
531
+ i0.ɵɵelementStart(85, "span", 82);
531
532
  i0.ɵɵtext(86);
532
533
  i0.ɵɵelementEnd()();
533
- i0.ɵɵelementStart(87, "div", 79)(88, "span", 80);
534
+ i0.ɵɵelementStart(87, "div", 80)(88, "span", 81);
534
535
  i0.ɵɵtext(89, "Delete Type");
535
536
  i0.ɵɵelementEnd();
536
- i0.ɵɵelementStart(90, "span", 81);
537
+ i0.ɵɵelementStart(90, "span", 82);
537
538
  i0.ɵɵtext(91);
538
539
  i0.ɵɵelementEnd()();
539
- i0.ɵɵconditionalCreate(92, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_92_Template, 5, 1, "div", 79);
540
- i0.ɵɵconditionalCreate(93, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_93_Template, 5, 1, "div", 79);
541
- i0.ɵɵconditionalCreate(94, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_94_Template, 5, 1, "div", 79);
540
+ i0.ɵɵconditionalCreate(92, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_92_Template, 5, 1, "div", 80);
541
+ i0.ɵɵconditionalCreate(93, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_93_Template, 5, 1, "div", 80);
542
+ i0.ɵɵconditionalCreate(94, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_94_Template, 5, 1, "div", 80);
542
543
  i0.ɵɵelementEnd()();
543
- i0.ɵɵelementStart(95, "div", 82)(96, "h3", 70);
544
- i0.ɵɵelement(97, "i", 83);
544
+ i0.ɵɵelementStart(95, "div", 83)(96, "h3", 71);
545
+ i0.ɵɵelement(97, "i", 84);
545
546
  i0.ɵɵtext(98, " Code Generation ");
546
547
  i0.ɵɵelementEnd();
547
- i0.ɵɵelementStart(99, "div", 78)(100, "div", 79)(101, "span", 80);
548
+ i0.ɵɵelementStart(99, "div", 79)(100, "div", 80)(101, "span", 81);
548
549
  i0.ɵɵtext(102, "Class Name");
549
550
  i0.ɵɵelementEnd();
550
- i0.ɵɵelementStart(103, "span", 84);
551
+ i0.ɵɵelementStart(103, "span", 85);
551
552
  i0.ɵɵtext(104);
552
553
  i0.ɵɵelementEnd()();
553
- i0.ɵɵelementStart(105, "div", 79)(106, "span", 80);
554
+ i0.ɵɵelementStart(105, "div", 80)(106, "span", 81);
554
555
  i0.ɵɵtext(107, "Code Name");
555
556
  i0.ɵɵelementEnd();
556
- i0.ɵɵelementStart(108, "span", 84);
557
+ i0.ɵɵelementStart(108, "span", 85);
557
558
  i0.ɵɵtext(109);
558
559
  i0.ɵɵelementEnd()();
559
- i0.ɵɵconditionalCreate(110, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Conditional_110_Template, 5, 1, "div", 79);
560
+ i0.ɵɵconditionalCreate(110, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_110_Template, 5, 1, "div", 80);
560
561
  i0.ɵɵelementEnd()()()();
561
562
  } if (rf & 2) {
562
563
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -609,15 +610,15 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_51_Template(rf,
609
610
  i0.ɵɵadvance();
610
611
  i0.ɵɵconditional(ctx_r2.entity.EntityObjectSubclassName ? 110 : -1);
611
612
  } }
612
- function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_11_Template(rf, ctx) { if (rf & 1) {
613
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_11_Template(rf, ctx) { if (rf & 1) {
613
614
  const _r18 = i0.ɵɵgetCurrentView();
614
- i0.ɵɵelementStart(0, "div", 129)(1, "button", 133);
615
- 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()); });
616
- i0.ɵɵelement(2, "i", 134);
615
+ i0.ɵɵelementStart(0, "div", 130)(1, "button", 134);
616
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_11_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.expandAllFieldGroups()); });
617
+ i0.ɵɵelement(2, "i", 135);
617
618
  i0.ɵɵelementEnd();
618
- i0.ɵɵelementStart(3, "button", 135);
619
- 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()); });
620
- i0.ɵɵelement(4, "i", 136);
619
+ i0.ɵɵelementStart(3, "button", 136);
620
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_11_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.collapseAllFieldGroups()); });
621
+ i0.ɵɵelement(4, "i", 137);
621
622
  i0.ɵɵelementEnd()();
622
623
  } if (rf & 2) {
623
624
  const ctx_r2 = i0.ɵɵnextContext(3);
@@ -626,12 +627,12 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_
626
627
  i0.ɵɵadvance(2);
627
628
  i0.ɵɵproperty("disabled", ctx_r2.allFieldGroupsCollapsed);
628
629
  } }
629
- function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_ng_template_1_Template(rf, ctx) { if (rf & 1) {
630
- i0.ɵɵelement(0, "i", 138);
631
- i0.ɵɵelementStart(1, "span", 139);
630
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_ng_template_1_Template(rf, ctx) { if (rf & 1) {
631
+ i0.ɵɵelement(0, "i", 139);
632
+ i0.ɵɵelementStart(1, "span", 140);
632
633
  i0.ɵɵtext(2);
633
634
  i0.ɵɵelementEnd();
634
- i0.ɵɵelementStart(3, "span", 140);
635
+ i0.ɵɵelementStart(3, "span", 141);
635
636
  i0.ɵɵtext(4);
636
637
  i0.ɵɵelementEnd();
637
638
  } if (rf & 2) {
@@ -642,16 +643,16 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_
642
643
  i0.ɵɵadvance(2);
643
644
  i0.ɵɵtextInterpolate(group_r20.fields.length);
644
645
  } }
645
- function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_ng_template_2_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
646
- i0.ɵɵelementStart(0, "span", 150);
646
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_ng_template_2_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
647
+ i0.ɵɵelementStart(0, "span", 151);
647
648
  i0.ɵɵtext(1, "Required");
648
649
  i0.ɵɵelementEnd();
649
650
  } }
650
- function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_ng_template_2_For_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
651
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_ng_template_2_For_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
651
652
  const _r23 = i0.ɵɵgetCurrentView();
652
- i0.ɵɵelementStart(0, "span", 157);
653
- i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_ng_template_2_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()); });
654
- i0.ɵɵelement(1, "i", 63);
653
+ i0.ɵɵelementStart(0, "span", 158);
654
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_ng_template_2_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()); });
655
+ i0.ɵɵelement(1, "i", 64);
655
656
  i0.ɵɵtext(2);
656
657
  i0.ɵɵelementEnd();
657
658
  } if (rf & 2) {
@@ -660,24 +661,24 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_
660
661
  i0.ɵɵadvance(2);
661
662
  i0.ɵɵtextInterpolate1(" ", ctx_r2.getRelatedEntityName(field_r22), " ");
662
663
  } }
663
- function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_ng_template_2_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
664
- i0.ɵɵelementStart(0, "span", 153);
664
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_ng_template_2_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
665
+ i0.ɵɵelementStart(0, "span", 154);
665
666
  i0.ɵɵtext(1, "PK");
666
667
  i0.ɵɵelementEnd();
667
668
  } }
668
- function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_ng_template_2_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
669
- i0.ɵɵelementStart(0, "span", 154);
669
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_ng_template_2_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
670
+ i0.ɵɵelementStart(0, "span", 155);
670
671
  i0.ɵɵtext(1, "FK");
671
672
  i0.ɵɵelementEnd();
672
673
  } }
673
- function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_ng_template_2_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
674
- i0.ɵɵelementStart(0, "span", 155);
675
- i0.ɵɵelement(1, "i", 67);
674
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_ng_template_2_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
675
+ i0.ɵɵelementStart(0, "span", 156);
676
+ i0.ɵɵelement(1, "i", 68);
676
677
  i0.ɵɵelementEnd();
677
678
  } }
678
- function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_ng_template_2_For_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
679
- i0.ɵɵelementStart(0, "span", 156);
680
- i0.ɵɵelement(1, "i", 44);
679
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_ng_template_2_For_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
680
+ i0.ɵɵelementStart(0, "span", 157);
681
+ i0.ɵɵelement(1, "i", 45);
681
682
  i0.ɵɵtext(2);
682
683
  i0.ɵɵelementEnd();
683
684
  } if (rf & 2) {
@@ -687,30 +688,30 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_
687
688
  i0.ɵɵadvance(2);
688
689
  i0.ɵɵtextInterpolate1(" ", ctx_r2.GetISAFieldSource(field_r22), " ");
689
690
  } }
690
- function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_ng_template_2_For_2_Template(rf, ctx) { if (rf & 1) {
691
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_ng_template_2_For_2_Template(rf, ctx) { if (rf & 1) {
691
692
  const _r21 = i0.ɵɵgetCurrentView();
692
- i0.ɵɵelementStart(0, "div", 143);
693
- i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_ng_template_2_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)); });
694
- i0.ɵɵelementStart(1, "div", 144);
693
+ i0.ɵɵelementStart(0, "div", 144);
694
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_ng_template_2_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)); });
695
+ i0.ɵɵelementStart(1, "div", 145);
695
696
  i0.ɵɵelement(2, "i");
696
697
  i0.ɵɵelementEnd();
697
- i0.ɵɵelementStart(3, "div", 145)(4, "div", 146);
698
+ i0.ɵɵelementStart(3, "div", 146)(4, "div", 147);
698
699
  i0.ɵɵtext(5);
699
700
  i0.ɵɵelementEnd();
700
- i0.ɵɵelementStart(6, "div", 147);
701
+ i0.ɵɵelementStart(6, "div", 148);
701
702
  i0.ɵɵtext(7);
702
703
  i0.ɵɵelementEnd();
703
- i0.ɵɵelementStart(8, "div", 148)(9, "span", 149);
704
+ i0.ɵɵelementStart(8, "div", 149)(9, "span", 150);
704
705
  i0.ɵɵtext(10);
705
706
  i0.ɵɵelementEnd();
706
- i0.ɵɵconditionalCreate(11, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_ng_template_2_For_2_Conditional_11_Template, 2, 0, "span", 150);
707
- i0.ɵɵconditionalCreate(12, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_ng_template_2_For_2_Conditional_12_Template, 3, 1, "span", 151);
707
+ i0.ɵɵconditionalCreate(11, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_ng_template_2_For_2_Conditional_11_Template, 2, 0, "span", 151);
708
+ i0.ɵɵconditionalCreate(12, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_ng_template_2_For_2_Conditional_12_Template, 3, 1, "span", 152);
708
709
  i0.ɵɵelementEnd()();
709
- i0.ɵɵelementStart(13, "div", 152);
710
- i0.ɵɵconditionalCreate(14, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_ng_template_2_For_2_Conditional_14_Template, 2, 0, "span", 153);
711
- i0.ɵɵconditionalCreate(15, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_ng_template_2_For_2_Conditional_15_Template, 2, 0, "span", 154);
712
- i0.ɵɵconditionalCreate(16, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_ng_template_2_For_2_Conditional_16_Template, 2, 0, "span", 155);
713
- i0.ɵɵconditionalCreate(17, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_ng_template_2_For_2_Conditional_17_Template, 3, 2, "span", 156);
710
+ i0.ɵɵelementStart(13, "div", 153);
711
+ i0.ɵɵconditionalCreate(14, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_ng_template_2_For_2_Conditional_14_Template, 2, 0, "span", 154);
712
+ i0.ɵɵconditionalCreate(15, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_ng_template_2_For_2_Conditional_15_Template, 2, 0, "span", 155);
713
+ i0.ɵɵconditionalCreate(16, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_ng_template_2_For_2_Conditional_16_Template, 2, 0, "span", 156);
714
+ i0.ɵɵconditionalCreate(17, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_ng_template_2_For_2_Conditional_17_Template, 3, 2, "span", 157);
714
715
  i0.ɵɵelementEnd()();
715
716
  } if (rf & 2) {
716
717
  const field_r22 = ctx.$implicit;
@@ -737,37 +738,37 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_
737
738
  i0.ɵɵadvance();
738
739
  i0.ɵɵconditional(ctx_r2.IsInheritedField(field_r22) ? 17 : -1);
739
740
  } }
740
- function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_ng_template_2_Template(rf, ctx) { if (rf & 1) {
741
- i0.ɵɵelementStart(0, "div", 141);
742
- i0.ɵɵrepeaterCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_ng_template_2_For_2_Template, 18, 13, "div", 142, i0.ɵɵrepeaterTrackByIdentity);
741
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_ng_template_2_Template(rf, ctx) { if (rf & 1) {
742
+ i0.ɵɵelementStart(0, "div", 142);
743
+ i0.ɵɵrepeaterCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_ng_template_2_For_2_Template, 18, 13, "div", 143, i0.ɵɵrepeaterTrackByIdentity);
743
744
  i0.ɵɵelementEnd();
744
745
  } if (rf & 2) {
745
746
  const group_r20 = i0.ɵɵnextContext().$implicit;
746
747
  i0.ɵɵadvance();
747
748
  i0.ɵɵrepeater(group_r20.fields);
748
749
  } }
749
- function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Template(rf, ctx) { if (rf & 1) {
750
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_Template(rf, ctx) { if (rf & 1) {
750
751
  const _r19 = i0.ɵɵgetCurrentView();
751
- i0.ɵɵelementStart(0, "mj-accordion-panel", 98);
752
- i0.ɵɵlistener("ExpandedChange", function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { const group_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.onFieldGroupExpandedChange(group_r20.id, $event)); });
753
- i0.ɵɵtemplate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_ng_template_1_Template, 5, 4, "ng-template", 99)(2, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_ng_template_2_Template, 3, 0, "ng-template", 100);
752
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 99);
753
+ i0.ɵɵlistener("ExpandedChange", function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { const group_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.onFieldGroupExpandedChange(group_r20.id, $event)); });
754
+ i0.ɵɵtemplate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_ng_template_1_Template, 5, 4, "ng-template", 100)(2, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_ng_template_2_Template, 3, 0, "ng-template", 101);
754
755
  i0.ɵɵelementEnd();
755
756
  } if (rf & 2) {
756
757
  const group_r20 = ctx.$implicit;
757
758
  const ctx_r2 = i0.ɵɵnextContext(4);
758
759
  i0.ɵɵproperty("FlushBody", true)("Expanded", ctx_r2.isFieldGroupExpanded(group_r20.id));
759
760
  } }
760
- function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_Template(rf, ctx) { if (rf & 1) {
761
- i0.ɵɵelementStart(0, "div", 131);
762
- i0.ɵɵrepeaterCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_For_2_Template, 3, 2, "mj-accordion-panel", 137, i0.ɵɵrepeaterTrackByIdentity);
761
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_Template(rf, ctx) { if (rf & 1) {
762
+ i0.ɵɵelementStart(0, "div", 132);
763
+ i0.ɵɵrepeaterCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_For_2_Template, 3, 2, "mj-accordion-panel", 138, i0.ɵɵrepeaterTrackByIdentity);
763
764
  i0.ɵɵelementEnd();
764
765
  } if (rf & 2) {
765
766
  const ctx_r2 = i0.ɵɵnextContext(3);
766
767
  i0.ɵɵadvance();
767
768
  i0.ɵɵrepeater(ctx_r2.getFilteredFieldGroups());
768
769
  } }
769
- function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_15_Template(rf, ctx) { if (rf & 1) {
770
- i0.ɵɵelementStart(0, "span", 182);
770
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_For_27_Conditional_15_Template(rf, ctx) { if (rf & 1) {
771
+ i0.ɵɵelementStart(0, "span", 183);
771
772
  i0.ɵɵtext(1);
772
773
  i0.ɵɵelementEnd();
773
774
  } if (rf & 2) {
@@ -775,31 +776,31 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_
775
776
  i0.ɵɵadvance();
776
777
  i0.ɵɵtextInterpolate(field_r26.Length);
777
778
  } }
778
- function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_16_Template(rf, ctx) { if (rf & 1) {
779
- i0.ɵɵelementStart(0, "span", 183);
779
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_For_27_Conditional_16_Template(rf, ctx) { if (rf & 1) {
780
+ i0.ɵɵelementStart(0, "span", 184);
780
781
  i0.ɵɵtext(1, "\u2014");
781
782
  i0.ɵɵelementEnd();
782
783
  } }
783
- function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_23_Template(rf, ctx) { if (rf & 1) {
784
- i0.ɵɵelementStart(0, "span", 187);
785
- i0.ɵɵelement(1, "i", 193);
784
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_For_27_Conditional_23_Template(rf, ctx) { if (rf & 1) {
785
+ i0.ɵɵelementStart(0, "span", 188);
786
+ i0.ɵɵelement(1, "i", 194);
786
787
  i0.ɵɵtext(2, " PK ");
787
788
  i0.ɵɵelementEnd();
788
789
  } }
789
- function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_24_Template(rf, ctx) { if (rf & 1) {
790
- i0.ɵɵelementStart(0, "span", 188);
790
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_For_27_Conditional_24_Template(rf, ctx) { if (rf & 1) {
791
+ i0.ɵɵelementStart(0, "span", 189);
791
792
  i0.ɵɵelement(1, "i", 20);
792
793
  i0.ɵɵtext(2, " FK ");
793
794
  i0.ɵɵelementEnd();
794
795
  } }
795
- function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_25_Template(rf, ctx) { if (rf & 1) {
796
- i0.ɵɵelementStart(0, "span", 189);
797
- i0.ɵɵelement(1, "i", 67);
796
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_For_27_Conditional_25_Template(rf, ctx) { if (rf & 1) {
797
+ i0.ɵɵelementStart(0, "span", 190);
798
+ i0.ɵɵelement(1, "i", 68);
798
799
  i0.ɵɵelementEnd();
799
800
  } }
800
- function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_26_Template(rf, ctx) { if (rf & 1) {
801
- i0.ɵɵelementStart(0, "span", 190);
802
- i0.ɵɵelement(1, "i", 44);
801
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_For_27_Conditional_26_Template(rf, ctx) { if (rf & 1) {
802
+ i0.ɵɵelementStart(0, "span", 191);
803
+ i0.ɵɵelement(1, "i", 45);
803
804
  i0.ɵɵtext(2);
804
805
  i0.ɵɵelementEnd();
805
806
  } if (rf & 2) {
@@ -809,39 +810,39 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_
809
810
  i0.ɵɵadvance(2);
810
811
  i0.ɵɵtextInterpolate1(" ", ctx_r2.GetISAFieldSource(field_r26), " ");
811
812
  } }
812
- function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Template(rf, ctx) { if (rf & 1) {
813
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_For_27_Template(rf, ctx) { if (rf & 1) {
813
814
  const _r25 = i0.ɵɵgetCurrentView();
814
- i0.ɵɵelementStart(0, "div", 171);
815
- 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)); });
816
- i0.ɵɵelementStart(1, "div", 172)(2, "span", 173);
815
+ i0.ɵɵelementStart(0, "div", 172);
816
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_53_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)); });
817
+ i0.ɵɵelementStart(1, "div", 173)(2, "span", 174);
817
818
  i0.ɵɵtext(3);
818
819
  i0.ɵɵelementEnd()();
819
- i0.ɵɵelementStart(4, "div", 174);
820
- i0.ɵɵelement(5, "i", 175);
821
- i0.ɵɵelementStart(6, "span", 176);
820
+ i0.ɵɵelementStart(4, "div", 175);
821
+ i0.ɵɵelement(5, "i", 176);
822
+ i0.ɵɵelementStart(6, "span", 177);
822
823
  i0.ɵɵtext(7);
823
824
  i0.ɵɵelementEnd()();
824
- i0.ɵɵelementStart(8, "div", 177)(9, "span", 178);
825
+ i0.ɵɵelementStart(8, "div", 178)(9, "span", 179);
825
826
  i0.ɵɵtext(10);
826
827
  i0.ɵɵelementEnd()();
827
- i0.ɵɵelementStart(11, "div", 179)(12, "span", 180);
828
+ i0.ɵɵelementStart(11, "div", 180)(12, "span", 181);
828
829
  i0.ɵɵtext(13);
829
830
  i0.ɵɵelementEnd()();
830
- i0.ɵɵelementStart(14, "div", 181);
831
- i0.ɵɵconditionalCreate(15, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_15_Template, 2, 1, "span", 182);
832
- i0.ɵɵconditionalCreate(16, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_16_Template, 2, 0, "span", 183);
831
+ i0.ɵɵelementStart(14, "div", 182);
832
+ i0.ɵɵconditionalCreate(15, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_For_27_Conditional_15_Template, 2, 1, "span", 183);
833
+ i0.ɵɵconditionalCreate(16, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_For_27_Conditional_16_Template, 2, 0, "span", 184);
833
834
  i0.ɵɵelementEnd();
834
- i0.ɵɵelementStart(17, "div", 184)(18, "span", 185);
835
+ i0.ɵɵelementStart(17, "div", 185)(18, "span", 186);
835
836
  i0.ɵɵelement(19, "i");
836
837
  i0.ɵɵtext(20);
837
838
  i0.ɵɵelementEnd()();
838
- i0.ɵɵelementStart(21, "div", 166)(22, "div", 186);
839
- i0.ɵɵconditionalCreate(23, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_23_Template, 3, 0, "span", 187);
840
- i0.ɵɵconditionalCreate(24, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_24_Template, 3, 0, "span", 188);
841
- i0.ɵɵconditionalCreate(25, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_25_Template, 2, 0, "span", 189);
842
- i0.ɵɵconditionalCreate(26, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Conditional_26_Template, 3, 2, "span", 190);
839
+ i0.ɵɵelementStart(21, "div", 167)(22, "div", 187);
840
+ i0.ɵɵconditionalCreate(23, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_For_27_Conditional_23_Template, 3, 0, "span", 188);
841
+ i0.ɵɵconditionalCreate(24, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_For_27_Conditional_24_Template, 3, 0, "span", 189);
842
+ i0.ɵɵconditionalCreate(25, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_For_27_Conditional_25_Template, 2, 0, "span", 190);
843
+ i0.ɵɵconditionalCreate(26, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_For_27_Conditional_26_Template, 3, 2, "span", 191);
843
844
  i0.ɵɵelementEnd()();
844
- i0.ɵɵelementStart(27, "div", 191)(28, "span", 192);
845
+ i0.ɵɵelementStart(27, "div", 192)(28, "span", 193);
845
846
  i0.ɵɵtext(29);
846
847
  i0.ɵɵelementEnd()()();
847
848
  } if (rf & 2) {
@@ -881,53 +882,53 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_
881
882
  i0.ɵɵadvance();
882
883
  i0.ɵɵtextInterpolate(field_r26.Description || "\u2014");
883
884
  } }
884
- function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_Conditional_28_Template(rf, ctx) { if (rf & 1) {
885
- i0.ɵɵelement(0, "mj-empty-state", 170);
885
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_Conditional_28_Template(rf, ctx) { if (rf & 1) {
886
+ i0.ɵɵelement(0, "mj-empty-state", 171);
886
887
  } }
887
- function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_Template(rf, ctx) { if (rf & 1) {
888
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_Template(rf, ctx) { if (rf & 1) {
888
889
  const _r24 = i0.ɵɵgetCurrentView();
889
- i0.ɵɵelementStart(0, "div", 132)(1, "div", 158)(2, "div", 159);
890
- 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
+ i0.ɵɵelementStart(0, "div", 133)(1, "div", 159)(2, "div", 160);
891
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_Template_div_click_2_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.sortFieldList("Sequence")); });
891
892
  i0.ɵɵtext(3, " # ");
892
- i0.ɵɵelement(4, "i", 160);
893
+ i0.ɵɵelement(4, "i", 161);
893
894
  i0.ɵɵelementEnd();
894
- i0.ɵɵelementStart(5, "div", 161);
895
- 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
+ i0.ɵɵelementStart(5, "div", 162);
896
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_Template_div_click_5_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.sortFieldList("Name")); });
896
897
  i0.ɵɵtext(6, " Field Name ");
897
- i0.ɵɵelement(7, "i", 160);
898
+ i0.ɵɵelement(7, "i", 161);
898
899
  i0.ɵɵelementEnd();
899
- i0.ɵɵelementStart(8, "div", 162);
900
- 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
+ i0.ɵɵelementStart(8, "div", 163);
901
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_Template_div_click_8_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.sortFieldList("DisplayName")); });
901
902
  i0.ɵɵtext(9, " Display Name ");
902
- i0.ɵɵelement(10, "i", 160);
903
+ i0.ɵɵelement(10, "i", 161);
903
904
  i0.ɵɵelementEnd();
904
- i0.ɵɵelementStart(11, "div", 163);
905
- 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
+ i0.ɵɵelementStart(11, "div", 164);
906
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_Template_div_click_11_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.sortFieldList("Type")); });
906
907
  i0.ɵɵtext(12, " Type ");
907
- i0.ɵɵelement(13, "i", 160);
908
+ i0.ɵɵelement(13, "i", 161);
908
909
  i0.ɵɵelementEnd();
909
- i0.ɵɵelementStart(14, "div", 164);
910
- 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
+ i0.ɵɵelementStart(14, "div", 165);
911
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_Template_div_click_14_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.sortFieldList("Length")); });
911
912
  i0.ɵɵtext(15, " Length ");
912
- i0.ɵɵelement(16, "i", 160);
913
+ i0.ɵɵelement(16, "i", 161);
913
914
  i0.ɵɵelementEnd();
914
- i0.ɵɵelementStart(17, "div", 165);
915
- 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
+ i0.ɵɵelementStart(17, "div", 166);
916
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_Template_div_click_17_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.sortFieldList("AllowsNull")); });
916
917
  i0.ɵɵtext(18, " Required ");
917
- i0.ɵɵelement(19, "i", 160);
918
+ i0.ɵɵelement(19, "i", 161);
918
919
  i0.ɵɵelementEnd();
919
- i0.ɵɵelementStart(20, "div", 166);
920
+ i0.ɵɵelementStart(20, "div", 167);
920
921
  i0.ɵɵtext(21, "Flags");
921
922
  i0.ɵɵelementEnd();
922
- i0.ɵɵelementStart(22, "div", 167);
923
- 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
+ i0.ɵɵelementStart(22, "div", 168);
924
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_Template_div_click_22_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.sortFieldList("Description")); });
924
925
  i0.ɵɵtext(23, " Description ");
925
- i0.ɵɵelement(24, "i", 160);
926
+ i0.ɵɵelement(24, "i", 161);
926
927
  i0.ɵɵelementEnd()();
927
- i0.ɵɵelementStart(25, "div", 168);
928
- i0.ɵɵrepeaterCreate(26, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_For_27_Template, 30, 23, "div", 169, i0.ɵɵrepeaterTrackByIdentity);
928
+ i0.ɵɵelementStart(25, "div", 169);
929
+ i0.ɵɵrepeaterCreate(26, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_For_27_Template, 30, 23, "div", 170, i0.ɵɵrepeaterTrackByIdentity);
929
930
  i0.ɵɵelementEnd();
930
- i0.ɵɵconditionalCreate(28, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_Conditional_28_Template, 1, 0, "mj-empty-state", 170);
931
+ i0.ɵɵconditionalCreate(28, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_Conditional_28_Template, 1, 0, "mj-empty-state", 171);
931
932
  i0.ɵɵelementEnd();
932
933
  } if (rf & 2) {
933
934
  const ctx_r2 = i0.ɵɵnextContext(3);
@@ -964,26 +965,26 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_
964
965
  i0.ɵɵadvance(2);
965
966
  i0.ɵɵconditional(ctx_r2.getFilteredFieldsList().length === 0 ? 28 : -1);
966
967
  } }
967
- function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Template(rf, ctx) { if (rf & 1) {
968
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Template(rf, ctx) { if (rf & 1) {
968
969
  const _r17 = i0.ɵɵgetCurrentView();
969
- i0.ɵɵelementStart(0, "section", 29)(1, "div", 120)(2, "div", 121);
970
- i0.ɵɵelement(3, "i", 122);
971
- i0.ɵɵelementStart(4, "input", 123);
972
- 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)); });
970
+ i0.ɵɵelementStart(0, "section", 30)(1, "div", 121)(2, "div", 122);
971
+ i0.ɵɵelement(3, "i", 123);
972
+ i0.ɵɵelementStart(4, "input", 124);
973
+ i0.ɵɵlistener("ngModelChange", function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Template_input_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onFieldSearch($event)); });
973
974
  i0.ɵɵelementEnd()();
974
- i0.ɵɵelementStart(5, "div", 124)(6, "div", 125)(7, "button", 126);
975
- 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"); });
976
- i0.ɵɵelement(8, "i", 49);
975
+ i0.ɵɵelementStart(5, "div", 125)(6, "div", 126)(7, "button", 127);
976
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.fieldViewMode = "grouped"); });
977
+ i0.ɵɵelement(8, "i", 50);
977
978
  i0.ɵɵelementEnd();
978
- i0.ɵɵelementStart(9, "button", 127);
979
- 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"); });
980
- i0.ɵɵelement(10, "i", 128);
979
+ i0.ɵɵelementStart(9, "button", 128);
980
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.fieldViewMode = "list"); });
981
+ i0.ɵɵelement(10, "i", 129);
981
982
  i0.ɵɵelementEnd()();
982
- i0.ɵɵconditionalCreate(11, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_11_Template, 5, 2, "div", 129);
983
+ i0.ɵɵconditionalCreate(11, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_11_Template, 5, 2, "div", 130);
983
984
  i0.ɵɵelementEnd()();
984
- i0.ɵɵelementStart(12, "div", 130);
985
- i0.ɵɵconditionalCreate(13, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_13_Template, 3, 0, "div", 131);
986
- i0.ɵɵconditionalCreate(14, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Conditional_14_Template, 29, 22, "div", 132);
985
+ i0.ɵɵelementStart(12, "div", 131);
986
+ i0.ɵɵconditionalCreate(13, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_13_Template, 3, 0, "div", 132);
987
+ i0.ɵɵconditionalCreate(14, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_14_Template, 29, 22, "div", 133);
987
988
  i0.ɵɵelementEnd()();
988
989
  } if (rf & 2) {
989
990
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -1000,10 +1001,10 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_52_Template(rf,
1000
1001
  i0.ɵɵadvance();
1001
1002
  i0.ɵɵconditional(ctx_r2.fieldViewMode === "list" ? 14 : -1);
1002
1003
  } }
1003
- function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_9_For_5_Template(rf, ctx) { if (rf & 1) {
1004
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_9_For_5_Template(rf, ctx) { if (rf & 1) {
1004
1005
  const _r28 = i0.ɵɵgetCurrentView();
1005
- i0.ɵɵelementStart(0, "button", 202);
1006
- 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
+ i0.ɵɵelementStart(0, "button", 203);
1007
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_54_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)); });
1007
1008
  i0.ɵɵtext(1);
1008
1009
  i0.ɵɵelementEnd();
1009
1010
  } if (rf & 2) {
@@ -1014,31 +1015,31 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_
1014
1015
  i0.ɵɵadvance();
1015
1016
  i0.ɵɵtextInterpolate1(" ", d_r29, " ");
1016
1017
  } }
1017
- function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1018
- i0.ɵɵelementStart(0, "div", 196)(1, "span", 199);
1018
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1019
+ i0.ɵɵelementStart(0, "div", 197)(1, "span", 200);
1019
1020
  i0.ɵɵtext(2, "Depth:");
1020
1021
  i0.ɵɵelementEnd();
1021
- i0.ɵɵelementStart(3, "div", 200);
1022
- i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_9_For_5_Template, 2, 4, "button", 201, i0.ɵɵrepeaterTrackByIdentity);
1022
+ i0.ɵɵelementStart(3, "div", 201);
1023
+ i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_9_For_5_Template, 2, 4, "button", 202, i0.ɵɵrepeaterTrackByIdentity);
1023
1024
  i0.ɵɵelementEnd()();
1024
1025
  } if (rf & 2) {
1025
1026
  i0.ɵɵadvance(4);
1026
1027
  i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c0));
1027
1028
  } }
1028
- function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1029
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1029
1030
  const _r30 = i0.ɵɵgetCurrentView();
1030
- i0.ɵɵelementStart(0, "div", 197)(1, "mj-erd-composite", 203);
1031
- 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
+ i0.ɵɵelementStart(0, "div", 198)(1, "mj-erd-composite", 204);
1032
+ i0.ɵɵlistener("stateChange", function MJEntityFormComponentExtended_Conditional_0_Conditional_54_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_54_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)); });
1032
1033
  i0.ɵɵelementEnd()();
1033
1034
  } if (rf & 2) {
1034
1035
  const ctx_r2 = i0.ɵɵnextContext(3);
1035
1036
  i0.ɵɵadvance();
1036
1037
  i0.ɵɵproperty("focusEntities", ctx_r2.entity ? i0.ɵɵpureFunction1(4, _c1, ctx_r2.entity) : i0.ɵɵpureFunction0(6, _c2))("showFilterPanel", false)("showHeader", false)("depth", ctx_r2.erdDepth);
1037
1038
  } }
1038
- function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_9_For_8_Template(rf, ctx) { if (rf & 1) {
1039
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_12_For_9_For_8_Template(rf, ctx) { if (rf & 1) {
1039
1040
  const _r31 = i0.ɵɵgetCurrentView();
1040
- i0.ɵɵelementStart(0, "span", 218);
1041
- 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
+ i0.ɵɵelementStart(0, "span", 219);
1042
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_54_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)); });
1042
1043
  i0.ɵɵelement(1, "i", 20);
1043
1044
  i0.ɵɵtext(2);
1044
1045
  i0.ɵɵelementEnd();
@@ -1048,15 +1049,15 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_
1048
1049
  i0.ɵɵadvance(2);
1049
1050
  i0.ɵɵtextInterpolate1(" ", field_r32.Name, " ");
1050
1051
  } }
1051
- function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_9_Template(rf, ctx) { if (rf & 1) {
1052
- i0.ɵɵelementStart(0, "div", 209)(1, "div", 213)(2, "div", 214);
1053
- i0.ɵɵelement(3, "i", 63);
1052
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_12_For_9_Template(rf, ctx) { if (rf & 1) {
1053
+ i0.ɵɵelementStart(0, "div", 210)(1, "div", 214)(2, "div", 215);
1054
+ i0.ɵɵelement(3, "i", 64);
1054
1055
  i0.ɵɵelementEnd();
1055
- i0.ɵɵelementStart(4, "div", 215);
1056
+ i0.ɵɵelementStart(4, "div", 216);
1056
1057
  i0.ɵɵtext(5);
1057
1058
  i0.ɵɵelementEnd()();
1058
- i0.ɵɵelementStart(6, "div", 216);
1059
- i0.ɵɵrepeaterCreate(7, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_9_For_8_Template, 3, 2, "span", 217, i0.ɵɵrepeaterTrackByIdentity);
1059
+ i0.ɵɵelementStart(6, "div", 217);
1060
+ i0.ɵɵrepeaterCreate(7, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_12_For_9_For_8_Template, 3, 2, "span", 218, i0.ɵɵrepeaterTrackByIdentity);
1060
1061
  i0.ɵɵelementEnd()();
1061
1062
  } if (rf & 2) {
1062
1063
  const group_r33 = ctx.$implicit;
@@ -1065,17 +1066,17 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_
1065
1066
  i0.ɵɵadvance(2);
1066
1067
  i0.ɵɵrepeater(group_r33.fields);
1067
1068
  } }
1068
- function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1069
- i0.ɵɵelement(0, "mj-empty-state", 210);
1069
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_12_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1070
+ i0.ɵɵelement(0, "mj-empty-state", 211);
1070
1071
  } }
1071
- function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_19_For_8_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1072
- i0.ɵɵelement(0, "i", 222);
1072
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_12_For_19_For_8_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1073
+ i0.ɵɵelement(0, "i", 223);
1073
1074
  } }
1074
- function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_19_For_8_Template(rf, ctx) { if (rf & 1) {
1075
- i0.ɵɵelementStart(0, "span", 221);
1075
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_12_For_19_For_8_Template(rf, ctx) { if (rf & 1) {
1076
+ i0.ɵɵelementStart(0, "span", 222);
1076
1077
  i0.ɵɵelement(1, "i", 20);
1077
1078
  i0.ɵɵtext(2);
1078
- i0.ɵɵconditionalCreate(3, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_19_For_8_Conditional_3_Template, 1, 0, "i", 222);
1079
+ i0.ɵɵconditionalCreate(3, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_12_For_19_For_8_Conditional_3_Template, 1, 0, "i", 223);
1079
1080
  i0.ɵɵelementEnd();
1080
1081
  } if (rf & 2) {
1081
1082
  const field_r34 = ctx.$implicit;
@@ -1085,15 +1086,15 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_
1085
1086
  i0.ɵɵadvance();
1086
1087
  i0.ɵɵconditional(field_r34.bundleInAPI ? 3 : -1);
1087
1088
  } }
1088
- function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_19_Template(rf, ctx) { if (rf & 1) {
1089
- i0.ɵɵelementStart(0, "div", 209)(1, "div", 213)(2, "div", 219);
1090
- i0.ɵɵelement(3, "i", 220);
1089
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_12_For_19_Template(rf, ctx) { if (rf & 1) {
1090
+ i0.ɵɵelementStart(0, "div", 210)(1, "div", 214)(2, "div", 220);
1091
+ i0.ɵɵelement(3, "i", 221);
1091
1092
  i0.ɵɵelementEnd();
1092
- i0.ɵɵelementStart(4, "div", 215);
1093
+ i0.ɵɵelementStart(4, "div", 216);
1093
1094
  i0.ɵɵtext(5);
1094
1095
  i0.ɵɵelementEnd()();
1095
- i0.ɵɵelementStart(6, "div", 216);
1096
- i0.ɵɵrepeaterCreate(7, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_19_For_8_Template, 4, 3, "span", 221, i0.ɵɵrepeaterTrackByIdentity);
1096
+ i0.ɵɵelementStart(6, "div", 217);
1097
+ i0.ɵɵrepeaterCreate(7, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_12_For_19_For_8_Template, 4, 3, "span", 222, i0.ɵɵrepeaterTrackByIdentity);
1097
1098
  i0.ɵɵelementEnd()();
1098
1099
  } if (rf & 2) {
1099
1100
  const group_r35 = ctx.$implicit;
@@ -1102,29 +1103,29 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_
1102
1103
  i0.ɵɵadvance(2);
1103
1104
  i0.ɵɵrepeater(group_r35.fields);
1104
1105
  } }
1105
- function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_Conditional_20_Template(rf, ctx) { if (rf & 1) {
1106
- i0.ɵɵelement(0, "mj-empty-state", 212);
1106
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_12_Conditional_20_Template(rf, ctx) { if (rf & 1) {
1107
+ i0.ɵɵelement(0, "mj-empty-state", 213);
1107
1108
  } }
1108
- function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1109
- i0.ɵɵelementStart(0, "div", 198)(1, "div", 204)(2, "h3", 205);
1110
- i0.ɵɵelement(3, "i", 206);
1109
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1110
+ i0.ɵɵelementStart(0, "div", 199)(1, "div", 205)(2, "h3", 206);
1111
+ i0.ɵɵelement(3, "i", 207);
1111
1112
  i0.ɵɵtext(4, " Outgoing (References to other entities) ");
1112
- i0.ɵɵelementStart(5, "span", 207);
1113
+ i0.ɵɵelementStart(5, "span", 208);
1113
1114
  i0.ɵɵtext(6);
1114
1115
  i0.ɵɵelementEnd()();
1115
- i0.ɵɵelementStart(7, "div", 208);
1116
- i0.ɵɵrepeaterCreate(8, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_9_Template, 9, 1, "div", 209, i0.ɵɵrepeaterTrackByIdentity);
1117
- i0.ɵɵconditionalCreate(10, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_Conditional_10_Template, 1, 0, "mj-empty-state", 210);
1116
+ i0.ɵɵelementStart(7, "div", 209);
1117
+ i0.ɵɵrepeaterCreate(8, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_12_For_9_Template, 9, 1, "div", 210, i0.ɵɵrepeaterTrackByIdentity);
1118
+ i0.ɵɵconditionalCreate(10, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_12_Conditional_10_Template, 1, 0, "mj-empty-state", 211);
1118
1119
  i0.ɵɵelementEnd()();
1119
- i0.ɵɵelementStart(11, "div", 204)(12, "h3", 205);
1120
- i0.ɵɵelement(13, "i", 211);
1120
+ i0.ɵɵelementStart(11, "div", 205)(12, "h3", 206);
1121
+ i0.ɵɵelement(13, "i", 212);
1121
1122
  i0.ɵɵtext(14, " Incoming (Entities that reference this one) ");
1122
- i0.ɵɵelementStart(15, "span", 207);
1123
+ i0.ɵɵelementStart(15, "span", 208);
1123
1124
  i0.ɵɵtext(16);
1124
1125
  i0.ɵɵelementEnd()();
1125
- i0.ɵɵelementStart(17, "div", 208);
1126
- i0.ɵɵrepeaterCreate(18, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_For_19_Template, 9, 1, "div", 209, i0.ɵɵrepeaterTrackByIdentity);
1127
- i0.ɵɵconditionalCreate(20, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_Conditional_20_Template, 1, 0, "mj-empty-state", 212);
1126
+ i0.ɵɵelementStart(17, "div", 209);
1127
+ i0.ɵɵrepeaterCreate(18, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_12_For_19_Template, 9, 1, "div", 210, i0.ɵɵrepeaterTrackByIdentity);
1128
+ i0.ɵɵconditionalCreate(20, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_12_Conditional_20_Template, 1, 0, "mj-empty-state", 213);
1128
1129
  i0.ɵɵelementEnd()()();
1129
1130
  } if (rf & 2) {
1130
1131
  const ctx_r2 = i0.ɵɵnextContext(3);
@@ -1141,23 +1142,23 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_
1141
1142
  i0.ɵɵadvance(2);
1142
1143
  i0.ɵɵconditional(ctx_r2.groupedIncomingRelationships.length === 0 ? 20 : -1);
1143
1144
  } }
1144
- function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Template(rf, ctx) { if (rf & 1) {
1145
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Template(rf, ctx) { if (rf & 1) {
1145
1146
  const _r27 = i0.ɵɵgetCurrentView();
1146
- i0.ɵɵelementStart(0, "section", 30)(1, "div", 120)(2, "div", 194)(3, "button", 195);
1147
- 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"); });
1148
- i0.ɵɵelement(4, "i", 65);
1147
+ i0.ɵɵelementStart(0, "section", 31)(1, "div", 121)(2, "div", 195)(3, "button", 196);
1148
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r27); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.relationshipViewMode = "diagram"); });
1149
+ i0.ɵɵelement(4, "i", 66);
1149
1150
  i0.ɵɵtext(5, " Diagram ");
1150
1151
  i0.ɵɵelementEnd();
1151
- i0.ɵɵelementStart(6, "button", 195);
1152
- 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"); });
1153
- i0.ɵɵelement(7, "i", 128);
1152
+ i0.ɵɵelementStart(6, "button", 196);
1153
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r27); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.relationshipViewMode = "list"); });
1154
+ i0.ɵɵelement(7, "i", 129);
1154
1155
  i0.ɵɵtext(8, " List ");
1155
1156
  i0.ɵɵelementEnd()();
1156
- i0.ɵɵconditionalCreate(9, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_9_Template, 6, 1, "div", 196);
1157
+ i0.ɵɵconditionalCreate(9, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_9_Template, 6, 1, "div", 197);
1157
1158
  i0.ɵɵelementEnd();
1158
- i0.ɵɵelementStart(10, "div", 54);
1159
- i0.ɵɵconditionalCreate(11, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_11_Template, 2, 7, "div", 197);
1160
- i0.ɵɵconditionalCreate(12, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Conditional_12_Template, 21, 4, "div", 198);
1159
+ i0.ɵɵelementStart(10, "div", 55);
1160
+ i0.ɵɵconditionalCreate(11, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_11_Template, 2, 7, "div", 198);
1161
+ i0.ɵɵconditionalCreate(12, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_12_Template, 21, 4, "div", 199);
1161
1162
  i0.ɵɵelementEnd()();
1162
1163
  } if (rf & 2) {
1163
1164
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -1172,11 +1173,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_53_Template(rf,
1172
1173
  i0.ɵɵadvance();
1173
1174
  i0.ɵɵconditional(ctx_r2.relationshipViewMode === "list" ? 12 : -1);
1174
1175
  } }
1175
- function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1176
- i0.ɵɵelement(0, "mj-empty-state", 223);
1176
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1177
+ i0.ɵɵelement(0, "mj-empty-state", 224);
1177
1178
  } }
1178
- function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_For_8_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1179
- i0.ɵɵelementStart(0, "p", 232);
1179
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_3_Conditional_0_For_8_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1180
+ i0.ɵɵelementStart(0, "p", 233);
1180
1181
  i0.ɵɵtext(1);
1181
1182
  i0.ɵɵelementEnd();
1182
1183
  } if (rf & 2) {
@@ -1184,11 +1185,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_
1184
1185
  i0.ɵɵadvance();
1185
1186
  i0.ɵɵtextInterpolate(okGroup_r36.OrganicKey.Description);
1186
1187
  } }
1187
- function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_For_8_For_13_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1188
- i0.ɵɵelementStart(0, "span", 242);
1188
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_3_Conditional_0_For_8_For_13_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1189
+ i0.ɵɵelementStart(0, "span", 243);
1189
1190
  i0.ɵɵtext(1, "Direct");
1190
1191
  i0.ɵɵelementEnd();
1191
- i0.ɵɵelementStart(2, "span", 243);
1192
+ i0.ɵɵelementStart(2, "span", 244);
1192
1193
  i0.ɵɵtext(3);
1193
1194
  i0.ɵɵelementEnd();
1194
1195
  } if (rf & 2) {
@@ -1197,11 +1198,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_
1197
1198
  i0.ɵɵadvance(3);
1198
1199
  i0.ɵɵtextInterpolate2("", okGroup_r36.OrganicKey.MatchFieldNames, " \u2192 ", target_r38.Info.RelatedEntityFieldNames);
1199
1200
  } }
1200
- function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_For_8_For_13_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1201
- i0.ɵɵelementStart(0, "span", 244);
1201
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_3_Conditional_0_For_8_For_13_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1202
+ i0.ɵɵelementStart(0, "span", 245);
1202
1203
  i0.ɵɵtext(1, "Transitive");
1203
1204
  i0.ɵɵelementEnd();
1204
- i0.ɵɵelementStart(2, "span", 245);
1205
+ i0.ɵɵelementStart(2, "span", 246);
1205
1206
  i0.ɵɵtext(3);
1206
1207
  i0.ɵɵelementEnd();
1207
1208
  } if (rf & 2) {
@@ -1211,22 +1212,22 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_
1211
1212
  i0.ɵɵadvance();
1212
1213
  i0.ɵɵtextInterpolate1("via ", target_r38.Info.TransitiveObjectName);
1213
1214
  } }
1214
- function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_For_8_For_13_Template(rf, ctx) { if (rf & 1) {
1215
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_3_Conditional_0_For_8_For_13_Template(rf, ctx) { if (rf & 1) {
1215
1216
  const _r37 = i0.ɵɵgetCurrentView();
1216
- i0.ɵɵelementStart(0, "div", 235);
1217
- 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)); });
1218
- i0.ɵɵelementStart(1, "div", 214);
1219
- i0.ɵɵelement(2, "i", 63);
1220
- i0.ɵɵelementEnd();
1221
- i0.ɵɵelementStart(3, "div", 236)(4, "div", 237);
1222
- i0.ɵɵelement(5, "i", 238);
1223
- i0.ɵɵelementStart(6, "span", 239);
1217
+ i0.ɵɵelementStart(0, "div", 236);
1218
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_55_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)); });
1219
+ i0.ɵɵelementStart(1, "div", 215);
1220
+ i0.ɵɵelement(2, "i", 64);
1221
+ i0.ɵɵelementEnd();
1222
+ i0.ɵɵelementStart(3, "div", 237)(4, "div", 238);
1223
+ i0.ɵɵelement(5, "i", 239);
1224
+ i0.ɵɵelementStart(6, "span", 240);
1224
1225
  i0.ɵɵtext(7);
1225
1226
  i0.ɵɵelementEnd();
1226
- i0.ɵɵelement(8, "i", 240);
1227
+ i0.ɵɵelement(8, "i", 241);
1227
1228
  i0.ɵɵelementEnd();
1228
- i0.ɵɵelementStart(9, "div", 241);
1229
- 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);
1229
+ i0.ɵɵelementStart(9, "div", 242);
1230
+ i0.ɵɵconditionalCreate(10, MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_3_Conditional_0_For_8_For_13_Conditional_10_Template, 4, 2)(11, MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_3_Conditional_0_For_8_For_13_Conditional_11_Template, 4, 2);
1230
1231
  i0.ɵɵelementEnd()()();
1231
1232
  } if (rf & 2) {
1232
1233
  const target_r38 = ctx.$implicit;
@@ -1237,20 +1238,20 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_
1237
1238
  i0.ɵɵadvance(3);
1238
1239
  i0.ɵɵconditional(target_r38.Info.IsDirectMatch ? 10 : 11);
1239
1240
  } }
1240
- function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_For_8_Template(rf, ctx) { if (rf & 1) {
1241
- i0.ɵɵelementStart(0, "div", 225)(1, "div", 226)(2, "div", 227);
1242
- i0.ɵɵelement(3, "i", 228);
1241
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_3_Conditional_0_For_8_Template(rf, ctx) { if (rf & 1) {
1242
+ i0.ɵɵelementStart(0, "div", 226)(1, "div", 227)(2, "div", 228);
1243
+ i0.ɵɵelement(3, "i", 229);
1243
1244
  i0.ɵɵtext(4);
1244
1245
  i0.ɵɵelementEnd();
1245
- i0.ɵɵelementStart(5, "div", 229)(6, "span", 230);
1246
+ i0.ɵɵelementStart(5, "div", 230)(6, "span", 231);
1246
1247
  i0.ɵɵtext(7);
1247
1248
  i0.ɵɵelementEnd();
1248
- i0.ɵɵelementStart(8, "span", 231);
1249
+ i0.ɵɵelementStart(8, "span", 232);
1249
1250
  i0.ɵɵtext(9);
1250
1251
  i0.ɵɵelementEnd()()();
1251
- i0.ɵɵconditionalCreate(10, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_For_8_Conditional_10_Template, 2, 1, "p", 232);
1252
- i0.ɵɵelementStart(11, "div", 233);
1253
- i0.ɵɵrepeaterCreate(12, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_For_8_For_13_Template, 12, 4, "div", 234, _forTrack3);
1252
+ i0.ɵɵconditionalCreate(10, MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_3_Conditional_0_For_8_Conditional_10_Template, 2, 1, "p", 233);
1253
+ i0.ɵɵelementStart(11, "div", 234);
1254
+ i0.ɵɵrepeaterCreate(12, MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_3_Conditional_0_For_8_For_13_Template, 12, 4, "div", 235, _forTrack3);
1254
1255
  i0.ɵɵelementEnd()();
1255
1256
  } if (rf & 2) {
1256
1257
  const okGroup_r36 = ctx.$implicit;
@@ -1265,15 +1266,15 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_
1265
1266
  i0.ɵɵadvance(2);
1266
1267
  i0.ɵɵrepeater(okGroup_r36.RelatedEntities);
1267
1268
  } }
1268
- function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_Template(rf, ctx) { if (rf & 1) {
1269
- i0.ɵɵelementStart(0, "div", 204)(1, "h3", 205);
1270
- i0.ɵɵelement(2, "i", 206);
1269
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_3_Conditional_0_Template(rf, ctx) { if (rf & 1) {
1270
+ i0.ɵɵelementStart(0, "div", 205)(1, "h3", 206);
1271
+ i0.ɵɵelement(2, "i", 207);
1271
1272
  i0.ɵɵtext(3, " Outgoing (Matches from this entity) ");
1272
- i0.ɵɵelementStart(4, "span", 207);
1273
+ i0.ɵɵelementStart(4, "span", 208);
1273
1274
  i0.ɵɵtext(5);
1274
1275
  i0.ɵɵelementEnd()();
1275
- i0.ɵɵelementStart(6, "div", 224);
1276
- i0.ɵɵrepeaterCreate(7, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_For_8_Template, 14, 4, "div", 225, _forTrack2);
1276
+ i0.ɵɵelementStart(6, "div", 225);
1277
+ i0.ɵɵrepeaterCreate(7, MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_3_Conditional_0_For_8_Template, 14, 4, "div", 226, _forTrack2);
1277
1278
  i0.ɵɵelementEnd()();
1278
1279
  } if (rf & 2) {
1279
1280
  const ctx_r2 = i0.ɵɵnextContext(4);
@@ -1282,11 +1283,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_
1282
1283
  i0.ɵɵadvance(2);
1283
1284
  i0.ɵɵrepeater(ctx_r2.organicKeysOutgoing);
1284
1285
  } }
1285
- function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_1_For_8_Conditional_20_Template(rf, ctx) { if (rf & 1) {
1286
- i0.ɵɵelementStart(0, "div", 249)(1, "span", 250);
1286
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_3_Conditional_1_For_8_Conditional_20_Template(rf, ctx) { if (rf & 1) {
1287
+ i0.ɵɵelementStart(0, "div", 250)(1, "span", 251);
1287
1288
  i0.ɵɵtext(2, "Matched via:");
1288
1289
  i0.ɵɵelementEnd();
1289
- i0.ɵɵelementStart(3, "span", 251);
1290
+ i0.ɵɵelementStart(3, "span", 252);
1290
1291
  i0.ɵɵtext(4);
1291
1292
  i0.ɵɵelementEnd()();
1292
1293
  } if (rf & 2) {
@@ -1294,11 +1295,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_
1294
1295
  i0.ɵɵadvance(4);
1295
1296
  i0.ɵɵtextInterpolate(incoming_r40.RelatedEntityConfig.RelatedEntityFieldNames);
1296
1297
  } }
1297
- function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_1_For_8_Conditional_21_Template(rf, ctx) { if (rf & 1) {
1298
- i0.ɵɵelementStart(0, "div", 249)(1, "span", 250);
1298
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_3_Conditional_1_For_8_Conditional_21_Template(rf, ctx) { if (rf & 1) {
1299
+ i0.ɵɵelementStart(0, "div", 250)(1, "span", 251);
1299
1300
  i0.ɵɵtext(2, "Bridge:");
1300
1301
  i0.ɵɵelementEnd();
1301
- i0.ɵɵelementStart(3, "span", 251);
1302
+ i0.ɵɵelementStart(3, "span", 252);
1302
1303
  i0.ɵɵtext(4);
1303
1304
  i0.ɵɵelementEnd()();
1304
1305
  } if (rf & 2) {
@@ -1306,33 +1307,33 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_
1306
1307
  i0.ɵɵadvance(4);
1307
1308
  i0.ɵɵtextInterpolate(incoming_r40.RelatedEntityConfig.TransitiveObjectName);
1308
1309
  } }
1309
- function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_1_For_8_Template(rf, ctx) { if (rf & 1) {
1310
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_3_Conditional_1_For_8_Template(rf, ctx) { if (rf & 1) {
1310
1311
  const _r39 = i0.ɵɵgetCurrentView();
1311
- i0.ɵɵelementStart(0, "div", 247);
1312
- 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)); });
1313
- i0.ɵɵelementStart(1, "div", 226)(2, "div", 227)(3, "div", 219);
1314
- i0.ɵɵelement(4, "i", 220);
1312
+ i0.ɵɵelementStart(0, "div", 248);
1313
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_55_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)); });
1314
+ i0.ɵɵelementStart(1, "div", 227)(2, "div", 228)(3, "div", 220);
1315
+ i0.ɵɵelement(4, "i", 221);
1315
1316
  i0.ɵɵelementEnd();
1316
- i0.ɵɵelement(5, "i", 238);
1317
+ i0.ɵɵelement(5, "i", 239);
1317
1318
  i0.ɵɵtext(6);
1318
- i0.ɵɵelement(7, "i", 240);
1319
+ i0.ɵɵelement(7, "i", 241);
1319
1320
  i0.ɵɵelementEnd();
1320
- i0.ɵɵelementStart(8, "div", 229)(9, "span", 248);
1321
+ i0.ɵɵelementStart(8, "div", 230)(9, "span", 249);
1321
1322
  i0.ɵɵtext(10);
1322
1323
  i0.ɵɵelementEnd()()();
1323
- i0.ɵɵelementStart(11, "div", 249)(12, "span", 250);
1324
+ i0.ɵɵelementStart(11, "div", 250)(12, "span", 251);
1324
1325
  i0.ɵɵtext(13, "Key:");
1325
1326
  i0.ɵɵelementEnd();
1326
- i0.ɵɵelementStart(14, "span", 251);
1327
+ i0.ɵɵelementStart(14, "span", 252);
1327
1328
  i0.ɵɵtext(15);
1328
1329
  i0.ɵɵelementEnd();
1329
- i0.ɵɵelementStart(16, "span", 231);
1330
+ i0.ɵɵelementStart(16, "span", 232);
1330
1331
  i0.ɵɵtext(17);
1331
1332
  i0.ɵɵelementEnd();
1332
- i0.ɵɵelementStart(18, "span", 230);
1333
+ i0.ɵɵelementStart(18, "span", 231);
1333
1334
  i0.ɵɵtext(19);
1334
1335
  i0.ɵɵelementEnd()();
1335
- i0.ɵɵconditionalCreate(20, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_1_For_8_Conditional_20_Template, 5, 1, "div", 249)(21, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_1_For_8_Conditional_21_Template, 5, 1, "div", 249);
1336
+ i0.ɵɵconditionalCreate(20, MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_3_Conditional_1_For_8_Conditional_20_Template, 5, 1, "div", 250)(21, MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_3_Conditional_1_For_8_Conditional_21_Template, 5, 1, "div", 250);
1336
1337
  i0.ɵɵelementEnd();
1337
1338
  } if (rf & 2) {
1338
1339
  const incoming_r40 = ctx.$implicit;
@@ -1353,15 +1354,15 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_
1353
1354
  i0.ɵɵadvance();
1354
1355
  i0.ɵɵconditional(incoming_r40.RelatedEntityConfig.IsDirectMatch ? 20 : 21);
1355
1356
  } }
1356
- function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1357
- i0.ɵɵelementStart(0, "div", 204)(1, "h3", 205);
1358
- i0.ɵɵelement(2, "i", 211);
1357
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1358
+ i0.ɵɵelementStart(0, "div", 205)(1, "h3", 206);
1359
+ i0.ɵɵelement(2, "i", 212);
1359
1360
  i0.ɵɵtext(3, " Incoming (Other entities matching to this one) ");
1360
- i0.ɵɵelementStart(4, "span", 207);
1361
+ i0.ɵɵelementStart(4, "span", 208);
1361
1362
  i0.ɵɵtext(5);
1362
1363
  i0.ɵɵelementEnd()();
1363
- i0.ɵɵelementStart(6, "div", 224);
1364
- i0.ɵɵrepeaterCreate(7, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_1_For_8_Template, 22, 12, "div", 246, _forTrack4);
1364
+ i0.ɵɵelementStart(6, "div", 225);
1365
+ i0.ɵɵrepeaterCreate(7, MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_3_Conditional_1_For_8_Template, 22, 12, "div", 247, _forTrack4);
1365
1366
  i0.ɵɵelementEnd()();
1366
1367
  } if (rf & 2) {
1367
1368
  const ctx_r2 = i0.ɵɵnextContext(4);
@@ -1370,71 +1371,71 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_
1370
1371
  i0.ɵɵadvance(2);
1371
1372
  i0.ɵɵrepeater(ctx_r2.organicKeysIncoming);
1372
1373
  } }
1373
- function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1374
- i0.ɵɵconditionalCreate(0, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_0_Template, 9, 1, "div", 204);
1375
- i0.ɵɵconditionalCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Conditional_1_Template, 9, 1, "div", 204);
1374
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1375
+ i0.ɵɵconditionalCreate(0, MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_3_Conditional_0_Template, 9, 1, "div", 205);
1376
+ i0.ɵɵconditionalCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_3_Conditional_1_Template, 9, 1, "div", 205);
1376
1377
  } if (rf & 2) {
1377
1378
  const ctx_r2 = i0.ɵɵnextContext(3);
1378
1379
  i0.ɵɵconditional(ctx_r2.organicKeysOutgoing.length > 0 ? 0 : -1);
1379
1380
  i0.ɵɵadvance();
1380
1381
  i0.ɵɵconditional(ctx_r2.organicKeysIncoming.length > 0 ? 1 : -1);
1381
1382
  } }
1382
- function MJEntityFormComponentExtended_Conditional_0_Conditional_54_Template(rf, ctx) { if (rf & 1) {
1383
- i0.ɵɵelementStart(0, "section", 31)(1, "div", 54);
1384
- i0.ɵɵconditionalCreate(2, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_2_Template, 1, 0, "mj-empty-state", 223)(3, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Conditional_3_Template, 2, 2);
1383
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_Template(rf, ctx) { if (rf & 1) {
1384
+ i0.ɵɵelementStart(0, "section", 32)(1, "div", 55);
1385
+ i0.ɵɵconditionalCreate(2, MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_2_Template, 1, 0, "mj-empty-state", 224)(3, MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_3_Template, 2, 2);
1385
1386
  i0.ɵɵelementEnd()();
1386
1387
  } if (rf & 2) {
1387
1388
  const ctx_r2 = i0.ɵɵnextContext(2);
1388
1389
  i0.ɵɵadvance(2);
1389
1390
  i0.ɵɵconditional(ctx_r2.organicKeysOutgoing.length === 0 && ctx_r2.organicKeysIncoming.length === 0 ? 2 : 3);
1390
1391
  } }
1391
- function MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1392
- i0.ɵɵelementStart(0, "span", 264);
1392
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_56_For_20_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1393
+ i0.ɵɵelementStart(0, "span", 265);
1393
1394
  i0.ɵɵtext(1, "R");
1394
1395
  i0.ɵɵelementEnd();
1395
1396
  } }
1396
- function MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1397
- i0.ɵɵelementStart(0, "span", 265);
1397
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_56_For_20_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1398
+ i0.ɵɵelementStart(0, "span", 266);
1398
1399
  i0.ɵɵtext(1, "C");
1399
1400
  i0.ɵɵelementEnd();
1400
1401
  } }
1401
- function MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Conditional_14_Template(rf, ctx) { if (rf & 1) {
1402
- i0.ɵɵelementStart(0, "span", 266);
1402
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_56_For_20_Conditional_14_Template(rf, ctx) { if (rf & 1) {
1403
+ i0.ɵɵelementStart(0, "span", 267);
1403
1404
  i0.ɵɵtext(1, "U");
1404
1405
  i0.ɵɵelementEnd();
1405
1406
  } }
1406
- function MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Conditional_15_Template(rf, ctx) { if (rf & 1) {
1407
- i0.ɵɵelementStart(0, "span", 267);
1407
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_56_For_20_Conditional_15_Template(rf, ctx) { if (rf & 1) {
1408
+ i0.ɵɵelementStart(0, "span", 268);
1408
1409
  i0.ɵɵtext(1, "D");
1409
1410
  i0.ɵɵelementEnd();
1410
1411
  } }
1411
- function MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1412
- i0.ɵɵelementStart(0, "span", 268);
1412
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_56_For_20_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1413
+ i0.ɵɵelementStart(0, "span", 269);
1413
1414
  i0.ɵɵtext(1, "None");
1414
1415
  i0.ɵɵelementEnd();
1415
1416
  } }
1416
- function MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Template(rf, ctx) { if (rf & 1) {
1417
- i0.ɵɵelementStart(0, "tr")(1, "td", 261);
1417
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_56_For_20_Template(rf, ctx) { if (rf & 1) {
1418
+ i0.ɵɵelementStart(0, "tr")(1, "td", 262);
1418
1419
  i0.ɵɵtext(2);
1419
1420
  i0.ɵɵelementEnd();
1420
- i0.ɵɵelementStart(3, "td", 254);
1421
- i0.ɵɵelement(4, "i", 262);
1421
+ i0.ɵɵelementStart(3, "td", 255);
1422
+ i0.ɵɵelement(4, "i", 263);
1422
1423
  i0.ɵɵelementEnd();
1423
- i0.ɵɵelementStart(5, "td", 254);
1424
- i0.ɵɵelement(6, "i", 262);
1424
+ i0.ɵɵelementStart(5, "td", 255);
1425
+ i0.ɵɵelement(6, "i", 263);
1425
1426
  i0.ɵɵelementEnd();
1426
- i0.ɵɵelementStart(7, "td", 254);
1427
- i0.ɵɵelement(8, "i", 262);
1427
+ i0.ɵɵelementStart(7, "td", 255);
1428
+ i0.ɵɵelement(8, "i", 263);
1428
1429
  i0.ɵɵelementEnd();
1429
- i0.ɵɵelementStart(9, "td", 254);
1430
- i0.ɵɵelement(10, "i", 262);
1430
+ i0.ɵɵelementStart(9, "td", 255);
1431
+ i0.ɵɵelement(10, "i", 263);
1431
1432
  i0.ɵɵelementEnd();
1432
- i0.ɵɵelementStart(11, "td", 263);
1433
- i0.ɵɵconditionalCreate(12, MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Conditional_12_Template, 2, 0, "span", 264);
1434
- i0.ɵɵconditionalCreate(13, MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Conditional_13_Template, 2, 0, "span", 265);
1435
- i0.ɵɵconditionalCreate(14, MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Conditional_14_Template, 2, 0, "span", 266);
1436
- i0.ɵɵconditionalCreate(15, MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Conditional_15_Template, 2, 0, "span", 267);
1437
- i0.ɵɵconditionalCreate(16, MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Conditional_16_Template, 2, 0, "span", 268);
1433
+ i0.ɵɵelementStart(11, "td", 264);
1434
+ i0.ɵɵconditionalCreate(12, MJEntityFormComponentExtended_Conditional_0_Conditional_56_For_20_Conditional_12_Template, 2, 0, "span", 265);
1435
+ i0.ɵɵconditionalCreate(13, MJEntityFormComponentExtended_Conditional_0_Conditional_56_For_20_Conditional_13_Template, 2, 0, "span", 266);
1436
+ i0.ɵɵconditionalCreate(14, MJEntityFormComponentExtended_Conditional_0_Conditional_56_For_20_Conditional_14_Template, 2, 0, "span", 267);
1437
+ i0.ɵɵconditionalCreate(15, MJEntityFormComponentExtended_Conditional_0_Conditional_56_For_20_Conditional_15_Template, 2, 0, "span", 268);
1438
+ i0.ɵɵconditionalCreate(16, MJEntityFormComponentExtended_Conditional_0_Conditional_56_For_20_Conditional_16_Template, 2, 0, "span", 269);
1438
1439
  i0.ɵɵelementEnd()();
1439
1440
  } if (rf & 2) {
1440
1441
  const perm_r41 = ctx.$implicit;
@@ -1460,69 +1461,69 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Templ
1460
1461
  i0.ɵɵadvance();
1461
1462
  i0.ɵɵconditional(!perm_r41.ReadRLSFilterID && !perm_r41.CreateRLSFilterID && !perm_r41.UpdateRLSFilterID && !perm_r41.DeleteRLSFilterID ? 16 : -1);
1462
1463
  } }
1463
- function MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_21_Template(rf, ctx) { if (rf & 1) {
1464
- i0.ɵɵelement(0, "mj-empty-state", 255);
1464
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_56_Conditional_21_Template(rf, ctx) { if (rf & 1) {
1465
+ i0.ɵɵelement(0, "mj-empty-state", 256);
1465
1466
  } }
1466
- function MJEntityFormComponentExtended_Conditional_0_Conditional_55_Template(rf, ctx) { if (rf & 1) {
1467
- i0.ɵɵelementStart(0, "section", 32)(1, "div", 54)(2, "div", 252)(3, "table", 253)(4, "thead")(5, "tr")(6, "th");
1467
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_56_Template(rf, ctx) { if (rf & 1) {
1468
+ i0.ɵɵelementStart(0, "section", 33)(1, "div", 55)(2, "div", 253)(3, "table", 254)(4, "thead")(5, "tr")(6, "th");
1468
1469
  i0.ɵɵtext(7, "Role");
1469
1470
  i0.ɵɵelementEnd();
1470
- i0.ɵɵelementStart(8, "th", 254);
1471
+ i0.ɵɵelementStart(8, "th", 255);
1471
1472
  i0.ɵɵtext(9, "Create");
1472
1473
  i0.ɵɵelementEnd();
1473
- i0.ɵɵelementStart(10, "th", 254);
1474
+ i0.ɵɵelementStart(10, "th", 255);
1474
1475
  i0.ɵɵtext(11, "Read");
1475
1476
  i0.ɵɵelementEnd();
1476
- i0.ɵɵelementStart(12, "th", 254);
1477
+ i0.ɵɵelementStart(12, "th", 255);
1477
1478
  i0.ɵɵtext(13, "Update");
1478
1479
  i0.ɵɵelementEnd();
1479
- i0.ɵɵelementStart(14, "th", 254);
1480
+ i0.ɵɵelementStart(14, "th", 255);
1480
1481
  i0.ɵɵtext(15, "Delete");
1481
1482
  i0.ɵɵelementEnd();
1482
1483
  i0.ɵɵelementStart(16, "th");
1483
1484
  i0.ɵɵtext(17, "RLS");
1484
1485
  i0.ɵɵelementEnd()()();
1485
1486
  i0.ɵɵelementStart(18, "tbody");
1486
- i0.ɵɵrepeaterCreate(19, MJEntityFormComponentExtended_Conditional_0_Conditional_55_For_20_Template, 17, 10, "tr", null, i0.ɵɵrepeaterTrackByIdentity);
1487
+ i0.ɵɵrepeaterCreate(19, MJEntityFormComponentExtended_Conditional_0_Conditional_56_For_20_Template, 17, 10, "tr", null, i0.ɵɵrepeaterTrackByIdentity);
1487
1488
  i0.ɵɵelementEnd()();
1488
- i0.ɵɵconditionalCreate(21, MJEntityFormComponentExtended_Conditional_0_Conditional_55_Conditional_21_Template, 1, 0, "mj-empty-state", 255);
1489
+ i0.ɵɵconditionalCreate(21, MJEntityFormComponentExtended_Conditional_0_Conditional_56_Conditional_21_Template, 1, 0, "mj-empty-state", 256);
1489
1490
  i0.ɵɵelementEnd();
1490
- i0.ɵɵelementStart(22, "div", 256)(23, "h3", 70);
1491
- i0.ɵɵelement(24, "i", 257);
1491
+ i0.ɵɵelementStart(22, "div", 257)(23, "h3", 71);
1492
+ i0.ɵɵelement(24, "i", 258);
1492
1493
  i0.ɵɵtext(25, " API Capabilities ");
1493
1494
  i0.ɵɵelementEnd();
1494
- i0.ɵɵelementStart(26, "div", 258)(27, "div", 259);
1495
- i0.ɵɵelement(28, "i", 260);
1495
+ i0.ɵɵelementStart(26, "div", 259)(27, "div", 260);
1496
+ i0.ɵɵelement(28, "i", 261);
1496
1497
  i0.ɵɵelementStart(29, "span");
1497
1498
  i0.ɵɵtext(30, "Include in API");
1498
1499
  i0.ɵɵelementEnd()();
1499
- i0.ɵɵelementStart(31, "div", 259);
1500
- i0.ɵɵelement(32, "i", 260);
1500
+ i0.ɵɵelementStart(31, "div", 260);
1501
+ i0.ɵɵelement(32, "i", 261);
1501
1502
  i0.ɵɵelementStart(33, "span");
1502
1503
  i0.ɵɵtext(34, "Allow All Rows");
1503
1504
  i0.ɵɵelementEnd()();
1504
- i0.ɵɵelementStart(35, "div", 259);
1505
- i0.ɵɵelement(36, "i", 260);
1505
+ i0.ɵɵelementStart(35, "div", 260);
1506
+ i0.ɵɵelement(36, "i", 261);
1506
1507
  i0.ɵɵelementStart(37, "span");
1507
1508
  i0.ɵɵtext(38, "Allow Create");
1508
1509
  i0.ɵɵelementEnd()();
1509
- i0.ɵɵelementStart(39, "div", 259);
1510
- i0.ɵɵelement(40, "i", 260);
1510
+ i0.ɵɵelementStart(39, "div", 260);
1511
+ i0.ɵɵelement(40, "i", 261);
1511
1512
  i0.ɵɵelementStart(41, "span");
1512
1513
  i0.ɵɵtext(42, "Allow Update");
1513
1514
  i0.ɵɵelementEnd()();
1514
- i0.ɵɵelementStart(43, "div", 259);
1515
- i0.ɵɵelement(44, "i", 260);
1515
+ i0.ɵɵelementStart(43, "div", 260);
1516
+ i0.ɵɵelement(44, "i", 261);
1516
1517
  i0.ɵɵelementStart(45, "span");
1517
1518
  i0.ɵɵtext(46, "Allow Delete");
1518
1519
  i0.ɵɵelementEnd()();
1519
- i0.ɵɵelementStart(47, "div", 259);
1520
- i0.ɵɵelement(48, "i", 260);
1520
+ i0.ɵɵelementStart(47, "div", 260);
1521
+ i0.ɵɵelement(48, "i", 261);
1521
1522
  i0.ɵɵelementStart(49, "span");
1522
1523
  i0.ɵɵtext(50, "User Search");
1523
1524
  i0.ɵɵelementEnd()();
1524
- i0.ɵɵelementStart(51, "div", 259);
1525
- i0.ɵɵelement(52, "i", 260);
1525
+ i0.ɵɵelementStart(51, "div", 260);
1526
+ i0.ɵɵelement(52, "i", 261);
1526
1527
  i0.ɵɵelementStart(53, "span");
1527
1528
  i0.ɵɵtext(54, "Custom Resolver");
1528
1529
  i0.ɵɵelementEnd()()()()()();
@@ -1561,122 +1562,122 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_55_Template(rf,
1561
1562
  i0.ɵɵadvance();
1562
1563
  i0.ɵɵproperty("ngClass", ctx_r2.entity.CustomResolverAPI ? "fa-check" : "fa-xmark");
1563
1564
  } }
1564
- function MJEntityFormComponentExtended_Conditional_0_Conditional_56_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1565
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1565
1566
  const _r42 = i0.ɵɵgetCurrentView();
1566
- i0.ɵɵelementStart(0, "mj-entity-viewer", 271);
1567
- 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)); })("CreateRecordRequested", function MJEntityFormComponentExtended_Conditional_0_Conditional_56_Conditional_2_Template_mj_entity_viewer_CreateRecordRequested_0_listener() { i0.ɵɵrestoreView(_r42); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.OnAddRequested()); });
1567
+ i0.ɵɵelementStart(0, "mj-entity-viewer", 272);
1568
+ i0.ɵɵlistener("RecordOpened", function MJEntityFormComponentExtended_Conditional_0_Conditional_57_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)); })("CreateRecordRequested", function MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_2_Template_mj_entity_viewer_CreateRecordRequested_0_listener() { i0.ɵɵrestoreView(_r42); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.OnAddRequested()); });
1568
1569
  i0.ɵɵelementEnd();
1569
1570
  } if (rf & 2) {
1570
1571
  const ctx_r2 = i0.ɵɵnextContext(3);
1571
1572
  i0.ɵɵproperty("Entity", ctx_r2.entity)("Provider", ctx_r2.Provider);
1572
1573
  } }
1573
- function MJEntityFormComponentExtended_Conditional_0_Conditional_56_Template(rf, ctx) { if (rf & 1) {
1574
- i0.ɵɵelementStart(0, "section", 33)(1, "div", 269);
1575
- i0.ɵɵconditionalCreate(2, MJEntityFormComponentExtended_Conditional_0_Conditional_56_Conditional_2_Template, 1, 2, "mj-entity-viewer", 270);
1574
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_57_Template(rf, ctx) { if (rf & 1) {
1575
+ i0.ɵɵelementStart(0, "section", 34)(1, "div", 270);
1576
+ i0.ɵɵconditionalCreate(2, MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_2_Template, 1, 2, "mj-entity-viewer", 271);
1576
1577
  i0.ɵɵelementEnd()();
1577
1578
  } if (rf & 2) {
1578
1579
  const ctx_r2 = i0.ɵɵnextContext(2);
1579
1580
  i0.ɵɵadvance(2);
1580
1581
  i0.ɵɵconditional(ctx_r2.entity ? 2 : -1);
1581
1582
  } }
1582
- function MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1583
- i0.ɵɵelementStart(0, "div", 275);
1584
- i0.ɵɵelement(1, "i", 257);
1583
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1584
+ i0.ɵɵelementStart(0, "div", 276);
1585
+ i0.ɵɵelement(1, "i", 258);
1585
1586
  i0.ɵɵelementStart(2, "span");
1586
1587
  i0.ɵɵtext(3, "API Create");
1587
1588
  i0.ɵɵelementEnd()();
1588
1589
  } }
1589
- function MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_25_Template(rf, ctx) { if (rf & 1) {
1590
- i0.ɵɵelementStart(0, "div", 275);
1591
- i0.ɵɵelement(1, "i", 282);
1590
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_25_Template(rf, ctx) { if (rf & 1) {
1591
+ i0.ɵɵelementStart(0, "div", 276);
1592
+ i0.ɵɵelement(1, "i", 283);
1592
1593
  i0.ɵɵelementStart(2, "span");
1593
1594
  i0.ɵɵtext(3, "Record Changes");
1594
1595
  i0.ɵɵelementEnd()();
1595
1596
  } }
1596
- function MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_26_Template(rf, ctx) { if (rf & 1) {
1597
- i0.ɵɵelementStart(0, "div", 275);
1598
- i0.ɵɵelement(1, "i", 42);
1597
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_26_Template(rf, ctx) { if (rf & 1) {
1598
+ i0.ɵɵelementStart(0, "div", 276);
1599
+ i0.ɵɵelement(1, "i", 43);
1599
1600
  i0.ɵɵelementStart(2, "span");
1600
1601
  i0.ɵɵtext(3, "Access Audit");
1601
1602
  i0.ɵɵelementEnd()();
1602
1603
  } }
1603
- function MJEntityFormComponentExtended_Conditional_0_Conditional_57_Template(rf, ctx) { if (rf & 1) {
1604
- i0.ɵɵelementStart(0, "section", 34)(1, "div", 54)(2, "div", 272)(3, "div", 273)(4, "h4");
1604
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Template(rf, ctx) { if (rf & 1) {
1605
+ i0.ɵɵelementStart(0, "section", 35)(1, "div", 55)(2, "div", 273)(3, "div", 274)(4, "h4");
1605
1606
  i0.ɵɵtext(5, "Data Sources");
1606
1607
  i0.ɵɵelementEnd();
1607
- i0.ɵɵelementStart(6, "div", 274)(7, "div", 275);
1608
- i0.ɵɵelement(8, "i", 276);
1608
+ i0.ɵɵelementStart(6, "div", 275)(7, "div", 276);
1609
+ i0.ɵɵelement(8, "i", 277);
1609
1610
  i0.ɵɵelementStart(9, "span");
1610
1611
  i0.ɵɵtext(10, "Manual Entry");
1611
1612
  i0.ɵɵelementEnd()();
1612
- i0.ɵɵconditionalCreate(11, MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_11_Template, 4, 0, "div", 275);
1613
+ i0.ɵɵconditionalCreate(11, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_11_Template, 4, 0, "div", 276);
1613
1614
  i0.ɵɵelementEnd()();
1614
- i0.ɵɵelementStart(12, "div", 277);
1615
- i0.ɵɵelement(13, "i", 63);
1615
+ i0.ɵɵelementStart(12, "div", 278);
1616
+ i0.ɵɵelement(13, "i", 64);
1616
1617
  i0.ɵɵelementEnd();
1617
- i0.ɵɵelementStart(14, "div", 278)(15, "div", 279);
1618
+ i0.ɵɵelementStart(14, "div", 279)(15, "div", 280);
1618
1619
  i0.ɵɵelement(16, "i");
1619
1620
  i0.ɵɵelementStart(17, "span");
1620
1621
  i0.ɵɵtext(18);
1621
1622
  i0.ɵɵelementEnd()()();
1622
- i0.ɵɵelementStart(19, "div", 277);
1623
- i0.ɵɵelement(20, "i", 63);
1623
+ i0.ɵɵelementStart(19, "div", 278);
1624
+ i0.ɵɵelement(20, "i", 64);
1624
1625
  i0.ɵɵelementEnd();
1625
- i0.ɵɵelementStart(21, "div", 280)(22, "h4");
1626
+ i0.ɵɵelementStart(21, "div", 281)(22, "h4");
1626
1627
  i0.ɵɵtext(23, "Data Sinks");
1627
1628
  i0.ɵɵelementEnd();
1628
- i0.ɵɵelementStart(24, "div", 274);
1629
- i0.ɵɵconditionalCreate(25, MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_25_Template, 4, 0, "div", 275);
1630
- i0.ɵɵconditionalCreate(26, MJEntityFormComponentExtended_Conditional_0_Conditional_57_Conditional_26_Template, 4, 0, "div", 275);
1631
- i0.ɵɵelementStart(27, "div", 275);
1629
+ i0.ɵɵelementStart(24, "div", 275);
1630
+ i0.ɵɵconditionalCreate(25, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_25_Template, 4, 0, "div", 276);
1631
+ i0.ɵɵconditionalCreate(26, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_26_Template, 4, 0, "div", 276);
1632
+ i0.ɵɵelementStart(27, "div", 276);
1632
1633
  i0.ɵɵelement(28, "i", 20);
1633
1634
  i0.ɵɵelementStart(29, "span");
1634
1635
  i0.ɵɵtext(30);
1635
1636
  i0.ɵɵelementEnd()()()()();
1636
- i0.ɵɵelementStart(31, "div", 281)(32, "h3", 70);
1637
- i0.ɵɵelement(33, "i", 282);
1637
+ i0.ɵɵelementStart(31, "div", 282)(32, "h3", 71);
1638
+ i0.ɵɵelement(33, "i", 283);
1638
1639
  i0.ɵɵtext(34, " Tracking Configuration ");
1639
1640
  i0.ɵɵelementEnd();
1640
- i0.ɵɵelementStart(35, "div", 283)(36, "div", 284);
1641
- i0.ɵɵelement(37, "i", 260);
1641
+ i0.ɵɵelementStart(35, "div", 284)(36, "div", 285);
1642
+ i0.ɵɵelement(37, "i", 261);
1642
1643
  i0.ɵɵelementStart(38, "span");
1643
1644
  i0.ɵɵtext(39, "Track Record Changes");
1644
1645
  i0.ɵɵelementEnd()();
1645
- i0.ɵɵelementStart(40, "div", 284);
1646
- i0.ɵɵelement(41, "i", 260);
1646
+ i0.ɵɵelementStart(40, "div", 285);
1647
+ i0.ɵɵelement(41, "i", 261);
1647
1648
  i0.ɵɵelementStart(42, "span");
1648
1649
  i0.ɵɵtext(43, "Audit Record Access");
1649
1650
  i0.ɵɵelementEnd()();
1650
- i0.ɵɵelementStart(44, "div", 284);
1651
- i0.ɵɵelement(45, "i", 260);
1651
+ i0.ɵɵelementStart(44, "div", 285);
1652
+ i0.ɵɵelement(45, "i", 261);
1652
1653
  i0.ɵɵelementStart(46, "span");
1653
1654
  i0.ɵɵtext(47, "Audit View Runs");
1654
1655
  i0.ɵɵelementEnd()();
1655
- i0.ɵɵelementStart(48, "div", 284)(49, "span", 285);
1656
+ i0.ɵɵelementStart(48, "div", 285)(49, "span", 286);
1656
1657
  i0.ɵɵtext(50, "Delete Type:");
1657
1658
  i0.ɵɵelementEnd();
1658
- i0.ɵɵelementStart(51, "span", 286);
1659
+ i0.ɵɵelementStart(51, "span", 287);
1659
1660
  i0.ɵɵtext(52);
1660
1661
  i0.ɵɵelementEnd()();
1661
- i0.ɵɵelementStart(53, "div", 284);
1662
- i0.ɵɵelement(54, "i", 260);
1662
+ i0.ɵɵelementStart(53, "div", 285);
1663
+ i0.ɵɵelement(54, "i", 261);
1663
1664
  i0.ɵɵelementStart(55, "span");
1664
1665
  i0.ɵɵtext(56, "Cascade Deletes");
1665
1666
  i0.ɵɵelementEnd()()()();
1666
- i0.ɵɵelementStart(57, "div", 281)(58, "h3", 70);
1667
- i0.ɵɵelement(59, "i", 287);
1667
+ i0.ɵɵelementStart(57, "div", 282)(58, "h3", 71);
1668
+ i0.ɵɵelement(59, "i", 288);
1668
1669
  i0.ɵɵtext(60, " Geocoding ");
1669
1670
  i0.ɵɵelementEnd();
1670
- i0.ɵɵelementStart(61, "p", 288);
1671
+ i0.ɵɵelementStart(61, "p", 289);
1671
1672
  i0.ɵɵtext(62, "When enabled, CodeGen auto-detects geo fields and generates map view support");
1672
1673
  i0.ɵɵelementEnd();
1673
- i0.ɵɵelementStart(63, "div", 283)(64, "div", 284);
1674
- i0.ɵɵelement(65, "i", 260);
1674
+ i0.ɵɵelementStart(63, "div", 284)(64, "div", 285);
1675
+ i0.ɵɵelement(65, "i", 261);
1675
1676
  i0.ɵɵelementStart(66, "span");
1676
1677
  i0.ɵɵtext(67, "Supports Geocoding");
1677
1678
  i0.ɵɵelementEnd()();
1678
- i0.ɵɵelementStart(68, "div", 284);
1679
- i0.ɵɵelement(69, "i", 260);
1679
+ i0.ɵɵelementStart(68, "div", 285);
1680
+ i0.ɵɵelement(69, "i", 261);
1680
1681
  i0.ɵɵelementStart(70, "span");
1681
1682
  i0.ɵɵtext(71, "Auto-Detect Geocoding");
1682
1683
  i0.ɵɵelementEnd()()()()()();
@@ -1721,7 +1722,7 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_57_Template(rf,
1721
1722
  i0.ɵɵadvance();
1722
1723
  i0.ɵɵproperty("ngClass", ctx_r2.entity.AutoUpdateSupportsGeoCoding ? "fa-check" : "fa-xmark");
1723
1724
  } }
1724
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_15_Template(rf, ctx) { if (rf & 1) {
1725
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_15_Template(rf, ctx) { if (rf & 1) {
1725
1726
  i0.ɵɵelementStart(0, "p");
1726
1727
  i0.ɵɵtext(1, " This entity has change tracking enabled. All modifications to records are stored in the ");
1727
1728
  i0.ɵɵelementStart(2, "code");
@@ -1730,7 +1731,7 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_
1730
1731
  i0.ɵɵtext(4, " table, including the user who made the change, timestamp, and the before/after values. ");
1731
1732
  i0.ɵɵelementEnd();
1732
1733
  } }
1733
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1734
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1734
1735
  i0.ɵɵelementStart(0, "p");
1735
1736
  i0.ɵɵtext(1, " This entity does not have change tracking enabled. To enable it, set ");
1736
1737
  i0.ɵɵelementStart(2, "code");
@@ -1743,19 +1744,19 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_
1743
1744
  i0.ɵɵtext(7, " in the entity metadata. ");
1744
1745
  i0.ɵɵelementEnd();
1745
1746
  } }
1746
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_17_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1747
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_17_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1747
1748
  i0.ɵɵelementStart(0, "li")(1, "code");
1748
1749
  i0.ɵɵtext(2, "__mj_DeletedAt");
1749
1750
  i0.ɵɵelementEnd();
1750
1751
  i0.ɵɵtext(3, " - Soft delete timestamp (when applicable) ");
1751
1752
  i0.ɵɵelementEnd();
1752
1753
  } }
1753
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1754
- i0.ɵɵelementStart(0, "div", 293)(1, "h4");
1754
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1755
+ i0.ɵɵelementStart(0, "div", 294)(1, "h4");
1755
1756
  i0.ɵɵelement(2, "i", 22);
1756
1757
  i0.ɵɵtext(3, " Audit Fields ");
1757
1758
  i0.ɵɵelementEnd();
1758
- i0.ɵɵelementStart(4, "ul", 295)(5, "li")(6, "code");
1759
+ i0.ɵɵelementStart(4, "ul", 296)(5, "li")(6, "code");
1759
1760
  i0.ɵɵtext(7, "__mj_CreatedAt");
1760
1761
  i0.ɵɵelementEnd();
1761
1762
  i0.ɵɵtext(8, " - Record creation timestamp ");
@@ -1765,30 +1766,30 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_
1765
1766
  i0.ɵɵelementEnd();
1766
1767
  i0.ɵɵtext(12, " - Last modification timestamp ");
1767
1768
  i0.ɵɵelementEnd();
1768
- i0.ɵɵconditionalCreate(13, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_17_Conditional_13_Template, 4, 0, "li");
1769
+ i0.ɵɵconditionalCreate(13, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_17_Conditional_13_Template, 4, 0, "li");
1769
1770
  i0.ɵɵelementEnd()();
1770
1771
  } if (rf & 2) {
1771
1772
  const ctx_r2 = i0.ɵɵnextContext(3);
1772
1773
  i0.ɵɵadvance(13);
1773
1774
  i0.ɵɵconditional(ctx_r2.entity.DeleteType === "Soft" ? 13 : -1);
1774
1775
  } }
1775
- function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Template(rf, ctx) { if (rf & 1) {
1776
- i0.ɵɵelementStart(0, "section", 35)(1, "div", 54)(2, "div", 289)(3, "div", 290);
1777
- i0.ɵɵelement(4, "i", 260);
1778
- i0.ɵɵelementStart(5, "div", 291)(6, "strong");
1776
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Template(rf, ctx) { if (rf & 1) {
1777
+ i0.ɵɵelementStart(0, "section", 36)(1, "div", 55)(2, "div", 290)(3, "div", 291);
1778
+ i0.ɵɵelement(4, "i", 261);
1779
+ i0.ɵɵelementStart(5, "div", 292)(6, "strong");
1779
1780
  i0.ɵɵtext(7, "Record Change Tracking");
1780
1781
  i0.ɵɵelementEnd();
1781
1782
  i0.ɵɵelementStart(8, "span");
1782
1783
  i0.ɵɵtext(9);
1783
1784
  i0.ɵɵelementEnd()()()();
1784
- i0.ɵɵelementStart(10, "div", 292)(11, "div", 293)(12, "h4");
1785
- i0.ɵɵelement(13, "i", 294);
1785
+ i0.ɵɵelementStart(10, "div", 293)(11, "div", 294)(12, "h4");
1786
+ i0.ɵɵelement(13, "i", 295);
1786
1787
  i0.ɵɵtext(14, " About Change Tracking ");
1787
1788
  i0.ɵɵelementEnd();
1788
- i0.ɵɵconditionalCreate(15, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_15_Template, 5, 0, "p");
1789
- i0.ɵɵconditionalCreate(16, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_16_Template, 8, 0, "p");
1789
+ i0.ɵɵconditionalCreate(15, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_15_Template, 5, 0, "p");
1790
+ i0.ɵɵconditionalCreate(16, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_16_Template, 8, 0, "p");
1790
1791
  i0.ɵɵelementEnd();
1791
- i0.ɵɵconditionalCreate(17, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Conditional_17_Template, 14, 1, "div", 293);
1792
+ i0.ɵɵconditionalCreate(17, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_17_Template, 14, 1, "div", 294);
1792
1793
  i0.ɵɵelementEnd()()();
1793
1794
  } if (rf & 2) {
1794
1795
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -1805,42 +1806,42 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_58_Template(rf,
1805
1806
  i0.ɵɵadvance();
1806
1807
  i0.ɵɵconditional(ctx_r2.entity.TrackRecordChanges ? 17 : -1);
1807
1808
  } }
1808
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1809
- i0.ɵɵelement(0, "i", 313);
1809
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1810
+ i0.ɵɵelement(0, "i", 314);
1810
1811
  i0.ɵɵtext(1, " Yes \u2014 read-only view ");
1811
1812
  } }
1812
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1813
- i0.ɵɵelement(0, "i", 314);
1813
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1814
+ i0.ɵɵelement(0, "i", 315);
1814
1815
  i0.ɵɵtext(1, " No ");
1815
1816
  } }
1816
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
1817
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
1817
1818
  const _r44 = i0.ɵɵgetCurrentView();
1818
- i0.ɵɵelementStart(0, "span", 315);
1819
- i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_15_Template_span_click_0_listener() { i0.ɵɵrestoreView(_r44); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.NavigateToEntity(ctx_r2.ParentChain[0])); });
1819
+ i0.ɵɵelementStart(0, "span", 316);
1820
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_15_Template_span_click_0_listener() { i0.ɵɵrestoreView(_r44); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.NavigateToEntity(ctx_r2.ParentChain[0])); });
1820
1821
  i0.ɵɵtext(1);
1821
- i0.ɵɵelement(2, "i", 63);
1822
+ i0.ɵɵelement(2, "i", 64);
1822
1823
  i0.ɵɵelementEnd();
1823
1824
  } if (rf & 2) {
1824
1825
  const ctx_r2 = i0.ɵɵnextContext(4);
1825
1826
  i0.ɵɵadvance();
1826
1827
  i0.ɵɵtextInterpolate1(" ", ctx_r2.ParentChain[0] == null ? null : ctx_r2.ParentChain[0].Name, " ");
1827
1828
  } }
1828
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1829
- i0.ɵɵelementStart(0, "span", 312);
1829
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1830
+ i0.ɵɵelementStart(0, "span", 313);
1830
1831
  i0.ɵɵtext(1, "None");
1831
1832
  i0.ɵɵelementEnd();
1832
1833
  } }
1833
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1834
- i0.ɵɵelementStart(0, "div", 310)(1, "span", 285);
1834
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1835
+ i0.ɵɵelementStart(0, "div", 311)(1, "span", 286);
1835
1836
  i0.ɵɵtext(2, "Full Inheritance Chain");
1836
1837
  i0.ɵɵelementEnd();
1837
- i0.ɵɵelementStart(3, "span", 286);
1838
+ i0.ɵɵelementStart(3, "span", 287);
1838
1839
  i0.ɵɵtext(4);
1839
1840
  i0.ɵɵelementEnd()();
1840
- i0.ɵɵelementStart(5, "div", 310)(6, "span", 285);
1841
+ i0.ɵɵelementStart(5, "div", 311)(6, "span", 286);
1841
1842
  i0.ɵɵtext(7, "Inherited Fields");
1842
1843
  i0.ɵɵelementEnd();
1843
- i0.ɵɵelementStart(8, "span", 286);
1844
+ i0.ɵɵelementStart(8, "span", 287);
1844
1845
  i0.ɵɵtext(9);
1845
1846
  i0.ɵɵelementEnd()();
1846
1847
  } if (rf & 2) {
@@ -1850,96 +1851,96 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_
1850
1851
  i0.ɵɵadvance(5);
1851
1852
  i0.ɵɵtextInterpolate2("", ctx_r2.InheritedFieldCount, " field", ctx_r2.InheritedFieldCount !== 1 ? "s" : "");
1852
1853
  } }
1853
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_18_For_5_Template(rf, ctx) { if (rf & 1) {
1854
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_18_For_5_Template(rf, ctx) { if (rf & 1) {
1854
1855
  const _r45 = i0.ɵɵgetCurrentView();
1855
- i0.ɵɵelementStart(0, "span", 316);
1856
- i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_18_For_5_Template_span_click_0_listener() { const child_r46 = i0.ɵɵrestoreView(_r45).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.NavigateToEntity(child_r46)); });
1856
+ i0.ɵɵelementStart(0, "span", 317);
1857
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_18_For_5_Template_span_click_0_listener() { const child_r46 = i0.ɵɵrestoreView(_r45).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.NavigateToEntity(child_r46)); });
1857
1858
  i0.ɵɵtext(1);
1858
1859
  i0.ɵɵelementEnd();
1859
1860
  i0.ɵɵtext(2);
1860
1861
  } if (rf & 2) {
1861
1862
  const child_r46 = ctx.$implicit;
1862
- const ɵ$index_1413_r47 = ctx.$index;
1863
- const ɵ$count_1413_r48 = ctx.$count;
1863
+ const ɵ$index_1415_r47 = ctx.$index;
1864
+ const ɵ$count_1415_r48 = ctx.$count;
1864
1865
  i0.ɵɵadvance();
1865
1866
  i0.ɵɵtextInterpolate(child_r46.Name);
1866
1867
  i0.ɵɵadvance();
1867
- i0.ɵɵtextInterpolate1("", ɵ$index_1413_r47 === ɵ$count_1413_r48 - 1 ? "" : ", ", " ");
1868
+ i0.ɵɵtextInterpolate1("", ɵ$index_1415_r47 === ɵ$count_1415_r48 - 1 ? "" : ", ", " ");
1868
1869
  } }
1869
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
1870
- i0.ɵɵelementStart(0, "div", 310)(1, "span", 285);
1870
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
1871
+ i0.ɵɵelementStart(0, "div", 311)(1, "span", 286);
1871
1872
  i0.ɵɵtext(2, "Child Types");
1872
1873
  i0.ɵɵelementEnd();
1873
- i0.ɵɵelementStart(3, "span", 286);
1874
- i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_18_For_5_Template, 3, 2, null, null, _forTrack0);
1874
+ i0.ɵɵelementStart(3, "span", 287);
1875
+ i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_18_For_5_Template, 3, 2, null, null, _forTrack0);
1875
1876
  i0.ɵɵelementEnd()();
1876
1877
  } if (rf & 2) {
1877
1878
  const ctx_r2 = i0.ɵɵnextContext(4);
1878
1879
  i0.ɵɵadvance(4);
1879
1880
  i0.ɵɵrepeater(ctx_r2.ChildEntities);
1880
1881
  } }
1881
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_19_For_5_Template(rf, ctx) { if (rf & 1) {
1882
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_19_For_5_Template(rf, ctx) { if (rf & 1) {
1882
1883
  const _r49 = i0.ɵɵgetCurrentView();
1883
- i0.ɵɵelementStart(0, "span", 316);
1884
- i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_19_For_5_Template_span_click_0_listener() { const sibling_r50 = i0.ɵɵrestoreView(_r49).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.NavigateToEntity(sibling_r50)); });
1884
+ i0.ɵɵelementStart(0, "span", 317);
1885
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_19_For_5_Template_span_click_0_listener() { const sibling_r50 = i0.ɵɵrestoreView(_r49).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.NavigateToEntity(sibling_r50)); });
1885
1886
  i0.ɵɵtext(1);
1886
1887
  i0.ɵɵelementEnd();
1887
1888
  i0.ɵɵtext(2);
1888
1889
  } if (rf & 2) {
1889
1890
  const sibling_r50 = ctx.$implicit;
1890
- const ɵ$index_1426_r51 = ctx.$index;
1891
- const ɵ$count_1426_r52 = ctx.$count;
1891
+ const ɵ$index_1428_r51 = ctx.$index;
1892
+ const ɵ$count_1428_r52 = ctx.$count;
1892
1893
  i0.ɵɵadvance();
1893
1894
  i0.ɵɵtextInterpolate(sibling_r50.Name);
1894
1895
  i0.ɵɵadvance();
1895
- i0.ɵɵtextInterpolate1("", ɵ$index_1426_r51 === ɵ$count_1426_r52 - 1 ? "" : ", ", " ");
1896
+ i0.ɵɵtextInterpolate1("", ɵ$index_1428_r51 === ɵ$count_1428_r52 - 1 ? "" : ", ", " ");
1896
1897
  } }
1897
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
1898
- i0.ɵɵelementStart(0, "div", 310)(1, "span", 285);
1898
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
1899
+ i0.ɵɵelementStart(0, "div", 311)(1, "span", 286);
1899
1900
  i0.ɵɵtext(2, "Sibling Types");
1900
1901
  i0.ɵɵelementEnd();
1901
- i0.ɵɵelementStart(3, "span", 286);
1902
- i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_19_For_5_Template, 3, 2, null, null, _forTrack0);
1902
+ i0.ɵɵelementStart(3, "span", 287);
1903
+ i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_19_For_5_Template, 3, 2, null, null, _forTrack0);
1903
1904
  i0.ɵɵelementEnd()();
1904
1905
  } if (rf & 2) {
1905
1906
  const ctx_r2 = i0.ɵɵnextContext(4);
1906
1907
  i0.ɵɵadvance(4);
1907
1908
  i0.ɵɵrepeater(ctx_r2.SiblingEntities);
1908
1909
  } }
1909
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_24_Template(rf, ctx) { if (rf & 1) {
1910
- i0.ɵɵelement(0, "i", 317);
1910
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_24_Template(rf, ctx) { if (rf & 1) {
1911
+ i0.ɵɵelement(0, "i", 318);
1911
1912
  i0.ɵɵtext(1, " Enforced \u2014 a parent record can only be one child type ");
1912
1913
  } }
1913
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_25_Template(rf, ctx) { if (rf & 1) {
1914
- i0.ɵɵelementStart(0, "span", 312);
1914
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_25_Template(rf, ctx) { if (rf & 1) {
1915
+ i0.ɵɵelementStart(0, "span", 313);
1915
1916
  i0.ɵɵtext(1, "N/A");
1916
1917
  i0.ɵɵelementEnd();
1917
1918
  } }
1918
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1919
- i0.ɵɵelementStart(0, "div", 296)(1, "h3", 70);
1920
- i0.ɵɵelement(2, "i", 49);
1919
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1920
+ i0.ɵɵelementStart(0, "div", 297)(1, "h3", 71);
1921
+ i0.ɵɵelement(2, "i", 50);
1921
1922
  i0.ɵɵtext(3, " Type Relationship (IS-A) ");
1922
1923
  i0.ɵɵelementEnd();
1923
- i0.ɵɵelementStart(4, "div", 283)(5, "div", 310)(6, "span", 285);
1924
+ i0.ɵɵelementStart(4, "div", 284)(5, "div", 311)(6, "span", 286);
1924
1925
  i0.ɵɵtext(7, "Virtual Entity");
1925
1926
  i0.ɵɵelementEnd();
1926
- i0.ɵɵelementStart(8, "span", 286);
1927
- 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);
1927
+ i0.ɵɵelementStart(8, "span", 287);
1928
+ i0.ɵɵconditionalCreate(9, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_9_Template, 2, 0)(10, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_10_Template, 2, 0);
1928
1929
  i0.ɵɵelementEnd()();
1929
- i0.ɵɵelementStart(11, "div", 310)(12, "span", 285);
1930
+ i0.ɵɵelementStart(11, "div", 311)(12, "span", 286);
1930
1931
  i0.ɵɵtext(13, "Parent Entity");
1931
1932
  i0.ɵɵelementEnd();
1932
- i0.ɵɵelementStart(14, "span", 286);
1933
- i0.ɵɵconditionalCreate(15, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_15_Template, 3, 1, "span", 311)(16, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_16_Template, 2, 0, "span", 312);
1933
+ i0.ɵɵelementStart(14, "span", 287);
1934
+ i0.ɵɵconditionalCreate(15, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_15_Template, 3, 1, "span", 312)(16, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_16_Template, 2, 0, "span", 313);
1934
1935
  i0.ɵɵelementEnd()();
1935
- i0.ɵɵconditionalCreate(17, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_17_Template, 10, 3);
1936
- i0.ɵɵconditionalCreate(18, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_18_Template, 6, 0, "div", 310);
1937
- i0.ɵɵconditionalCreate(19, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Conditional_19_Template, 6, 0, "div", 310);
1938
- i0.ɵɵelementStart(20, "div", 310)(21, "span", 285);
1936
+ i0.ɵɵconditionalCreate(17, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_17_Template, 10, 3);
1937
+ i0.ɵɵconditionalCreate(18, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_18_Template, 6, 0, "div", 311);
1938
+ i0.ɵɵconditionalCreate(19, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_19_Template, 6, 0, "div", 311);
1939
+ i0.ɵɵelementStart(20, "div", 311)(21, "span", 286);
1939
1940
  i0.ɵɵtext(22, "Disjoint Subtypes");
1940
1941
  i0.ɵɵelementEnd();
1941
- i0.ɵɵelementStart(23, "span", 286);
1942
- 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", 312);
1942
+ i0.ɵɵelementStart(23, "span", 287);
1943
+ i0.ɵɵconditionalCreate(24, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_24_Template, 2, 0)(25, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Conditional_25_Template, 2, 0, "span", 313);
1943
1944
  i0.ɵɵelementEnd()()()();
1944
1945
  } if (rf & 2) {
1945
1946
  const ctx_r2 = i0.ɵɵnextContext(3);
@@ -1956,9 +1957,9 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_
1956
1957
  i0.ɵɵadvance(5);
1957
1958
  i0.ɵɵconditional(ctx_r2.IsParentType || ctx_r2.IsChildType ? 24 : 25);
1958
1959
  } }
1959
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_7_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1960
- i0.ɵɵelementStart(0, "div", 320);
1961
- i0.ɵɵelement(1, "mj-code-editor", 323);
1960
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_7_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1961
+ i0.ɵɵelementStart(0, "div", 321);
1962
+ i0.ɵɵelement(1, "mj-code-editor", 324);
1962
1963
  i0.ɵɵelementEnd();
1963
1964
  } if (rf & 2) {
1964
1965
  const setting_r53 = i0.ɵɵnextContext().$implicit;
@@ -1966,8 +1967,8 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_
1966
1967
  i0.ɵɵadvance();
1967
1968
  i0.ɵɵproperty("value", ctx_r2.formatJsonValue(setting_r53.Value))("readonly", true)("lineWrapping", true);
1968
1969
  } }
1969
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_7_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1970
- i0.ɵɵelementStart(0, "div", 321);
1970
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_7_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1971
+ i0.ɵɵelementStart(0, "div", 322);
1971
1972
  i0.ɵɵtext(1);
1972
1973
  i0.ɵɵelementEnd();
1973
1974
  } if (rf & 2) {
@@ -1975,8 +1976,8 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_
1975
1976
  i0.ɵɵadvance();
1976
1977
  i0.ɵɵtextInterpolate(setting_r53.Value);
1977
1978
  } }
1978
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_7_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1979
- i0.ɵɵelementStart(0, "div", 322);
1979
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_7_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1980
+ i0.ɵɵelementStart(0, "div", 323);
1980
1981
  i0.ɵɵtext(1);
1981
1982
  i0.ɵɵelementEnd();
1982
1983
  } if (rf & 2) {
@@ -1984,12 +1985,12 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_
1984
1985
  i0.ɵɵadvance();
1985
1986
  i0.ɵɵtextInterpolate(setting_r53.Comments);
1986
1987
  } }
1987
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
1988
- i0.ɵɵelementStart(0, "div", 318)(1, "div", 319);
1988
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
1989
+ i0.ɵɵelementStart(0, "div", 319)(1, "div", 320);
1989
1990
  i0.ɵɵtext(2);
1990
1991
  i0.ɵɵelementEnd();
1991
- i0.ɵɵconditionalCreate(3, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_7_For_2_Conditional_3_Template, 2, 3, "div", 320)(4, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_7_For_2_Conditional_4_Template, 2, 1, "div", 321);
1992
- i0.ɵɵconditionalCreate(5, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_7_For_2_Conditional_5_Template, 2, 1, "div", 322);
1992
+ i0.ɵɵconditionalCreate(3, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_7_For_2_Conditional_3_Template, 2, 3, "div", 321)(4, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_7_For_2_Conditional_4_Template, 2, 1, "div", 322);
1993
+ i0.ɵɵconditionalCreate(5, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_7_For_2_Conditional_5_Template, 2, 1, "div", 323);
1993
1994
  i0.ɵɵelementEnd();
1994
1995
  } if (rf & 2) {
1995
1996
  const setting_r53 = ctx.$implicit;
@@ -2001,23 +2002,23 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_
2001
2002
  i0.ɵɵadvance(2);
2002
2003
  i0.ɵɵconditional(setting_r53.Comments ? 5 : -1);
2003
2004
  } }
2004
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_7_Template(rf, ctx) { if (rf & 1) {
2005
- i0.ɵɵelementStart(0, "div", 299);
2006
- i0.ɵɵrepeaterCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_7_For_2_Template, 6, 3, "div", 318, i0.ɵɵrepeaterTrackByIdentity);
2005
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_7_Template(rf, ctx) { if (rf & 1) {
2006
+ i0.ɵɵelementStart(0, "div", 300);
2007
+ i0.ɵɵrepeaterCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_7_For_2_Template, 6, 3, "div", 319, i0.ɵɵrepeaterTrackByIdentity);
2007
2008
  i0.ɵɵelementEnd();
2008
2009
  } if (rf & 2) {
2009
2010
  const ctx_r2 = i0.ɵɵnextContext(3);
2010
2011
  i0.ɵɵadvance();
2011
2012
  i0.ɵɵrepeater(ctx_r2.entity.Settings);
2012
2013
  } }
2013
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_8_Template(rf, ctx) { if (rf & 1) {
2014
- i0.ɵɵelement(0, "mj-empty-state", 300);
2014
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_8_Template(rf, ctx) { if (rf & 1) {
2015
+ i0.ɵɵelement(0, "mj-empty-state", 301);
2015
2016
  } }
2016
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_13_Conditional_7_Template(rf, ctx) { if (rf & 1) {
2017
- i0.ɵɵelementStart(0, "div", 310)(1, "span", 285);
2017
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_13_Conditional_7_Template(rf, ctx) { if (rf & 1) {
2018
+ i0.ɵɵelementStart(0, "div", 311)(1, "span", 286);
2018
2019
  i0.ɵɵtext(2, "Catalog");
2019
2020
  i0.ɵɵelementEnd();
2020
- i0.ɵɵelementStart(3, "span", 326);
2021
+ i0.ɵɵelementStart(3, "span", 327);
2021
2022
  i0.ɵɵtext(4);
2022
2023
  i0.ɵɵelementEnd()();
2023
2024
  } if (rf & 2) {
@@ -2025,11 +2026,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_
2025
2026
  i0.ɵɵadvance(4);
2026
2027
  i0.ɵɵtextInterpolate(ctx_r2.entity.FullTextCatalog);
2027
2028
  } }
2028
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_13_Conditional_8_Template(rf, ctx) { if (rf & 1) {
2029
- i0.ɵɵelementStart(0, "div", 310)(1, "span", 285);
2029
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_13_Conditional_8_Template(rf, ctx) { if (rf & 1) {
2030
+ i0.ɵɵelementStart(0, "div", 311)(1, "span", 286);
2030
2031
  i0.ɵɵtext(2, "Index");
2031
2032
  i0.ɵɵelementEnd();
2032
- i0.ɵɵelementStart(3, "span", 326);
2033
+ i0.ɵɵelementStart(3, "span", 327);
2033
2034
  i0.ɵɵtext(4);
2034
2035
  i0.ɵɵelementEnd()();
2035
2036
  } if (rf & 2) {
@@ -2037,11 +2038,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_
2037
2038
  i0.ɵɵadvance(4);
2038
2039
  i0.ɵɵtextInterpolate(ctx_r2.entity.FullTextIndex);
2039
2040
  } }
2040
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_13_Conditional_9_Template(rf, ctx) { if (rf & 1) {
2041
- i0.ɵɵelementStart(0, "div", 310)(1, "span", 285);
2041
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_13_Conditional_9_Template(rf, ctx) { if (rf & 1) {
2042
+ i0.ɵɵelementStart(0, "div", 311)(1, "span", 286);
2042
2043
  i0.ɵɵtext(2, "Function");
2043
2044
  i0.ɵɵelementEnd();
2044
- i0.ɵɵelementStart(3, "span", 326);
2045
+ i0.ɵɵelementStart(3, "span", 327);
2045
2046
  i0.ɵɵtext(4);
2046
2047
  i0.ɵɵelementEnd()();
2047
2048
  } if (rf & 2) {
@@ -2049,17 +2050,17 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_
2049
2050
  i0.ɵɵadvance(4);
2050
2051
  i0.ɵɵtextInterpolate(ctx_r2.entity.FullTextSearchFunction);
2051
2052
  } }
2052
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_13_Template(rf, ctx) { if (rf & 1) {
2053
- i0.ɵɵelementStart(0, "div", 302)(1, "div", 310)(2, "span", 285);
2053
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_13_Template(rf, ctx) { if (rf & 1) {
2054
+ i0.ɵɵelementStart(0, "div", 303)(1, "div", 311)(2, "span", 286);
2054
2055
  i0.ɵɵtext(3, "Status");
2055
2056
  i0.ɵɵelementEnd();
2056
- i0.ɵɵelementStart(4, "span", 324);
2057
- i0.ɵɵelement(5, "i", 325);
2057
+ i0.ɵɵelementStart(4, "span", 325);
2058
+ i0.ɵɵelement(5, "i", 326);
2058
2059
  i0.ɵɵtext(6, " Enabled ");
2059
2060
  i0.ɵɵelementEnd()();
2060
- i0.ɵɵconditionalCreate(7, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_13_Conditional_7_Template, 5, 1, "div", 310);
2061
- i0.ɵɵconditionalCreate(8, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_13_Conditional_8_Template, 5, 1, "div", 310);
2062
- i0.ɵɵconditionalCreate(9, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_13_Conditional_9_Template, 5, 1, "div", 310);
2061
+ i0.ɵɵconditionalCreate(7, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_13_Conditional_7_Template, 5, 1, "div", 311);
2062
+ i0.ɵɵconditionalCreate(8, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_13_Conditional_8_Template, 5, 1, "div", 311);
2063
+ i0.ɵɵconditionalCreate(9, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_13_Conditional_9_Template, 5, 1, "div", 311);
2063
2064
  i0.ɵɵelementEnd();
2064
2065
  } if (rf & 2) {
2065
2066
  const ctx_r2 = i0.ɵɵnextContext(3);
@@ -2070,26 +2071,26 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_
2070
2071
  i0.ɵɵadvance();
2071
2072
  i0.ɵɵconditional(ctx_r2.entity.FullTextSearchFunction ? 9 : -1);
2072
2073
  } }
2073
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_14_Template(rf, ctx) { if (rf & 1) {
2074
- i0.ɵɵelement(0, "mj-empty-state", 303);
2074
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_14_Template(rf, ctx) { if (rf & 1) {
2075
+ i0.ɵɵelement(0, "mj-empty-state", 304);
2075
2076
  } }
2076
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_25_Conditional_1_Template(rf, ctx) { if (rf & 1) {
2077
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_25_Conditional_1_Template(rf, ctx) { if (rf & 1) {
2077
2078
  const _r54 = i0.ɵɵgetCurrentView();
2078
- i0.ɵɵelementStart(0, "button", 328);
2079
- i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_25_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r54); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.StartEditMode()); });
2080
- i0.ɵɵelement(1, "i", 329);
2079
+ i0.ɵɵelementStart(0, "button", 329);
2080
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_25_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r54); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.StartEditMode()); });
2081
+ i0.ɵɵelement(1, "i", 330);
2081
2082
  i0.ɵɵtext(2, " Edit ");
2082
2083
  i0.ɵɵelementEnd();
2083
2084
  } }
2084
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_25_Conditional_2_Template(rf, ctx) { if (rf & 1) {
2085
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_25_Conditional_2_Template(rf, ctx) { if (rf & 1) {
2085
2086
  const _r55 = i0.ɵɵgetCurrentView();
2086
- i0.ɵɵelementStart(0, "button", 330);
2087
- i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_25_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r55); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.SaveCloneConfig()); });
2088
- i0.ɵɵelement(1, "i", 331);
2087
+ i0.ɵɵelementStart(0, "button", 331);
2088
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_25_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r55); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.SaveCloneConfig()); });
2089
+ i0.ɵɵelement(1, "i", 332);
2089
2090
  i0.ɵɵtext(2, " Save ");
2090
2091
  i0.ɵɵelementEnd();
2091
- i0.ɵɵelementStart(3, "button", 332);
2092
- i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_25_Conditional_2_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r55); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.CancelEdit()); });
2092
+ i0.ɵɵelementStart(3, "button", 333);
2093
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_25_Conditional_2_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r55); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.CancelEdit()); });
2093
2094
  i0.ɵɵtext(4, "Cancel");
2094
2095
  i0.ɵɵelementEnd();
2095
2096
  } if (rf & 2) {
@@ -2098,17 +2099,17 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_
2098
2099
  i0.ɵɵadvance(3);
2099
2100
  i0.ɵɵproperty("disabled", ctx_r2.IsSavingCloneConfig);
2100
2101
  } }
2101
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_25_Template(rf, ctx) { if (rf & 1) {
2102
- i0.ɵɵelementStart(0, "div", 306);
2103
- i0.ɵɵconditionalCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_25_Conditional_1_Template, 3, 0, "button", 327)(2, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_25_Conditional_2_Template, 5, 2);
2102
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_25_Template(rf, ctx) { if (rf & 1) {
2103
+ i0.ɵɵelementStart(0, "div", 307);
2104
+ i0.ɵɵconditionalCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_25_Conditional_1_Template, 3, 0, "button", 328)(2, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_25_Conditional_2_Template, 5, 2);
2104
2105
  i0.ɵɵelementEnd();
2105
2106
  } if (rf & 2) {
2106
2107
  const ctx_r2 = i0.ɵɵnextContext(3);
2107
2108
  i0.ɵɵadvance();
2108
2109
  i0.ɵɵconditional(!ctx_r2.EditMode ? 1 : 2);
2109
2110
  } }
2110
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_26_Template(rf, ctx) { if (rf & 1) {
2111
- i0.ɵɵelementStart(0, "p", 307);
2111
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_26_Template(rf, ctx) { if (rf & 1) {
2112
+ i0.ɵɵelementStart(0, "p", 308);
2112
2113
  i0.ɵɵtext(1);
2113
2114
  i0.ɵɵelementEnd();
2114
2115
  } if (rf & 2) {
@@ -2116,11 +2117,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_
2116
2117
  i0.ɵɵadvance();
2117
2118
  i0.ɵɵtextInterpolate(ctx_r2.CloneConfigSaveError);
2118
2119
  } }
2119
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_38_Template(rf, ctx) { if (rf & 1) {
2120
- i0.ɵɵelementStart(0, "div", 310)(1, "span", 285);
2120
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_38_Template(rf, ctx) { if (rf & 1) {
2121
+ i0.ɵɵelementStart(0, "div", 311)(1, "span", 286);
2121
2122
  i0.ɵɵtext(2, "Sample Count");
2122
2123
  i0.ɵɵelementEnd();
2123
- i0.ɵɵelementStart(3, "span", 286);
2124
+ i0.ɵɵelementStart(3, "span", 287);
2124
2125
  i0.ɵɵtext(4);
2125
2126
  i0.ɵɵelementEnd()();
2126
2127
  } if (rf & 2) {
@@ -2128,11 +2129,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_
2128
2129
  i0.ɵɵadvance(4);
2129
2130
  i0.ɵɵtextInterpolate(ctx_r2.entity.RowsToPackSampleCount);
2130
2131
  } }
2131
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_39_Template(rf, ctx) { if (rf & 1) {
2132
- i0.ɵɵelementStart(0, "div", 310)(1, "span", 285);
2132
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_39_Template(rf, ctx) { if (rf & 1) {
2133
+ i0.ɵɵelementStart(0, "div", 311)(1, "span", 286);
2133
2134
  i0.ɵɵtext(2, "Sample Method");
2134
2135
  i0.ɵɵelementEnd();
2135
- i0.ɵɵelementStart(3, "span", 286);
2136
+ i0.ɵɵelementStart(3, "span", 287);
2136
2137
  i0.ɵɵtext(4);
2137
2138
  i0.ɵɵelementEnd()();
2138
2139
  } if (rf & 2) {
@@ -2140,53 +2141,53 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_
2140
2141
  i0.ɵɵadvance(4);
2141
2142
  i0.ɵɵtextInterpolate(ctx_r2.entity.RowsToPackSampleMethod);
2142
2143
  } }
2143
- function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Template(rf, ctx) { if (rf & 1) {
2144
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Template(rf, ctx) { if (rf & 1) {
2144
2145
  const _r43 = i0.ɵɵgetCurrentView();
2145
- i0.ɵɵelementStart(0, "section", 36)(1, "div", 54);
2146
- i0.ɵɵconditionalCreate(2, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Template, 26, 6, "div", 296);
2147
- i0.ɵɵelementStart(3, "div", 297)(4, "h3", 70);
2148
- i0.ɵɵelement(5, "i", 298);
2146
+ i0.ɵɵelementStart(0, "section", 37)(1, "div", 55);
2147
+ i0.ɵɵconditionalCreate(2, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_2_Template, 26, 6, "div", 297);
2148
+ i0.ɵɵelementStart(3, "div", 298)(4, "h3", 71);
2149
+ i0.ɵɵelement(5, "i", 299);
2149
2150
  i0.ɵɵtext(6, " Entity Settings ");
2150
2151
  i0.ɵɵelementEnd();
2151
- i0.ɵɵconditionalCreate(7, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_7_Template, 3, 0, "div", 299);
2152
- i0.ɵɵconditionalCreate(8, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_8_Template, 1, 0, "mj-empty-state", 300);
2152
+ i0.ɵɵconditionalCreate(7, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_7_Template, 3, 0, "div", 300);
2153
+ i0.ɵɵconditionalCreate(8, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_8_Template, 1, 0, "mj-empty-state", 301);
2153
2154
  i0.ɵɵelementEnd();
2154
- i0.ɵɵelementStart(9, "div", 297)(10, "h3", 70);
2155
- i0.ɵɵelement(11, "i", 301);
2155
+ i0.ɵɵelementStart(9, "div", 298)(10, "h3", 71);
2156
+ i0.ɵɵelement(11, "i", 302);
2156
2157
  i0.ɵɵtext(12, " Full-Text Search ");
2157
2158
  i0.ɵɵelementEnd();
2158
- i0.ɵɵconditionalCreate(13, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_13_Template, 10, 3, "div", 302);
2159
- i0.ɵɵconditionalCreate(14, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_14_Template, 1, 0, "mj-empty-state", 303);
2159
+ i0.ɵɵconditionalCreate(13, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_13_Template, 10, 3, "div", 303);
2160
+ i0.ɵɵconditionalCreate(14, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_14_Template, 1, 0, "mj-empty-state", 304);
2160
2161
  i0.ɵɵelementEnd();
2161
- i0.ɵɵelementStart(15, "div", 297)(16, "h3", 70);
2162
+ i0.ɵɵelementStart(15, "div", 298)(16, "h3", 71);
2162
2163
  i0.ɵɵelement(17, "i", 17);
2163
2164
  i0.ɵɵtext(18, " Form chrome ");
2164
2165
  i0.ɵɵelementEnd();
2165
- i0.ɵɵelementStart(19, "mj-entity-form-chrome-editor", 304);
2166
- i0.ɵɵlistener("FormConfigChange", function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Template_mj_entity_form_chrome_editor_FormConfigChange_19_listener($event) { i0.ɵɵrestoreView(_r43); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnFormChromeConfigChange($event)); });
2166
+ i0.ɵɵelementStart(19, "mj-entity-form-chrome-editor", 305);
2167
+ i0.ɵɵlistener("FormConfigChange", function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Template_mj_entity_form_chrome_editor_FormConfigChange_19_listener($event) { i0.ɵɵrestoreView(_r43); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnFormChromeConfigChange($event)); });
2167
2168
  i0.ɵɵelementEnd()();
2168
- i0.ɵɵelementStart(20, "div", 297)(21, "div", 305)(22, "h3", 70);
2169
- i0.ɵɵelement(23, "i", 48);
2169
+ i0.ɵɵelementStart(20, "div", 298)(21, "div", 306)(22, "h3", 71);
2170
+ i0.ɵɵelement(23, "i", 49);
2170
2171
  i0.ɵɵtext(24, " Record cloning ");
2171
2172
  i0.ɵɵelementEnd();
2172
- i0.ɵɵconditionalCreate(25, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_25_Template, 3, 1, "div", 306);
2173
+ i0.ɵɵconditionalCreate(25, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_25_Template, 3, 1, "div", 307);
2173
2174
  i0.ɵɵelementEnd();
2174
- i0.ɵɵconditionalCreate(26, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_26_Template, 2, 1, "p", 307);
2175
- i0.ɵɵelementStart(27, "mj-entity-clone-config-editor", 308);
2176
- i0.ɵɵlistener("CloneConfigChange", function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Template_mj_entity_clone_config_editor_CloneConfigChange_27_listener($event) { i0.ɵɵrestoreView(_r43); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnCloneConfigChange($event)); });
2175
+ i0.ɵɵconditionalCreate(26, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_26_Template, 2, 1, "p", 308);
2176
+ i0.ɵɵelementStart(27, "mj-entity-clone-config-editor", 309);
2177
+ i0.ɵɵlistener("CloneConfigChange", function MJEntityFormComponentExtended_Conditional_0_Conditional_60_Template_mj_entity_clone_config_editor_CloneConfigChange_27_listener($event) { i0.ɵɵrestoreView(_r43); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnCloneConfigChange($event)); });
2177
2178
  i0.ɵɵelementEnd()();
2178
- i0.ɵɵelementStart(28, "div", 297)(29, "h3", 70);
2179
- i0.ɵɵelement(30, "i", 309);
2179
+ i0.ɵɵelementStart(28, "div", 298)(29, "h3", 71);
2180
+ i0.ɵɵelement(30, "i", 310);
2180
2181
  i0.ɵɵtext(31, " Schema Packaging ");
2181
2182
  i0.ɵɵelementEnd();
2182
- i0.ɵɵelementStart(32, "div", 283)(33, "div", 310)(34, "span", 285);
2183
+ i0.ɵɵelementStart(32, "div", 284)(33, "div", 311)(34, "span", 286);
2183
2184
  i0.ɵɵtext(35, "Rows to Pack");
2184
2185
  i0.ɵɵelementEnd();
2185
- i0.ɵɵelementStart(36, "span", 286);
2186
+ i0.ɵɵelementStart(36, "span", 287);
2186
2187
  i0.ɵɵtext(37);
2187
2188
  i0.ɵɵelementEnd()();
2188
- i0.ɵɵconditionalCreate(38, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_38_Template, 5, 1, "div", 310);
2189
- i0.ɵɵconditionalCreate(39, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Conditional_39_Template, 5, 1, "div", 310);
2189
+ i0.ɵɵconditionalCreate(38, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_38_Template, 5, 1, "div", 311);
2190
+ i0.ɵɵconditionalCreate(39, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Conditional_39_Template, 5, 1, "div", 311);
2190
2191
  i0.ɵɵelementEnd()()()();
2191
2192
  } if (rf & 2) {
2192
2193
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -2215,18 +2216,18 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_59_Template(rf,
2215
2216
  i0.ɵɵadvance();
2216
2217
  i0.ɵɵconditional(ctx_r2.entity.RowsToPackSampleMethod ? 39 : -1);
2217
2218
  } }
2218
- function MJEntityFormComponentExtended_Conditional_0_Conditional_62_Template(rf, ctx) { if (rf & 1) {
2219
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_63_Template(rf, ctx) { if (rf & 1) {
2219
2220
  i0.ɵɵelementStart(0, "h3");
2220
2221
  i0.ɵɵtext(1, "Field Details");
2221
2222
  i0.ɵɵelementEnd();
2222
2223
  } }
2223
- function MJEntityFormComponentExtended_Conditional_0_Conditional_63_Template(rf, ctx) { if (rf & 1) {
2224
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_64_Template(rf, ctx) { if (rf & 1) {
2224
2225
  i0.ɵɵelementStart(0, "h3");
2225
2226
  i0.ɵɵtext(1, "Relationship Details");
2226
2227
  i0.ɵɵelementEnd();
2227
2228
  } }
2228
- function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_6_Template(rf, ctx) { if (rf & 1) {
2229
- i0.ɵɵelementStart(0, "p", 335);
2229
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_67_Conditional_6_Template(rf, ctx) { if (rf & 1) {
2230
+ i0.ɵɵelementStart(0, "p", 336);
2230
2231
  i0.ɵɵtext(1);
2231
2232
  i0.ɵɵelementEnd();
2232
2233
  } if (rf & 2) {
@@ -2234,11 +2235,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_
2234
2235
  i0.ɵɵadvance();
2235
2236
  i0.ɵɵtextInterpolate(ctx_r2.selectedField.Description);
2236
2237
  } }
2237
- function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_26_Template(rf, ctx) { if (rf & 1) {
2238
- i0.ɵɵelementStart(0, "div", 337)(1, "span", 338);
2238
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_67_Conditional_26_Template(rf, ctx) { if (rf & 1) {
2239
+ i0.ɵɵelementStart(0, "div", 338)(1, "span", 339);
2239
2240
  i0.ɵɵtext(2, "Default");
2240
2241
  i0.ɵɵelementEnd();
2241
- i0.ɵɵelementStart(3, "span", 339);
2242
+ i0.ɵɵelementStart(3, "span", 340);
2242
2243
  i0.ɵɵtext(4);
2243
2244
  i0.ɵɵelementEnd()();
2244
2245
  } if (rf & 2) {
@@ -2246,24 +2247,24 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_
2246
2247
  i0.ɵɵadvance(4);
2247
2248
  i0.ɵɵtextInterpolate(ctx_r2.selectedField.DefaultValue);
2248
2249
  } }
2249
- function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_27_Template(rf, ctx) { if (rf & 1) {
2250
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_67_Conditional_27_Template(rf, ctx) { if (rf & 1) {
2250
2251
  const _r56 = i0.ɵɵgetCurrentView();
2251
- i0.ɵɵelementStart(0, "div", 341)(1, "h5");
2252
- i0.ɵɵelement(2, "i", 44);
2252
+ i0.ɵɵelementStart(0, "div", 342)(1, "h5");
2253
+ i0.ɵɵelement(2, "i", 45);
2253
2254
  i0.ɵɵtext(3, " IS-A Inherited Field ");
2254
2255
  i0.ɵɵelementEnd();
2255
- i0.ɵɵelementStart(4, "div", 336)(5, "div", 337)(6, "span", 338);
2256
+ i0.ɵɵelementStart(4, "div", 337)(5, "div", 338)(6, "span", 339);
2256
2257
  i0.ɵɵtext(7, "Source Entity");
2257
2258
  i0.ɵɵelementEnd();
2258
- i0.ɵɵelementStart(8, "span", 342);
2259
- i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_27_Template_span_click_8_listener() { i0.ɵɵrestoreView(_r56); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.NavigateToEntity(ctx_r2.ParentChain[0])); });
2259
+ i0.ɵɵelementStart(8, "span", 343);
2260
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_67_Conditional_27_Template_span_click_8_listener() { i0.ɵɵrestoreView(_r56); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.NavigateToEntity(ctx_r2.ParentChain[0])); });
2260
2261
  i0.ɵɵtext(9);
2261
- i0.ɵɵelement(10, "i", 63);
2262
+ i0.ɵɵelement(10, "i", 64);
2262
2263
  i0.ɵɵelementEnd()();
2263
- i0.ɵɵelementStart(11, "div", 337)(12, "span", 338);
2264
+ i0.ɵɵelementStart(11, "div", 338)(12, "span", 339);
2264
2265
  i0.ɵɵtext(13, "Routing");
2265
2266
  i0.ɵɵelementEnd();
2266
- i0.ɵɵelementStart(14, "span", 340);
2267
+ i0.ɵɵelementStart(14, "span", 341);
2267
2268
  i0.ɵɵtext(15, "ORM routes Set/Get to parent");
2268
2269
  i0.ɵɵelementEnd()()()();
2269
2270
  } if (rf & 2) {
@@ -2271,23 +2272,23 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_
2271
2272
  i0.ɵɵadvance(9);
2272
2273
  i0.ɵɵtextInterpolate1(" ", ctx_r2.GetISAFieldSource(ctx_r2.selectedField), " ");
2273
2274
  } }
2274
- function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_28_Template(rf, ctx) { if (rf & 1) {
2275
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_67_Conditional_28_Template(rf, ctx) { if (rf & 1) {
2275
2276
  const _r57 = i0.ɵɵgetCurrentView();
2276
- i0.ɵɵelementStart(0, "div", 333)(1, "h5");
2277
+ i0.ɵɵelementStart(0, "div", 334)(1, "h5");
2277
2278
  i0.ɵɵtext(2, "Relationship");
2278
2279
  i0.ɵɵelementEnd();
2279
- i0.ɵɵelementStart(3, "div", 336)(4, "div", 337)(5, "span", 338);
2280
+ i0.ɵɵelementStart(3, "div", 337)(4, "div", 338)(5, "span", 339);
2280
2281
  i0.ɵɵtext(6, "Related Entity");
2281
2282
  i0.ɵɵelementEnd();
2282
- i0.ɵɵelementStart(7, "span", 343);
2283
- i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_28_Template_span_click_7_listener() { i0.ɵɵrestoreView(_r57); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.navigateToRelatedEntity(ctx_r2.selectedField)); });
2283
+ i0.ɵɵelementStart(7, "span", 344);
2284
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Conditional_67_Conditional_28_Template_span_click_7_listener() { i0.ɵɵrestoreView(_r57); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.navigateToRelatedEntity(ctx_r2.selectedField)); });
2284
2285
  i0.ɵɵtext(8);
2285
- i0.ɵɵelement(9, "i", 63);
2286
+ i0.ɵɵelement(9, "i", 64);
2286
2287
  i0.ɵɵelementEnd()();
2287
- i0.ɵɵelementStart(10, "div", 337)(11, "span", 338);
2288
+ i0.ɵɵelementStart(10, "div", 338)(11, "span", 339);
2288
2289
  i0.ɵɵtext(12, "Display Type");
2289
2290
  i0.ɵɵelementEnd();
2290
- i0.ɵɵelementStart(13, "span", 340);
2291
+ i0.ɵɵelementStart(13, "span", 341);
2291
2292
  i0.ɵɵtext(14);
2292
2293
  i0.ɵɵelementEnd()()()();
2293
2294
  } if (rf & 2) {
@@ -2297,20 +2298,20 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_
2297
2298
  i0.ɵɵadvance(6);
2298
2299
  i0.ɵɵtextInterpolate(ctx_r2.selectedField.RelatedEntityDisplayType);
2299
2300
  } }
2300
- function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_29_Template(rf, ctx) { if (rf & 1) {
2301
- i0.ɵɵelementStart(0, "div", 333)(1, "h5");
2301
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_67_Conditional_29_Template(rf, ctx) { if (rf & 1) {
2302
+ i0.ɵɵelementStart(0, "div", 334)(1, "h5");
2302
2303
  i0.ɵɵtext(2, "Encryption");
2303
2304
  i0.ɵɵelementEnd();
2304
- i0.ɵɵelementStart(3, "div", 336)(4, "div", 337)(5, "span", 338);
2305
+ i0.ɵɵelementStart(3, "div", 337)(4, "div", 338)(5, "span", 339);
2305
2306
  i0.ɵɵtext(6, "Encrypted");
2306
2307
  i0.ɵɵelementEnd();
2307
- i0.ɵɵelementStart(7, "span", 340);
2308
+ i0.ɵɵelementStart(7, "span", 341);
2308
2309
  i0.ɵɵtext(8, "Yes");
2309
2310
  i0.ɵɵelementEnd()();
2310
- i0.ɵɵelementStart(9, "div", 337)(10, "span", 338);
2311
+ i0.ɵɵelementStart(9, "div", 338)(10, "span", 339);
2311
2312
  i0.ɵɵtext(11, "Decrypt in API");
2312
2313
  i0.ɵɵelementEnd();
2313
- i0.ɵɵelementStart(12, "span", 340);
2314
+ i0.ɵɵelementStart(12, "span", 341);
2314
2315
  i0.ɵɵtext(13);
2315
2316
  i0.ɵɵelementEnd()()()();
2316
2317
  } if (rf & 2) {
@@ -2318,11 +2319,11 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_
2318
2319
  i0.ɵɵadvance(13);
2319
2320
  i0.ɵɵtextInterpolate(ctx_r2.selectedField.AllowDecryptInAPI ? "Yes" : "No");
2320
2321
  } }
2321
- function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_63_Template(rf, ctx) { if (rf & 1) {
2322
- i0.ɵɵelementStart(0, "div", 337)(1, "span", 338);
2322
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_67_Conditional_63_Template(rf, ctx) { if (rf & 1) {
2323
+ i0.ɵɵelementStart(0, "div", 338)(1, "span", 339);
2323
2324
  i0.ɵɵtext(2, "Category");
2324
2325
  i0.ɵɵelementEnd();
2325
- i0.ɵɵelementStart(3, "span", 340);
2326
+ i0.ɵɵelementStart(3, "span", 341);
2326
2327
  i0.ɵɵtext(4);
2327
2328
  i0.ɵɵelementEnd()();
2328
2329
  } if (rf & 2) {
@@ -2330,8 +2331,8 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_
2330
2331
  i0.ɵɵadvance(4);
2331
2332
  i0.ɵɵtextInterpolate(ctx_r2.selectedField.Category);
2332
2333
  } }
2333
- function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_69_For_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
2334
- i0.ɵɵelementStart(0, "span", 346);
2334
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_67_Conditional_69_For_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
2335
+ i0.ɵɵelementStart(0, "span", 347);
2335
2336
  i0.ɵɵtext(1);
2336
2337
  i0.ɵɵelementEnd();
2337
2338
  } if (rf & 2) {
@@ -2339,10 +2340,10 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_
2339
2340
  i0.ɵɵadvance();
2340
2341
  i0.ɵɵtextInterpolate(val_r58.Code);
2341
2342
  } }
2342
- function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_69_For_5_Template(rf, ctx) { if (rf & 1) {
2343
- i0.ɵɵelementStart(0, "div", 345);
2344
- i0.ɵɵconditionalCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_69_For_5_Conditional_1_Template, 2, 1, "span", 346);
2345
- i0.ɵɵelementStart(2, "span", 347);
2343
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_67_Conditional_69_For_5_Template(rf, ctx) { if (rf & 1) {
2344
+ i0.ɵɵelementStart(0, "div", 346);
2345
+ i0.ɵɵconditionalCreate(1, MJEntityFormComponentExtended_Conditional_0_Conditional_67_Conditional_69_For_5_Conditional_1_Template, 2, 1, "span", 347);
2346
+ i0.ɵɵelementStart(2, "span", 348);
2346
2347
  i0.ɵɵtext(3);
2347
2348
  i0.ɵɵelementEnd()();
2348
2349
  } if (rf & 2) {
@@ -2352,97 +2353,97 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_
2352
2353
  i0.ɵɵadvance(2);
2353
2354
  i0.ɵɵtextInterpolate(val_r58.Value);
2354
2355
  } }
2355
- function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_69_Template(rf, ctx) { if (rf & 1) {
2356
- i0.ɵɵelementStart(0, "div", 333)(1, "h5");
2356
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_67_Conditional_69_Template(rf, ctx) { if (rf & 1) {
2357
+ i0.ɵɵelementStart(0, "div", 334)(1, "h5");
2357
2358
  i0.ɵɵtext(2, "Allowed Values");
2358
2359
  i0.ɵɵelementEnd();
2359
- i0.ɵɵelementStart(3, "div", 344);
2360
- i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_69_For_5_Template, 4, 2, "div", 345, i0.ɵɵrepeaterTrackByIdentity);
2360
+ i0.ɵɵelementStart(3, "div", 345);
2361
+ i0.ɵɵrepeaterCreate(4, MJEntityFormComponentExtended_Conditional_0_Conditional_67_Conditional_69_For_5_Template, 4, 2, "div", 346, i0.ɵɵrepeaterTrackByIdentity);
2361
2362
  i0.ɵɵelementEnd()();
2362
2363
  } if (rf & 2) {
2363
2364
  const ctx_r2 = i0.ɵɵnextContext(3);
2364
2365
  i0.ɵɵadvance(4);
2365
2366
  i0.ɵɵrepeater(ctx_r2.selectedField.EntityFieldValues);
2366
2367
  } }
2367
- function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Template(rf, ctx) { if (rf & 1) {
2368
- i0.ɵɵelementStart(0, "div", 41)(1, "div", 333)(2, "h4");
2368
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_67_Template(rf, ctx) { if (rf & 1) {
2369
+ i0.ɵɵelementStart(0, "div", 42)(1, "div", 334)(2, "h4");
2369
2370
  i0.ɵɵtext(3);
2370
2371
  i0.ɵɵelementEnd();
2371
- i0.ɵɵelementStart(4, "div", 334);
2372
+ i0.ɵɵelementStart(4, "div", 335);
2372
2373
  i0.ɵɵtext(5);
2373
2374
  i0.ɵɵelementEnd();
2374
- i0.ɵɵconditionalCreate(6, MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_6_Template, 2, 1, "p", 335);
2375
+ i0.ɵɵconditionalCreate(6, MJEntityFormComponentExtended_Conditional_0_Conditional_67_Conditional_6_Template, 2, 1, "p", 336);
2375
2376
  i0.ɵɵelementEnd();
2376
- i0.ɵɵelementStart(7, "div", 333)(8, "h5");
2377
+ i0.ɵɵelementStart(7, "div", 334)(8, "h5");
2377
2378
  i0.ɵɵtext(9, "Type Information");
2378
2379
  i0.ɵɵelementEnd();
2379
- i0.ɵɵelementStart(10, "div", 336)(11, "div", 337)(12, "span", 338);
2380
+ i0.ɵɵelementStart(10, "div", 337)(11, "div", 338)(12, "span", 339);
2380
2381
  i0.ɵɵtext(13, "SQL Type");
2381
2382
  i0.ɵɵelementEnd();
2382
- i0.ɵɵelementStart(14, "span", 339);
2383
+ i0.ɵɵelementStart(14, "span", 340);
2383
2384
  i0.ɵɵtext(15);
2384
2385
  i0.ɵɵelementEnd()();
2385
- i0.ɵɵelementStart(16, "div", 337)(17, "span", 338);
2386
+ i0.ɵɵelementStart(16, "div", 338)(17, "span", 339);
2386
2387
  i0.ɵɵtext(18, "TypeScript Type");
2387
2388
  i0.ɵɵelementEnd();
2388
- i0.ɵɵelementStart(19, "span", 339);
2389
+ i0.ɵɵelementStart(19, "span", 340);
2389
2390
  i0.ɵɵtext(20);
2390
2391
  i0.ɵɵelementEnd()();
2391
- i0.ɵɵelementStart(21, "div", 337)(22, "span", 338);
2392
+ i0.ɵɵelementStart(21, "div", 338)(22, "span", 339);
2392
2393
  i0.ɵɵtext(23, "Nullable");
2393
2394
  i0.ɵɵelementEnd();
2394
- i0.ɵɵelementStart(24, "span", 340);
2395
+ i0.ɵɵelementStart(24, "span", 341);
2395
2396
  i0.ɵɵtext(25);
2396
2397
  i0.ɵɵelementEnd()();
2397
- i0.ɵɵconditionalCreate(26, MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_26_Template, 5, 1, "div", 337);
2398
+ i0.ɵɵconditionalCreate(26, MJEntityFormComponentExtended_Conditional_0_Conditional_67_Conditional_26_Template, 5, 1, "div", 338);
2398
2399
  i0.ɵɵelementEnd()();
2399
- i0.ɵɵconditionalCreate(27, MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_27_Template, 16, 1, "div", 341);
2400
- i0.ɵɵconditionalCreate(28, MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_28_Template, 15, 2, "div", 333);
2401
- i0.ɵɵconditionalCreate(29, MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_29_Template, 14, 1, "div", 333);
2402
- i0.ɵɵelementStart(30, "div", 333)(31, "h5");
2400
+ i0.ɵɵconditionalCreate(27, MJEntityFormComponentExtended_Conditional_0_Conditional_67_Conditional_27_Template, 16, 1, "div", 342);
2401
+ i0.ɵɵconditionalCreate(28, MJEntityFormComponentExtended_Conditional_0_Conditional_67_Conditional_28_Template, 15, 2, "div", 334);
2402
+ i0.ɵɵconditionalCreate(29, MJEntityFormComponentExtended_Conditional_0_Conditional_67_Conditional_29_Template, 14, 1, "div", 334);
2403
+ i0.ɵɵelementStart(30, "div", 334)(31, "h5");
2403
2404
  i0.ɵɵtext(32, "API Settings");
2404
2405
  i0.ɵɵelementEnd();
2405
- i0.ɵɵelementStart(33, "div", 336)(34, "div", 337)(35, "span", 338);
2406
+ i0.ɵɵelementStart(33, "div", 337)(34, "div", 338)(35, "span", 339);
2406
2407
  i0.ɵɵtext(36, "Allow Update");
2407
2408
  i0.ɵɵelementEnd();
2408
- i0.ɵɵelementStart(37, "span", 340);
2409
+ i0.ɵɵelementStart(37, "span", 341);
2409
2410
  i0.ɵɵtext(38);
2410
2411
  i0.ɵɵelementEnd()();
2411
- i0.ɵɵelementStart(39, "div", 337)(40, "span", 338);
2412
+ i0.ɵɵelementStart(39, "div", 338)(40, "span", 339);
2412
2413
  i0.ɵɵtext(41, "Include in Search");
2413
2414
  i0.ɵɵelementEnd();
2414
- i0.ɵɵelementStart(42, "span", 340);
2415
+ i0.ɵɵelementStart(42, "span", 341);
2415
2416
  i0.ɵɵtext(43);
2416
2417
  i0.ɵɵelementEnd()();
2417
- i0.ɵɵelementStart(44, "div", 337)(45, "span", 338);
2418
+ i0.ɵɵelementStart(44, "div", 338)(45, "span", 339);
2418
2419
  i0.ɵɵtext(46, "Full-Text Search");
2419
2420
  i0.ɵɵelementEnd();
2420
- i0.ɵɵelementStart(47, "span", 340);
2421
+ i0.ɵɵelementStart(47, "span", 341);
2421
2422
  i0.ɵɵtext(48);
2422
2423
  i0.ɵɵelementEnd()()()();
2423
- i0.ɵɵelementStart(49, "div", 333)(50, "h5");
2424
+ i0.ɵɵelementStart(49, "div", 334)(50, "h5");
2424
2425
  i0.ɵɵtext(51, "Form Settings");
2425
2426
  i0.ɵɵelementEnd();
2426
- i0.ɵɵelementStart(52, "div", 336)(53, "div", 337)(54, "span", 338);
2427
+ i0.ɵɵelementStart(52, "div", 337)(53, "div", 338)(54, "span", 339);
2427
2428
  i0.ɵɵtext(55, "Include in Form");
2428
2429
  i0.ɵɵelementEnd();
2429
- i0.ɵɵelementStart(56, "span", 340);
2430
+ i0.ɵɵelementStart(56, "span", 341);
2430
2431
  i0.ɵɵtext(57);
2431
2432
  i0.ɵɵelementEnd()();
2432
- i0.ɵɵelementStart(58, "div", 337)(59, "span", 338);
2433
+ i0.ɵɵelementStart(58, "div", 338)(59, "span", 339);
2433
2434
  i0.ɵɵtext(60, "Section");
2434
2435
  i0.ɵɵelementEnd();
2435
- i0.ɵɵelementStart(61, "span", 340);
2436
+ i0.ɵɵelementStart(61, "span", 341);
2436
2437
  i0.ɵɵtext(62);
2437
2438
  i0.ɵɵelementEnd()();
2438
- i0.ɵɵconditionalCreate(63, MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_63_Template, 5, 1, "div", 337);
2439
- i0.ɵɵelementStart(64, "div", 337)(65, "span", 338);
2439
+ i0.ɵɵconditionalCreate(63, MJEntityFormComponentExtended_Conditional_0_Conditional_67_Conditional_63_Template, 5, 1, "div", 338);
2440
+ i0.ɵɵelementStart(64, "div", 338)(65, "span", 339);
2440
2441
  i0.ɵɵtext(66, "Sequence");
2441
2442
  i0.ɵɵelementEnd();
2442
- i0.ɵɵelementStart(67, "span", 340);
2443
+ i0.ɵɵelementStart(67, "span", 341);
2443
2444
  i0.ɵɵtext(68);
2444
2445
  i0.ɵɵelementEnd()()()();
2445
- i0.ɵɵconditionalCreate(69, MJEntityFormComponentExtended_Conditional_0_Conditional_66_Conditional_69_Template, 6, 0, "div", 333);
2446
+ i0.ɵɵconditionalCreate(69, MJEntityFormComponentExtended_Conditional_0_Conditional_67_Conditional_69_Template, 6, 0, "div", 334);
2446
2447
  i0.ɵɵelementEnd();
2447
2448
  } if (rf & 2) {
2448
2449
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -2483,50 +2484,50 @@ function MJEntityFormComponentExtended_Conditional_0_Conditional_66_Template(rf,
2483
2484
  i0.ɵɵadvance();
2484
2485
  i0.ɵɵconditional(ctx_r2.selectedField.EntityFieldValues.length > 0 ? 69 : -1);
2485
2486
  } }
2486
- function MJEntityFormComponentExtended_Conditional_0_Conditional_67_Template(rf, ctx) { if (rf & 1) {
2487
- i0.ɵɵelementStart(0, "div", 41)(1, "div", 333)(2, "h4");
2487
+ function MJEntityFormComponentExtended_Conditional_0_Conditional_68_Template(rf, ctx) { if (rf & 1) {
2488
+ i0.ɵɵelementStart(0, "div", 42)(1, "div", 334)(2, "h4");
2488
2489
  i0.ɵɵtext(3);
2489
2490
  i0.ɵɵelementEnd()();
2490
- i0.ɵɵelementStart(4, "div", 333)(5, "h5");
2491
+ i0.ɵɵelementStart(4, "div", 334)(5, "h5");
2491
2492
  i0.ɵɵtext(6, "Connection");
2492
2493
  i0.ɵɵelementEnd();
2493
- i0.ɵɵelementStart(7, "div", 336)(8, "div", 337)(9, "span", 338);
2494
+ i0.ɵɵelementStart(7, "div", 337)(8, "div", 338)(9, "span", 339);
2494
2495
  i0.ɵɵtext(10, "From Entity");
2495
2496
  i0.ɵɵelementEnd();
2496
- i0.ɵɵelementStart(11, "span", 340);
2497
+ i0.ɵɵelementStart(11, "span", 341);
2497
2498
  i0.ɵɵtext(12);
2498
2499
  i0.ɵɵelementEnd()();
2499
- i0.ɵɵelementStart(13, "div", 337)(14, "span", 338);
2500
+ i0.ɵɵelementStart(13, "div", 338)(14, "span", 339);
2500
2501
  i0.ɵɵtext(15, "Join Field");
2501
2502
  i0.ɵɵelementEnd();
2502
- i0.ɵɵelementStart(16, "span", 339);
2503
+ i0.ɵɵelementStart(16, "span", 340);
2503
2504
  i0.ɵɵtext(17);
2504
2505
  i0.ɵɵelementEnd()();
2505
- i0.ɵɵelementStart(18, "div", 337)(19, "span", 338);
2506
+ i0.ɵɵelementStart(18, "div", 338)(19, "span", 339);
2506
2507
  i0.ɵɵtext(20, "Type");
2507
2508
  i0.ɵɵelementEnd();
2508
- i0.ɵɵelementStart(21, "span", 340);
2509
+ i0.ɵɵelementStart(21, "span", 341);
2509
2510
  i0.ɵɵtext(22);
2510
2511
  i0.ɵɵelementEnd()()()();
2511
- i0.ɵɵelementStart(23, "div", 333)(24, "h5");
2512
+ i0.ɵɵelementStart(23, "div", 334)(24, "h5");
2512
2513
  i0.ɵɵtext(25, "Display Settings");
2513
2514
  i0.ɵɵelementEnd();
2514
- i0.ɵɵelementStart(26, "div", 336)(27, "div", 337)(28, "span", 338);
2515
+ i0.ɵɵelementStart(26, "div", 337)(27, "div", 338)(28, "span", 339);
2515
2516
  i0.ɵɵtext(29, "Display in Form");
2516
2517
  i0.ɵɵelementEnd();
2517
- i0.ɵɵelementStart(30, "span", 340);
2518
+ i0.ɵɵelementStart(30, "span", 341);
2518
2519
  i0.ɵɵtext(31);
2519
2520
  i0.ɵɵelementEnd()();
2520
- i0.ɵɵelementStart(32, "div", 337)(33, "span", 338);
2521
+ i0.ɵɵelementStart(32, "div", 338)(33, "span", 339);
2521
2522
  i0.ɵɵtext(34, "Location");
2522
2523
  i0.ɵɵelementEnd();
2523
- i0.ɵɵelementStart(35, "span", 340);
2524
+ i0.ɵɵelementStart(35, "span", 341);
2524
2525
  i0.ɵɵtext(36);
2525
2526
  i0.ɵɵelementEnd()();
2526
- i0.ɵɵelementStart(37, "div", 337)(38, "span", 338);
2527
+ i0.ɵɵelementStart(37, "div", 338)(38, "span", 339);
2527
2528
  i0.ɵɵtext(39, "Bundle in API");
2528
2529
  i0.ɵɵelementEnd();
2529
- i0.ɵɵelementStart(40, "span", 340);
2530
+ i0.ɵɵelementStart(40, "span", 341);
2530
2531
  i0.ɵɵtext(41);
2531
2532
  i0.ɵɵelementEnd()()()()();
2532
2533
  } if (rf & 2) {
@@ -2605,29 +2606,32 @@ function MJEntityFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf
2605
2606
  i0.ɵɵelementStart(44, "span", 19);
2606
2607
  i0.ɵɵtext(45, "Rows");
2607
2608
  i0.ɵɵelementEnd()()()();
2608
- i0.ɵɵelementStart(46, "div", 24)(47, "nav", 25);
2609
- i0.ɵɵrepeaterCreate(48, MJEntityFormComponentExtended_Conditional_0_For_49_Template, 5, 7, "button", 26, i0.ɵɵrepeaterTrackByIdentity);
2610
- i0.ɵɵelementEnd();
2611
- i0.ɵɵelementStart(50, "main", 27);
2612
- i0.ɵɵconditionalCreate(51, MJEntityFormComponentExtended_Conditional_0_Conditional_51_Template, 111, 23, "section", 28);
2613
- i0.ɵɵconditionalCreate(52, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Template, 15, 8, "section", 29);
2614
- i0.ɵɵconditionalCreate(53, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Template, 13, 7, "section", 30);
2615
- i0.ɵɵconditionalCreate(54, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Template, 4, 1, "section", 31);
2616
- i0.ɵɵconditionalCreate(55, MJEntityFormComponentExtended_Conditional_0_Conditional_55_Template, 55, 22, "section", 32);
2617
- i0.ɵɵconditionalCreate(56, MJEntityFormComponentExtended_Conditional_0_Conditional_56_Template, 3, 1, "section", 33);
2618
- i0.ɵɵconditionalCreate(57, MJEntityFormComponentExtended_Conditional_0_Conditional_57_Template, 72, 26, "section", 34);
2619
- i0.ɵɵconditionalCreate(58, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Template, 18, 7, "section", 35);
2620
- i0.ɵɵconditionalCreate(59, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Template, 40, 18, "section", 36);
2621
- i0.ɵɵelementEnd();
2622
- i0.ɵɵelementStart(60, "aside", 37)(61, "div", 38);
2623
- i0.ɵɵconditionalCreate(62, MJEntityFormComponentExtended_Conditional_0_Conditional_62_Template, 2, 0, "h3");
2609
+ i0.ɵɵelementStart(46, "div", 24)(47, "mj-section-picker", 25);
2610
+ i0.ɵɵlistener("ActiveKeyChange", function MJEntityFormComponentExtended_Conditional_0_Template_mj_section_picker_ActiveKeyChange_47_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnSectionPicked($event)); });
2611
+ i0.ɵɵelementEnd();
2612
+ i0.ɵɵelementStart(48, "nav", 26);
2613
+ i0.ɵɵrepeaterCreate(49, MJEntityFormComponentExtended_Conditional_0_For_50_Template, 5, 7, "button", 27, i0.ɵɵrepeaterTrackByIdentity);
2614
+ i0.ɵɵelementEnd();
2615
+ i0.ɵɵelementStart(51, "main", 28);
2616
+ i0.ɵɵconditionalCreate(52, MJEntityFormComponentExtended_Conditional_0_Conditional_52_Template, 111, 23, "section", 29);
2617
+ i0.ɵɵconditionalCreate(53, MJEntityFormComponentExtended_Conditional_0_Conditional_53_Template, 15, 8, "section", 30);
2618
+ i0.ɵɵconditionalCreate(54, MJEntityFormComponentExtended_Conditional_0_Conditional_54_Template, 13, 7, "section", 31);
2619
+ i0.ɵɵconditionalCreate(55, MJEntityFormComponentExtended_Conditional_0_Conditional_55_Template, 4, 1, "section", 32);
2620
+ i0.ɵɵconditionalCreate(56, MJEntityFormComponentExtended_Conditional_0_Conditional_56_Template, 55, 22, "section", 33);
2621
+ i0.ɵɵconditionalCreate(57, MJEntityFormComponentExtended_Conditional_0_Conditional_57_Template, 3, 1, "section", 34);
2622
+ i0.ɵɵconditionalCreate(58, MJEntityFormComponentExtended_Conditional_0_Conditional_58_Template, 72, 26, "section", 35);
2623
+ i0.ɵɵconditionalCreate(59, MJEntityFormComponentExtended_Conditional_0_Conditional_59_Template, 18, 7, "section", 36);
2624
+ i0.ɵɵconditionalCreate(60, MJEntityFormComponentExtended_Conditional_0_Conditional_60_Template, 40, 18, "section", 37);
2625
+ i0.ɵɵelementEnd();
2626
+ i0.ɵɵelementStart(61, "aside", 38)(62, "div", 39);
2624
2627
  i0.ɵɵconditionalCreate(63, MJEntityFormComponentExtended_Conditional_0_Conditional_63_Template, 2, 0, "h3");
2625
- i0.ɵɵelementStart(64, "button", 39);
2626
- 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()); });
2627
- i0.ɵɵelement(65, "i", 40);
2628
+ i0.ɵɵconditionalCreate(64, MJEntityFormComponentExtended_Conditional_0_Conditional_64_Template, 2, 0, "h3");
2629
+ i0.ɵɵelementStart(65, "button", 40);
2630
+ i0.ɵɵlistener("click", function MJEntityFormComponentExtended_Conditional_0_Template_button_click_65_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeDetailPanel()); });
2631
+ i0.ɵɵelement(66, "i", 41);
2628
2632
  i0.ɵɵelementEnd()();
2629
- i0.ɵɵconditionalCreate(66, MJEntityFormComponentExtended_Conditional_0_Conditional_66_Template, 70, 18, "div", 41);
2630
- i0.ɵɵconditionalCreate(67, MJEntityFormComponentExtended_Conditional_0_Conditional_67_Template, 42, 7, "div", 41);
2633
+ i0.ɵɵconditionalCreate(67, MJEntityFormComponentExtended_Conditional_0_Conditional_67_Template, 70, 18, "div", 42);
2634
+ i0.ɵɵconditionalCreate(68, MJEntityFormComponentExtended_Conditional_0_Conditional_68_Template, 42, 7, "div", 42);
2631
2635
  i0.ɵɵelementEnd()()();
2632
2636
  } if (rf & 2) {
2633
2637
  const ctx_r2 = i0.ɵɵnextContext();
@@ -2663,57 +2667,59 @@ function MJEntityFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf
2663
2667
  i0.ɵɵconditional(!ctx_r2.isRowCountLoading ? 42 : -1);
2664
2668
  i0.ɵɵadvance();
2665
2669
  i0.ɵɵconditional(ctx_r2.isRowCountLoading ? 43 : -1);
2666
- i0.ɵɵadvance(5);
2670
+ i0.ɵɵadvance(4);
2671
+ i0.ɵɵproperty("Items", ctx_r2.SectionPickerItems)("ActiveKey", ctx_r2.ActiveSection);
2672
+ i0.ɵɵadvance(2);
2667
2673
  i0.ɵɵrepeater(ctx_r2.navItems);
2668
2674
  i0.ɵɵadvance(2);
2669
2675
  i0.ɵɵclassProp("panel-open", ctx_r2.detailPanelOpen);
2670
2676
  i0.ɵɵadvance();
2671
- i0.ɵɵconditional(ctx_r2.activeSection === "overview" ? 51 : -1);
2677
+ i0.ɵɵconditional(ctx_r2.activeSection === "overview" ? 52 : -1);
2672
2678
  i0.ɵɵadvance();
2673
- i0.ɵɵconditional(ctx_r2.activeSection === "fields" ? 52 : -1);
2679
+ i0.ɵɵconditional(ctx_r2.activeSection === "fields" ? 53 : -1);
2674
2680
  i0.ɵɵadvance();
2675
- i0.ɵɵconditional(ctx_r2.activeSection === "relationships" ? 53 : -1);
2681
+ i0.ɵɵconditional(ctx_r2.activeSection === "relationships" ? 54 : -1);
2676
2682
  i0.ɵɵadvance();
2677
- i0.ɵɵconditional(ctx_r2.activeSection === "organicKeys" ? 54 : -1);
2683
+ i0.ɵɵconditional(ctx_r2.activeSection === "organicKeys" ? 55 : -1);
2678
2684
  i0.ɵɵadvance();
2679
- i0.ɵɵconditional(ctx_r2.activeSection === "permissions" ? 55 : -1);
2685
+ i0.ɵɵconditional(ctx_r2.activeSection === "permissions" ? 56 : -1);
2680
2686
  i0.ɵɵadvance();
2681
- i0.ɵɵconditional(ctx_r2.activeSection === "data" ? 56 : -1);
2687
+ i0.ɵɵconditional(ctx_r2.activeSection === "data" ? 57 : -1);
2682
2688
  i0.ɵɵadvance();
2683
- i0.ɵɵconditional(ctx_r2.activeSection === "lineage" ? 57 : -1);
2689
+ i0.ɵɵconditional(ctx_r2.activeSection === "lineage" ? 58 : -1);
2684
2690
  i0.ɵɵadvance();
2685
- i0.ɵɵconditional(ctx_r2.activeSection === "history" ? 58 : -1);
2691
+ i0.ɵɵconditional(ctx_r2.activeSection === "history" ? 59 : -1);
2686
2692
  i0.ɵɵadvance();
2687
- i0.ɵɵconditional(ctx_r2.activeSection === "settings" ? 59 : -1);
2693
+ i0.ɵɵconditional(ctx_r2.activeSection === "settings" ? 60 : -1);
2688
2694
  i0.ɵɵadvance();
2689
2695
  i0.ɵɵclassProp("open", ctx_r2.detailPanelOpen);
2690
2696
  i0.ɵɵadvance(2);
2691
- i0.ɵɵconditional(ctx_r2.selectedField ? 62 : -1);
2697
+ i0.ɵɵconditional(ctx_r2.selectedField ? 63 : -1);
2692
2698
  i0.ɵɵadvance();
2693
- i0.ɵɵconditional(ctx_r2.selectedRelationship ? 63 : -1);
2699
+ i0.ɵɵconditional(ctx_r2.selectedRelationship ? 64 : -1);
2694
2700
  i0.ɵɵadvance(3);
2695
- i0.ɵɵconditional(ctx_r2.selectedField ? 66 : -1);
2701
+ i0.ɵɵconditional(ctx_r2.selectedField ? 67 : -1);
2696
2702
  i0.ɵɵadvance();
2697
- i0.ɵɵconditional(ctx_r2.selectedRelationship ? 67 : -1);
2703
+ i0.ɵɵconditional(ctx_r2.selectedRelationship ? 68 : -1);
2698
2704
  } }
2699
2705
  function MJEntityFormComponentExtended_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
2700
- i0.ɵɵelementStart(0, "div", 348);
2701
- i0.ɵɵelement(1, "mj-loading", 351);
2706
+ i0.ɵɵelementStart(0, "div", 349);
2707
+ i0.ɵɵelement(1, "mj-loading", 352);
2702
2708
  i0.ɵɵelementEnd();
2703
2709
  } }
2704
2710
  function MJEntityFormComponentExtended_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
2705
- i0.ɵɵelement(0, "mj-empty-state", 349);
2711
+ i0.ɵɵelement(0, "mj-empty-state", 350);
2706
2712
  } if (rf & 2) {
2707
2713
  const ctx_r2 = i0.ɵɵnextContext(2);
2708
2714
  i0.ɵɵproperty("Message", ctx_r2.explorerError);
2709
2715
  } }
2710
2716
  function MJEntityFormComponentExtended_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
2711
- i0.ɵɵelement(0, "mj-empty-state", 350);
2717
+ i0.ɵɵelement(0, "mj-empty-state", 351);
2712
2718
  } }
2713
2719
  function MJEntityFormComponentExtended_Conditional_1_Template(rf, ctx) { if (rf & 1) {
2714
- i0.ɵɵconditionalCreate(0, MJEntityFormComponentExtended_Conditional_1_Conditional_0_Template, 2, 0, "div", 348);
2715
- i0.ɵɵconditionalCreate(1, MJEntityFormComponentExtended_Conditional_1_Conditional_1_Template, 1, 1, "mj-empty-state", 349);
2716
- i0.ɵɵconditionalCreate(2, MJEntityFormComponentExtended_Conditional_1_Conditional_2_Template, 1, 0, "mj-empty-state", 350);
2720
+ i0.ɵɵconditionalCreate(0, MJEntityFormComponentExtended_Conditional_1_Conditional_0_Template, 2, 0, "div", 349);
2721
+ i0.ɵɵconditionalCreate(1, MJEntityFormComponentExtended_Conditional_1_Conditional_1_Template, 1, 1, "mj-empty-state", 350);
2722
+ i0.ɵɵconditionalCreate(2, MJEntityFormComponentExtended_Conditional_1_Conditional_2_Template, 1, 0, "mj-empty-state", 351);
2717
2723
  } if (rf & 2) {
2718
2724
  const ctx_r2 = i0.ɵɵnextContext();
2719
2725
  i0.ɵɵconditional(ctx_r2.isExplorerLoading ? 0 : -1);
@@ -2818,6 +2824,8 @@ let MJEntityFormComponentExtended = class MJEntityFormComponentExtended extends
2818
2824
  this.SelectedRelationship = null;
2819
2825
  this.destroy$ = new Subject();
2820
2826
  this.stateChange$ = new Subject();
2827
+ /** Stops following the breakpoint; set at init, called from ngOnDestroy. */
2828
+ this.stopPhoneWatch = () => undefined;
2821
2829
  this.IsSavingCloneConfig = false;
2822
2830
  this.CloneConfigSaveError = '';
2823
2831
  /**
@@ -3074,11 +3082,28 @@ let MJEntityFormComponentExtended = class MJEntityFormComponentExtended extends
3074
3082
  get _metadata() { return this.ProviderToUse; }
3075
3083
  async ngOnInit() {
3076
3084
  await super.ngOnInit();
3085
+ this.ApplyPhoneDefaults(IsPhoneViewport());
3086
+ this.stopPhoneWatch = WatchPhoneViewport(() => this.SyncPhoneViewport());
3077
3087
  this.setupStateManagement();
3078
3088
  this.loadExplorerData();
3079
3089
  }
3090
+ /**
3091
+ * Phone-width defaults, applied at init and whenever the breakpoint is crossed into phone width: Relations opens as the list, since the ERD is a
3092
+ * desktop experience (pan, zoom, depth) that a 375px canvas cannot carry. The user can still
3093
+ * switch to the diagram from the section header.
3094
+ */
3095
+ ApplyPhoneDefaults(isPhone) {
3096
+ if (isPhone)
3097
+ this.RelationshipViewMode = 'list';
3098
+ }
3099
+ /** Re-reads the breakpoint and re-applies the phone defaults (rotation, resize). */
3100
+ SyncPhoneViewport() {
3101
+ this.ApplyPhoneDefaults(IsPhoneViewport());
3102
+ this.cdr.markForCheck();
3103
+ }
3080
3104
  ngOnDestroy() {
3081
3105
  super.ngOnDestroy();
3106
+ this.stopPhoneWatch();
3082
3107
  this.destroy$.next();
3083
3108
  this.destroy$.complete();
3084
3109
  }
@@ -3477,6 +3502,16 @@ let MJEntityFormComponentExtended = class MJEntityFormComponentExtended extends
3477
3502
  });
3478
3503
  }
3479
3504
  // === Public Methods ===
3505
+ /** The rail's items as `mj-section-picker` items: same order, the badge as the count. */
3506
+ get SectionPickerItems() {
3507
+ return this.NavItems.map((item) => ({ Key: item.id, Title: item.label, Icon: item.icon, Count: item.badge ?? null }));
3508
+ }
3509
+ /** A pick from the phone section sheet; a key that names no rail item is ignored. */
3510
+ OnSectionPicked(key) {
3511
+ const item = this.NavItems.find((i) => i.id === key);
3512
+ if (item)
3513
+ this.SetActiveSection(item.id);
3514
+ }
3480
3515
  SetActiveSection(section) {
3481
3516
  this.ActiveSection = section;
3482
3517
  this.CloseDetailPanel();
@@ -4114,11 +4149,11 @@ let MJEntityFormComponentExtended = class MJEntityFormComponentExtended extends
4114
4149
  return this.FormatJsonValue(value);
4115
4150
  }
4116
4151
  static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMJEntityFormComponentExtended_BaseFactory; return function MJEntityFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMJEntityFormComponentExtended_BaseFactory || (ɵMJEntityFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MJEntityFormComponentExtended)))(__ngFactoryType__ || MJEntityFormComponentExtended); }; })(); }
4117
- 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"], ["Size", "sm", 3, "ExpandedChange", "FlushBody", "Expanded"], ["mjAccordionTitle", ""], ["mjAccordionBody", ""], [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"], ["Size", "sm", 3, "FlushBody", "Expanded"], [1, "group-icon"], [1, "group-label"], [1, "mj-accordion-badge", "mj-accordion-badge--right"], [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"], ["Variant", "no-results", "Size", "compact", "Title", "No fields match your search"], [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, "group-count"], [1, "relationship-items", "grouped"], [1, "relationship-item-grouped"], ["Size", "compact", "Icon", "fa-solid fa-arrow-right-from-bracket", "Title", "No outgoing relationships"], [1, "fa-solid", "fa-arrow-right-to-bracket"], ["Size", "compact", "Icon", "fa-solid fa-arrow-right-to-bracket", "Title", "No incoming relationships"], [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"], ["Icon", "fa-solid fa-fingerprint", "Title", "No Organic Keys", "Message", "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."], [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"], ["Size", "compact", "Icon", "fa-solid fa-shield-halved", "Title", "No permissions configured"], [1, "api-capabilities"], [1, "fa-solid", "fa-plug"], [1, "capability-grid"], [1, "capability-item"], [1, "fa-solid", 3, "ngClass"], [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", "Provider"], [3, "RecordOpened", "CreateRecordRequested", "Entity", "Provider"], [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, "fa-solid", "fa-map-location-dot"], [1, "helper-text"], [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"], ["Size", "compact", "Icon", "fa-solid fa-sliders", "Title", "No custom settings configured"], [1, "fa-solid", "fa-magnifying-glass"], [1, "fts-config"], ["Variant", "warning", "Size", "compact", "Title", "Full-text search is not enabled for this entity"], [3, "FormConfigChange", "FormConfig", "ParentSchemaName", "Candidates", "EditMode"], [1, "panel-title-row"], [1, "panel-title-actions"], [1, "panel-error"], [3, "CloneConfigChange", "Provider", "Entity", "CloneConfig", "EditMode"], [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"], ["type", "button", "mjButton", "", "Variant", "outline", "Size", "sm"], ["type", "button", "mjButton", "", "Variant", "outline", "Size", "sm", 3, "click"], [1, "fa-solid", "fa-pen-to-square"], ["type", "button", "mjButton", "", "Variant", "primary", "Size", "sm", 3, "click", "disabled"], [1, "fa-solid", "fa-floppy-disk"], ["type", "button", "mjButton", "", "Variant", "outline", "Size", "sm", 3, "click", "disabled"], [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"], ["Variant", "error", "Icon", "fa-solid fa-triangle-exclamation", "Title", "Failed to load entity", 1, "explorer-fill", 3, "Message"], ["Icon", "fa-solid fa-database", "Title", "Entity metadata not available", 1, "explorer-fill"], ["text", "Loading entity..."]], template: function MJEntityFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
4118
- i0.ɵɵconditionalCreate(0, MJEntityFormComponentExtended_Conditional_0_Template, 68, 36, "div", 0)(1, MJEntityFormComponentExtended_Conditional_1_Template, 3, 3);
4152
+ 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, "phone-section-picker", 3, "ActiveKeyChange", "Items", "ActiveKey"], [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"], ["Size", "sm", 3, "ExpandedChange", "FlushBody", "Expanded"], ["mjAccordionTitle", ""], ["mjAccordionBody", ""], [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"], ["Size", "sm", 3, "FlushBody", "Expanded"], [1, "group-icon"], [1, "group-label"], [1, "mj-accordion-badge", "mj-accordion-badge--right"], [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"], ["Variant", "no-results", "Size", "compact", "Title", "No fields match your search"], [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, "group-count"], [1, "relationship-items", "grouped"], [1, "relationship-item-grouped"], ["Size", "compact", "Icon", "fa-solid fa-arrow-right-from-bracket", "Title", "No outgoing relationships"], [1, "fa-solid", "fa-arrow-right-to-bracket"], ["Size", "compact", "Icon", "fa-solid fa-arrow-right-to-bracket", "Title", "No incoming relationships"], [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"], ["Icon", "fa-solid fa-fingerprint", "Title", "No Organic Keys", "Message", "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."], [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"], ["Size", "compact", "Icon", "fa-solid fa-shield-halved", "Title", "No permissions configured"], [1, "api-capabilities"], [1, "fa-solid", "fa-plug"], [1, "capability-grid"], [1, "capability-item"], [1, "fa-solid", 3, "ngClass"], [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", "Provider"], [3, "RecordOpened", "CreateRecordRequested", "Entity", "Provider"], [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, "fa-solid", "fa-map-location-dot"], [1, "helper-text"], [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"], ["Size", "compact", "Icon", "fa-solid fa-sliders", "Title", "No custom settings configured"], [1, "fa-solid", "fa-magnifying-glass"], [1, "fts-config"], ["Variant", "warning", "Size", "compact", "Title", "Full-text search is not enabled for this entity"], [3, "FormConfigChange", "FormConfig", "ParentSchemaName", "Candidates", "EditMode"], [1, "panel-title-row"], [1, "panel-title-actions"], [1, "panel-error"], [3, "CloneConfigChange", "Provider", "Entity", "CloneConfig", "EditMode"], [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"], ["type", "button", "mjButton", "", "Variant", "outline", "Size", "sm"], ["type", "button", "mjButton", "", "Variant", "outline", "Size", "sm", 3, "click"], [1, "fa-solid", "fa-pen-to-square"], ["type", "button", "mjButton", "", "Variant", "primary", "Size", "sm", 3, "click", "disabled"], [1, "fa-solid", "fa-floppy-disk"], ["type", "button", "mjButton", "", "Variant", "outline", "Size", "sm", 3, "click", "disabled"], [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"], ["Variant", "error", "Icon", "fa-solid fa-triangle-exclamation", "Title", "Failed to load entity", 1, "explorer-fill", 3, "Message"], ["Icon", "fa-solid fa-database", "Title", "Entity metadata not available", 1, "explorer-fill"], ["text", "Loading entity..."]], template: function MJEntityFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
4153
+ i0.ɵɵconditionalCreate(0, MJEntityFormComponentExtended_Conditional_0_Template, 69, 38, "div", 0)(1, MJEntityFormComponentExtended_Conditional_1_Template, 3, 3);
4119
4154
  } if (rf & 2) {
4120
4155
  i0.ɵɵconditional(!ctx.isExplorerLoading && ctx.entity ? 0 : 1);
4121
- } }, dependencies: [i1.NgClass, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, i3.MJEmptyStateComponent, i3.MJButtonDirective, i3.MJAccordionPanelComponent, i3.MJAccordionTitleDirective, i3.MJAccordionBodyDirective, i4.CodeEditorComponent, i5.LoadingComponent, i6.ERDCompositeComponent, i7.EntityViewerComponent, i8.EntityFormChromeEditorComponent, i9.EntityCloneConfigEditorComponent, i1.SlicePipe, i1.DecimalPipe, i1.DatePipe], styles: ["\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.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: var(--mj-brand-on-primary);\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.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.explorer-body[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n overflow: hidden;\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: var(--mj-brand-on-primary);\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.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.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.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.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: var(--mj-brand-on-primary);\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: var(--mj-brand-on-primary);\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.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.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: var(--mj-brand-on-primary);\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: var(--mj-brand-on-primary);\n}\n\n.flag-badge.encrypted[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-brand-on-primary);\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\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.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.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.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.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\n\n\n\n\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.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.relationships-graph[_ngcontent-%COMP%] .erd-splitter[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\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.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.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: var(--mj-brand-on-primary);\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: var(--mj-text-inverse);\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.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: var(--mj-text-inverse);\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.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.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: var(--mj-brand-on-primary);\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.tracking-config[_ngcontent-%COMP%] .helper-text[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-muted);\n margin: -8px 0 12px 0;\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.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.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.explorer-loading[_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\n.explorer-fill[_ngcontent-%COMP%] {\n height: 100%;\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.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.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.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: var(--mj-brand-on-primary);\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.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.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.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.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.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.isa-field-inspector[_ngcontent-%COMP%] {\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--border-color);\n}\n\n\n\n\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.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.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.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.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\n.panel-title-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--mj-space-2);\n margin-bottom: var(--mj-space-4);\n}\n\n.panel-title-row[_ngcontent-%COMP%] .panel-title[_ngcontent-%COMP%] {\n margin-bottom: 0;\n}\n\n.panel-title-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: var(--mj-space-2);\n}\n\n.panel-error[_ngcontent-%COMP%] {\n margin: var(--mj-space-2) 0 0;\n font-size: var(--mj-text-xs);\n color: var(--mj-status-error);\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.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.form-panels-container[_ngcontent-%COMP%] > .form-card[_ngcontent-%COMP%] {\n width: 100%;\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@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.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.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.form-card.search-hidden[_ngcontent-%COMP%] {\n display: none;\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.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.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.collapsible-title[_ngcontent-%COMP%] .row-count-badge.zero-rows[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n}"], changeDetection: 0 }); }
4156
+ } }, dependencies: [i1.NgClass, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, i3.MJEmptyStateComponent, i3.MJSectionPickerComponent, i3.MJButtonDirective, i3.MJAccordionPanelComponent, i3.MJAccordionTitleDirective, i3.MJAccordionBodyDirective, i4.CodeEditorComponent, i5.LoadingComponent, i6.ERDCompositeComponent, i7.EntityViewerComponent, i8.EntityFormChromeEditorComponent, i9.EntityCloneConfigEditorComponent, i1.SlicePipe, i1.DecimalPipe, i1.DatePipe], styles: ["\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.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: var(--mj-brand-on-primary);\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.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.explorer-body[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n overflow: hidden;\n}\n\n\n.phone-section-picker[_ngcontent-%COMP%] {\n display: none;\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: var(--mj-brand-on-primary);\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.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.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.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.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: var(--mj-brand-on-primary);\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: var(--mj-brand-on-primary);\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.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.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: var(--mj-brand-on-primary);\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: var(--mj-brand-on-primary);\n}\n\n.flag-badge.encrypted[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-brand-on-primary);\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\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.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.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.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.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\n\n\n\n\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.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.relationships-graph[_ngcontent-%COMP%] .erd-splitter[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\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.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.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: var(--mj-brand-on-primary);\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: var(--mj-text-inverse);\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.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: var(--mj-text-inverse);\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.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.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: var(--mj-brand-on-primary);\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.tracking-config[_ngcontent-%COMP%] .helper-text[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-muted);\n margin: -8px 0 12px 0;\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.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.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.explorer-loading[_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\n.explorer-fill[_ngcontent-%COMP%] {\n height: 100%;\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.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.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.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: var(--mj-brand-on-primary);\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.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.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.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.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.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.isa-field-inspector[_ngcontent-%COMP%] {\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--border-color);\n}\n\n\n\n\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.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.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.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.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\n.panel-title-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--mj-space-2);\n margin-bottom: var(--mj-space-4);\n}\n\n.panel-title-row[_ngcontent-%COMP%] .panel-title[_ngcontent-%COMP%] {\n margin-bottom: 0;\n}\n\n.panel-title-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: var(--mj-space-2);\n}\n\n.panel-error[_ngcontent-%COMP%] {\n margin: var(--mj-space-2) 0 0;\n font-size: var(--mj-text-xs);\n color: var(--mj-status-error);\n}\n\n\n\n@media (max-width: 768px) {\n .explorer-body[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .nav-rail[_ngcontent-%COMP%] {\n display: none;\n }\n\n .phone-section-picker[_ngcontent-%COMP%] {\n display: block;\n flex-shrink: 0;\n padding: 4px 8px;\n border-bottom: 1px solid var(--border-color);\n background: var(--bg-primary);\n }\n\n .explorer-header[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n gap: 12px;\n padding: 12px 16px;\n }\n\n .entity-identity[_ngcontent-%COMP%] {\n flex-basis: 100%;\n }\n\n .entity-subtitle[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n\n .entity-description[_ngcontent-%COMP%] {\n flex-basis: 100%;\n white-space: normal;\n }\n\n .header-stats[_ngcontent-%COMP%] {\n flex-basis: 100%;\n flex-wrap: wrap;\n }\n\n .stat-item[_ngcontent-%COMP%] {\n flex: 1 1 40%;\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.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.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.form-panels-container[_ngcontent-%COMP%] > .form-card[_ngcontent-%COMP%] {\n width: 100%;\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@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.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.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.form-card.search-hidden[_ngcontent-%COMP%] {\n display: none;\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.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.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.collapsible-title[_ngcontent-%COMP%] .row-count-badge.zero-rows[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n}"], changeDetection: 0 }); }
4122
4157
  };
4123
4158
  MJEntityFormComponentExtended = __decorate([
4124
4159
  RegisterClass(BaseFormComponent, 'MJ: Entities')
@@ -4126,7 +4161,7 @@ MJEntityFormComponentExtended = __decorate([
4126
4161
  export { MJEntityFormComponentExtended };
4127
4162
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJEntityFormComponentExtended, [{
4128
4163
  type: Component,
4129
- 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 <mj-accordion-panel Size=\"sm\" [FlushBody]=\"true\"\n [Expanded]=\"isaFieldInspectorExpanded\" (ExpandedChange)=\"isaFieldInspectorExpanded = $event\">\n <ng-template mjAccordionTitle>\n <span>Field Source Inspector</span>\n </ng-template>\n <ng-template mjAccordionBody>\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 </ng-template>\n </mj-accordion-panel>\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 <mj-accordion-panel Size=\"sm\" [FlushBody]=\"true\"\n [Expanded]=\"isFieldGroupExpanded(group.id)\"\n (ExpandedChange)=\"onFieldGroupExpandedChange(group.id, $event)\">\n <ng-template mjAccordionTitle>\n <i [class]=\"group.icon\" class=\"group-icon\"></i>\n <span class=\"group-label\">{{ group.label }}</span>\n <span class=\"mj-accordion-badge mj-accordion-badge--right\">{{ group.fields.length }}</span>\n </ng-template>\n <ng-template mjAccordionBody>\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 </ng-template>\n </mj-accordion-panel>\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 <mj-empty-state\n Variant=\"no-results\"\n Size=\"compact\"\n Title=\"No fields match your search\" />\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 <mj-empty-state Size=\"compact\" Icon=\"fa-solid fa-arrow-right-from-bracket\" Title=\"No outgoing relationships\" />\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 <mj-empty-state Size=\"compact\" Icon=\"fa-solid fa-arrow-right-to-bracket\" Title=\"No incoming relationships\" />\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 <mj-empty-state\n Icon=\"fa-solid fa-fingerprint\"\n Title=\"No Organic Keys\"\n Message=\"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.\" />\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 <mj-empty-state Size=\"compact\" Icon=\"fa-solid fa-shield-halved\" Title=\"No permissions configured\" />\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 [Provider]=\"Provider\"\n (RecordOpened)=\"OnRecordOpened($event)\"\n (CreateRecordRequested)=\"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 class=\"tracking-config\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-map-location-dot\"></i>\n Geocoding\n </h3>\n <p class=\"helper-text\">When enabled, CodeGen auto-detects geo fields and generates map view support</p>\n <div class=\"config-grid\">\n <div class=\"config-item\" [class.enabled]=\"entity.SupportsGeoCoding\">\n <i class=\"fa-solid\" [ngClass]=\"entity.SupportsGeoCoding ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Supports Geocoding</span>\n </div>\n <div class=\"config-item\" [class.enabled]=\"entity.AutoUpdateSupportsGeoCoding\">\n <i class=\"fa-solid\" [ngClass]=\"entity.AutoUpdateSupportsGeoCoding ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Auto-Detect Geocoding</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 <mj-empty-state Size=\"compact\" Icon=\"fa-solid fa-sliders\" Title=\"No custom settings configured\" />\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 <mj-empty-state Variant=\"warning\" Size=\"compact\" Title=\"Full-text search is not enabled for this entity\" />\n }\n </div>\n <div class=\"settings-panel\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-table-columns\"></i>\n Form chrome\n </h3>\n <mj-entity-form-chrome-editor\n [FormConfig]=\"FormChromeConfig\"\n [ParentSchemaName]=\"entity.SchemaName\"\n [Candidates]=\"FormChromeCandidates\"\n [EditMode]=\"EditMode\"\n (FormConfigChange)=\"OnFormChromeConfigChange($event)\">\n </mj-entity-form-chrome-editor>\n </div>\n <div class=\"settings-panel\">\n <div class=\"panel-title-row\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-clone\"></i>\n Record cloning\n </h3>\n <!-- This form has no toolbar, so the panel carries its own edit controls. -->\n @if (UserCanEdit) {\n <div class=\"panel-title-actions\">\n @if (!EditMode) {\n <button type=\"button\" mjButton Variant=\"outline\" Size=\"sm\" (click)=\"StartEditMode()\">\n <i class=\"fa-solid fa-pen-to-square\"></i> Edit\n </button>\n } @else {\n <button type=\"button\" mjButton Variant=\"primary\" Size=\"sm\" [disabled]=\"IsSavingCloneConfig\" (click)=\"SaveCloneConfig()\">\n <i class=\"fa-solid fa-floppy-disk\"></i> Save\n </button>\n <button type=\"button\" mjButton Variant=\"outline\" Size=\"sm\" [disabled]=\"IsSavingCloneConfig\" (click)=\"CancelEdit()\">Cancel</button>\n }\n </div>\n }\n </div>\n @if (CloneConfigSaveError) {\n <p class=\"panel-error\">{{ CloneConfigSaveError }}</p>\n }\n <mj-entity-clone-config-editor\n [Provider]=\"ProviderToUse\"\n [Entity]=\"entity\"\n [CloneConfig]=\"CloneConfig\"\n [EditMode]=\"EditMode\"\n (CloneConfigChange)=\"OnCloneConfigChange($event)\">\n </mj-entity-clone-config-editor>\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 <mj-empty-state\n class=\"explorer-fill\"\n Variant=\"error\"\n Icon=\"fa-solid fa-triangle-exclamation\"\n Title=\"Failed to load entity\"\n [Message]=\"explorerError\" />\n }\n @if (!isExplorerLoading && !explorerError && !entity) {\n <mj-empty-state\n class=\"explorer-fill\"\n Icon=\"fa-solid fa-database\"\n Title=\"Entity metadata not available\" />\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: var(--mj-brand-on-primary);\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: var(--mj-brand-on-primary);\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: var(--mj-brand-on-primary);\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: var(--mj-brand-on-primary);\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: var(--mj-brand-on-primary);\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: var(--mj-brand-on-primary);\n}\n\n.flag-badge.encrypted {\n background: var(--mj-brand-primary);\n color: var(--mj-brand-on-primary);\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/* ============================================================\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 disclosure migrated to <mj-accordion-panel>. The bespoke\n .field-group separators, .group-header bar + .group-header:hover, and the\n .expand-icon chevron are now owned by the accordion and were removed. The\n title-slot content styling (.group-icon / .group-label) is kept below. The\n field-group count now uses the shared .mj-accordion-badge; .group-count below\n is retained only for the non-accordion relationship / organic-key titles. */\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 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: var(--mj-brand-on-primary);\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: var(--mj-text-inverse);\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: var(--mj-text-inverse);\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: var(--mj-brand-on-primary);\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.tracking-config .helper-text {\n font-size: 12px;\n color: var(--text-muted);\n margin: -8px 0 12px 0;\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 LOADING / ERROR STATES\n ============================================================ */\n\n.explorer-loading {\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/* Full-pane empty/error placeholders (rule 6b flex-fill). */\n.explorer-fill {\n height: 100%;\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: var(--mj-brand-on-primary);\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/* Field Source Inspector disclosure migrated to <mj-accordion-panel>; the\n bespoke .isa-chain-label header (with chevron) is now the accordion header\n and its layout rule was removed. The .isa-field-inspector wrapper is kept\n for its top-border separator from the inheritance chain above. */\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\n.panel-title-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--mj-space-2);\n margin-bottom: var(--mj-space-4);\n}\n\n.panel-title-row .panel-title {\n margin-bottom: 0;\n}\n\n.panel-title-actions {\n display: flex;\n gap: var(--mj-space-2);\n}\n\n.panel-error {\n margin: var(--mj-space-2) 0 0;\n font-size: var(--mj-text-xs);\n color: var(--mj-status-error);\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"] }]
4164
+ 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 <!-- Phone: the rail becomes one button that opens the Sections sheet -->\n <mj-section-picker class=\"phone-section-picker\"\n [Items]=\"SectionPickerItems\"\n [ActiveKey]=\"ActiveSection\"\n (ActiveKeyChange)=\"OnSectionPicked($event)\"></mj-section-picker>\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 <mj-accordion-panel Size=\"sm\" [FlushBody]=\"true\"\n [Expanded]=\"isaFieldInspectorExpanded\" (ExpandedChange)=\"isaFieldInspectorExpanded = $event\">\n <ng-template mjAccordionTitle>\n <span>Field Source Inspector</span>\n </ng-template>\n <ng-template mjAccordionBody>\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 </ng-template>\n </mj-accordion-panel>\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 <mj-accordion-panel Size=\"sm\" [FlushBody]=\"true\"\n [Expanded]=\"isFieldGroupExpanded(group.id)\"\n (ExpandedChange)=\"onFieldGroupExpandedChange(group.id, $event)\">\n <ng-template mjAccordionTitle>\n <i [class]=\"group.icon\" class=\"group-icon\"></i>\n <span class=\"group-label\">{{ group.label }}</span>\n <span class=\"mj-accordion-badge mj-accordion-badge--right\">{{ group.fields.length }}</span>\n </ng-template>\n <ng-template mjAccordionBody>\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 </ng-template>\n </mj-accordion-panel>\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 <mj-empty-state\n Variant=\"no-results\"\n Size=\"compact\"\n Title=\"No fields match your search\" />\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 <mj-empty-state Size=\"compact\" Icon=\"fa-solid fa-arrow-right-from-bracket\" Title=\"No outgoing relationships\" />\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 <mj-empty-state Size=\"compact\" Icon=\"fa-solid fa-arrow-right-to-bracket\" Title=\"No incoming relationships\" />\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 <mj-empty-state\n Icon=\"fa-solid fa-fingerprint\"\n Title=\"No Organic Keys\"\n Message=\"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.\" />\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 <mj-empty-state Size=\"compact\" Icon=\"fa-solid fa-shield-halved\" Title=\"No permissions configured\" />\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 [Provider]=\"Provider\"\n (RecordOpened)=\"OnRecordOpened($event)\"\n (CreateRecordRequested)=\"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 class=\"tracking-config\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-map-location-dot\"></i>\n Geocoding\n </h3>\n <p class=\"helper-text\">When enabled, CodeGen auto-detects geo fields and generates map view support</p>\n <div class=\"config-grid\">\n <div class=\"config-item\" [class.enabled]=\"entity.SupportsGeoCoding\">\n <i class=\"fa-solid\" [ngClass]=\"entity.SupportsGeoCoding ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Supports Geocoding</span>\n </div>\n <div class=\"config-item\" [class.enabled]=\"entity.AutoUpdateSupportsGeoCoding\">\n <i class=\"fa-solid\" [ngClass]=\"entity.AutoUpdateSupportsGeoCoding ? 'fa-check' : 'fa-xmark'\"></i>\n <span>Auto-Detect Geocoding</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 <mj-empty-state Size=\"compact\" Icon=\"fa-solid fa-sliders\" Title=\"No custom settings configured\" />\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 <mj-empty-state Variant=\"warning\" Size=\"compact\" Title=\"Full-text search is not enabled for this entity\" />\n }\n </div>\n <div class=\"settings-panel\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-table-columns\"></i>\n Form chrome\n </h3>\n <mj-entity-form-chrome-editor\n [FormConfig]=\"FormChromeConfig\"\n [ParentSchemaName]=\"entity.SchemaName\"\n [Candidates]=\"FormChromeCandidates\"\n [EditMode]=\"EditMode\"\n (FormConfigChange)=\"OnFormChromeConfigChange($event)\">\n </mj-entity-form-chrome-editor>\n </div>\n <div class=\"settings-panel\">\n <div class=\"panel-title-row\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-clone\"></i>\n Record cloning\n </h3>\n <!-- This form has no toolbar, so the panel carries its own edit controls. -->\n @if (UserCanEdit) {\n <div class=\"panel-title-actions\">\n @if (!EditMode) {\n <button type=\"button\" mjButton Variant=\"outline\" Size=\"sm\" (click)=\"StartEditMode()\">\n <i class=\"fa-solid fa-pen-to-square\"></i> Edit\n </button>\n } @else {\n <button type=\"button\" mjButton Variant=\"primary\" Size=\"sm\" [disabled]=\"IsSavingCloneConfig\" (click)=\"SaveCloneConfig()\">\n <i class=\"fa-solid fa-floppy-disk\"></i> Save\n </button>\n <button type=\"button\" mjButton Variant=\"outline\" Size=\"sm\" [disabled]=\"IsSavingCloneConfig\" (click)=\"CancelEdit()\">Cancel</button>\n }\n </div>\n }\n </div>\n @if (CloneConfigSaveError) {\n <p class=\"panel-error\">{{ CloneConfigSaveError }}</p>\n }\n <mj-entity-clone-config-editor\n [Provider]=\"ProviderToUse\"\n [Entity]=\"entity\"\n [CloneConfig]=\"CloneConfig\"\n [EditMode]=\"EditMode\"\n (CloneConfigChange)=\"OnCloneConfigChange($event)\">\n </mj-entity-clone-config-editor>\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 <mj-empty-state\n class=\"explorer-fill\"\n Variant=\"error\"\n Icon=\"fa-solid fa-triangle-exclamation\"\n Title=\"Failed to load entity\"\n [Message]=\"explorerError\" />\n }\n @if (!isExplorerLoading && !explorerError && !entity) {\n <mj-empty-state\n class=\"explorer-fill\"\n Icon=\"fa-solid fa-database\"\n Title=\"Entity metadata not available\" />\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: var(--mj-brand-on-primary);\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.phone-section-picker {\n display: none;\n}\n\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: var(--mj-brand-on-primary);\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: var(--mj-brand-on-primary);\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: var(--mj-brand-on-primary);\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: var(--mj-brand-on-primary);\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: var(--mj-brand-on-primary);\n}\n\n.flag-badge.encrypted {\n background: var(--mj-brand-primary);\n color: var(--mj-brand-on-primary);\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/* ============================================================\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 disclosure migrated to <mj-accordion-panel>. The bespoke\n .field-group separators, .group-header bar + .group-header:hover, and the\n .expand-icon chevron are now owned by the accordion and were removed. The\n title-slot content styling (.group-icon / .group-label) is kept below. The\n field-group count now uses the shared .mj-accordion-badge; .group-count below\n is retained only for the non-accordion relationship / organic-key titles. */\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 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: var(--mj-brand-on-primary);\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: var(--mj-text-inverse);\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: var(--mj-text-inverse);\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: var(--mj-brand-on-primary);\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.tracking-config .helper-text {\n font-size: 12px;\n color: var(--text-muted);\n margin: -8px 0 12px 0;\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 LOADING / ERROR STATES\n ============================================================ */\n\n.explorer-loading {\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/* Full-pane empty/error placeholders (rule 6b flex-fill). */\n.explorer-fill {\n height: 100%;\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: var(--mj-brand-on-primary);\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/* Field Source Inspector disclosure migrated to <mj-accordion-panel>; the\n bespoke .isa-chain-label header (with chevron) is now the accordion header\n and its layout rule was removed. The .isa-field-inspector wrapper is kept\n for its top-border separator from the inheritance chain above. */\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\n.panel-title-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--mj-space-2);\n margin-bottom: var(--mj-space-4);\n}\n\n.panel-title-row .panel-title {\n margin-bottom: 0;\n}\n\n.panel-title-actions {\n display: flex;\n gap: var(--mj-space-2);\n}\n\n.panel-error {\n margin: var(--mj-space-2) 0 0;\n font-size: var(--mj-text-xs);\n color: var(--mj-status-error);\n}\n\n/* Phone (375px): the header stacks, the stat tiles wrap two per row, and the icon rail\n becomes one section-picker button above the canvas (same pattern as the standard form). */\n@media (max-width: 768px) {\n .explorer-body {\n flex-direction: column;\n }\n\n .nav-rail {\n display: none;\n }\n\n .phone-section-picker {\n display: block;\n flex-shrink: 0;\n padding: 4px 8px;\n border-bottom: 1px solid var(--border-color);\n background: var(--bg-primary);\n }\n\n .explorer-header {\n flex-wrap: wrap;\n gap: 12px;\n padding: 12px 16px;\n }\n\n .entity-identity {\n flex-basis: 100%;\n }\n\n .entity-subtitle {\n flex-wrap: wrap;\n }\n\n .entity-description {\n flex-basis: 100%;\n white-space: normal;\n }\n\n .header-stats {\n flex-basis: 100%;\n flex-wrap: wrap;\n }\n\n .stat-item {\n flex: 1 1 40%;\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.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"] }]
4130
4165
  }], null, null); })();
4131
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJEntityFormComponentExtended, { className: "MJEntityFormComponentExtended", filePath: "src/lib/custom/Entities/entity-form.component.ts", lineNumber: 159 }); })();
4166
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJEntityFormComponentExtended, { className: "MJEntityFormComponentExtended", filePath: "src/lib/custom/Entities/entity-form.component.ts", lineNumber: 160 }); })();
4132
4167
  //# sourceMappingURL=entity-form.component.js.map