@memberjunction/ng-artifacts 3.4.0 → 4.1.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 (40) hide show
  1. package/README.md +190 -0
  2. package/dist/lib/components/artifact-message-card.component.d.ts +1 -1
  3. package/dist/lib/components/artifact-message-card.component.d.ts.map +1 -1
  4. package/dist/lib/components/artifact-message-card.component.js +5 -5
  5. package/dist/lib/components/artifact-message-card.component.js.map +1 -1
  6. package/dist/lib/components/artifact-type-plugin-viewer.component.d.ts.map +1 -1
  7. package/dist/lib/components/artifact-type-plugin-viewer.component.js +7 -6
  8. package/dist/lib/components/artifact-type-plugin-viewer.component.js.map +1 -1
  9. package/dist/lib/components/artifact-version-history.component.d.ts.map +1 -1
  10. package/dist/lib/components/artifact-version-history.component.js +89 -83
  11. package/dist/lib/components/artifact-version-history.component.js.map +1 -1
  12. package/dist/lib/components/artifact-viewer-panel.component.d.ts +7 -6
  13. package/dist/lib/components/artifact-viewer-panel.component.d.ts.map +1 -1
  14. package/dist/lib/components/artifact-viewer-panel.component.js +43 -32
  15. package/dist/lib/components/artifact-viewer-panel.component.js.map +1 -1
  16. package/dist/lib/components/base-artifact-viewer.component.d.ts.map +1 -1
  17. package/dist/lib/components/base-artifact-viewer.component.js +3 -2
  18. package/dist/lib/components/base-artifact-viewer.component.js.map +1 -1
  19. package/dist/lib/components/plugins/code-artifact-viewer.component.d.ts.map +1 -1
  20. package/dist/lib/components/plugins/code-artifact-viewer.component.js +3 -3
  21. package/dist/lib/components/plugins/code-artifact-viewer.component.js.map +1 -1
  22. package/dist/lib/components/plugins/component-artifact-viewer.component.d.ts.map +1 -1
  23. package/dist/lib/components/plugins/component-artifact-viewer.component.js +6 -6
  24. package/dist/lib/components/plugins/component-artifact-viewer.component.js.map +1 -1
  25. package/dist/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.d.ts.map +1 -1
  26. package/dist/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.js +112 -104
  27. package/dist/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.js.map +1 -1
  28. package/dist/lib/components/plugins/html-artifact-viewer.component.d.ts.map +1 -1
  29. package/dist/lib/components/plugins/html-artifact-viewer.component.js +4 -4
  30. package/dist/lib/components/plugins/html-artifact-viewer.component.js.map +1 -1
  31. package/dist/lib/components/plugins/json-artifact-viewer.component.d.ts.map +1 -1
  32. package/dist/lib/components/plugins/json-artifact-viewer.component.js +5 -5
  33. package/dist/lib/components/plugins/json-artifact-viewer.component.js.map +1 -1
  34. package/dist/lib/components/plugins/markdown-artifact-viewer.component.d.ts.map +1 -1
  35. package/dist/lib/components/plugins/markdown-artifact-viewer.component.js +4 -4
  36. package/dist/lib/components/plugins/markdown-artifact-viewer.component.js.map +1 -1
  37. package/dist/lib/components/plugins/svg-artifact-viewer.component.d.ts.map +1 -1
  38. package/dist/lib/components/plugins/svg-artifact-viewer.component.js +4 -4
  39. package/dist/lib/components/plugins/svg-artifact-viewer.component.js.map +1 -1
  40. package/package.json +22 -22
@@ -14,11 +14,11 @@ function DataRequirementsViewerComponent_Conditional_1_Template(rf, ctx) { if (r
14
14
  i0.ɵɵtext(5, "This component doesn't have any data requirements defined.");
15
15
  i0.ɵɵelementEnd()();
16
16
  } }
17
- function DataRequirementsViewerComponent_Conditional_2_div_6_Template(rf, ctx) { if (rf & 1) {
18
- i0.ɵɵelementStart(0, "div", 8)(1, "span", 9);
17
+ function DataRequirementsViewerComponent_Conditional_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
18
+ i0.ɵɵelementStart(0, "div", 7)(1, "span", 8);
19
19
  i0.ɵɵtext(2);
20
20
  i0.ɵɵelementEnd();
21
- i0.ɵɵelementStart(3, "span", 10);
21
+ i0.ɵɵelementStart(3, "span", 9);
22
22
  i0.ɵɵtext(4);
23
23
  i0.ɵɵelementEnd()();
24
24
  } if (rf & 2) {
@@ -28,11 +28,11 @@ function DataRequirementsViewerComponent_Conditional_2_div_6_Template(rf, ctx) {
28
28
  i0.ɵɵadvance(2);
29
29
  i0.ɵɵtextInterpolate(ctx_r0.entities.length === 1 ? "Entity" : "Entities");
30
30
  } }
31
- function DataRequirementsViewerComponent_Conditional_2_div_7_Template(rf, ctx) { if (rf & 1) {
32
- i0.ɵɵelementStart(0, "div", 8)(1, "span", 9);
31
+ function DataRequirementsViewerComponent_Conditional_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
32
+ i0.ɵɵelementStart(0, "div", 7)(1, "span", 8);
33
33
  i0.ɵɵtext(2);
34
34
  i0.ɵɵelementEnd();
35
- i0.ɵɵelementStart(3, "span", 10);
35
+ i0.ɵɵelementStart(3, "span", 9);
36
36
  i0.ɵɵtext(4);
37
37
  i0.ɵɵelementEnd()();
38
38
  } if (rf & 2) {
@@ -43,12 +43,12 @@ function DataRequirementsViewerComponent_Conditional_2_div_7_Template(rf, ctx) {
43
43
  i0.ɵɵtextInterpolate(ctx_r0.queries.length === 1 ? "Query" : "Queries");
44
44
  } }
45
45
  function DataRequirementsViewerComponent_Conditional_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
46
- i0.ɵɵelementStart(0, "div", 11)(1, "h4", 14);
47
- i0.ɵɵelement(2, "i", 15);
46
+ i0.ɵɵelementStart(0, "div", 10)(1, "h4", 13);
47
+ i0.ɵɵelement(2, "i", 14);
48
48
  i0.ɵɵtext(3, " Overview ");
49
49
  i0.ɵɵelementEnd();
50
- i0.ɵɵelementStart(4, "div", 16);
51
- i0.ɵɵelement(5, "mj-markdown", 17);
50
+ i0.ɵɵelementStart(4, "div", 15);
51
+ i0.ɵɵelement(5, "mj-markdown", 16);
52
52
  i0.ɵɵelementEnd()();
53
53
  } if (rf & 2) {
54
54
  const ctx_r0 = i0.ɵɵnextContext(2);
@@ -56,7 +56,7 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_13_Template(r
56
56
  i0.ɵɵproperty("data", ctx_r0.description)("enableCollapsibleHeadings", false)("enableLineNumbers", false)("enableSmartypants", true)("enableHtml", true);
57
57
  } }
58
58
  function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_8_Template(rf, ctx) { if (rf & 1) {
59
- i0.ɵɵelementStart(0, "p", 28);
59
+ i0.ɵɵelementStart(0, "p", 27);
60
60
  i0.ɵɵtext(1);
61
61
  i0.ɵɵelementEnd();
62
62
  } if (rf & 2) {
@@ -65,7 +65,7 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Cond
65
65
  i0.ɵɵtextInterpolate(entity_r3.description);
66
66
  } }
67
67
  function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_For_14_Template(rf, ctx) { if (rf & 1) {
68
- i0.ɵɵelementStart(0, "span", 35);
68
+ i0.ɵɵelementStart(0, "span", 34);
69
69
  i0.ɵɵelement(1, "i", 5);
70
70
  i0.ɵɵtext(2);
71
71
  i0.ɵɵelementEnd();
@@ -79,8 +79,8 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_For_
79
79
  i0.ɵɵtextInterpolate1(" ", perm_r4, " ");
80
80
  } }
81
81
  function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_1_Template(rf, ctx) { if (rf & 1) {
82
- i0.ɵɵelementStart(0, "div", 36);
83
- i0.ɵɵelement(1, "i", 15);
82
+ i0.ɵɵelementStart(0, "div", 35);
83
+ i0.ɵɵelement(1, "i", 14);
84
84
  i0.ɵɵelementStart(2, "span");
85
85
  i0.ɵɵtext(3);
86
86
  i0.ɵɵelementEnd()();
@@ -90,12 +90,12 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Cond
90
90
  i0.ɵɵtextInterpolate(entity_r3.usageContext);
91
91
  } }
92
92
  function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_Conditional_5_Template(rf, ctx) { if (rf & 1) {
93
- i0.ɵɵelementStart(0, "span", 47);
93
+ i0.ɵɵelementStart(0, "span", 46);
94
94
  i0.ɵɵtext(1, "*");
95
95
  i0.ɵɵelementEnd();
96
96
  } }
97
97
  function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_For_11_Template(rf, ctx) { if (rf & 1) {
98
- i0.ɵɵelementStart(0, "span", 50);
98
+ i0.ɵɵelementStart(0, "span", 49);
99
99
  i0.ɵɵtext(1);
100
100
  i0.ɵɵelementEnd();
101
101
  } if (rf & 2) {
@@ -106,20 +106,20 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Cond
106
106
  i0.ɵɵtextInterpolate(tag_r5);
107
107
  } }
108
108
  function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_Template(rf, ctx) { if (rf & 1) {
109
- i0.ɵɵelementStart(0, "div", 45)(1, "span", 41);
109
+ i0.ɵɵelementStart(0, "div", 44)(1, "span", 40);
110
110
  i0.ɵɵelement(2, "i", 5);
111
- i0.ɵɵelementStart(3, "span", 46);
111
+ i0.ɵɵelementStart(3, "span", 45);
112
112
  i0.ɵɵtext(4);
113
113
  i0.ɵɵelementEnd();
114
- i0.ɵɵtemplate(5, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_Conditional_5_Template, 2, 0, "span", 47);
114
+ i0.ɵɵconditionalCreate(5, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_Conditional_5_Template, 2, 0, "span", 46);
115
115
  i0.ɵɵelementEnd();
116
- i0.ɵɵelementStart(6, "span", 42)(7, "code", 48);
116
+ i0.ɵɵelementStart(6, "span", 41)(7, "code", 47);
117
117
  i0.ɵɵtext(8);
118
118
  i0.ɵɵelementEnd()();
119
- i0.ɵɵelementStart(9, "span", 43);
120
- i0.ɵɵrepeaterCreate(10, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_For_11_Template, 2, 3, "span", 49, i0.ɵɵrepeaterTrackByIdentity);
119
+ i0.ɵɵelementStart(9, "span", 42);
120
+ i0.ɵɵrepeaterCreate(10, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_For_11_Template, 2, 3, "span", 48, i0.ɵɵrepeaterTrackByIdentity);
121
121
  i0.ɵɵelementEnd();
122
- i0.ɵɵelementStart(12, "span", 44);
122
+ i0.ɵɵelementStart(12, "span", 43);
123
123
  i0.ɵɵtext(13);
124
124
  i0.ɵɵelementEnd()();
125
125
  } if (rf & 2) {
@@ -141,22 +141,22 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Cond
141
141
  i0.ɵɵtextInterpolate1(" ", field_r6.description || "\u2014", " ");
142
142
  } }
143
143
  function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_Template(rf, ctx) { if (rf & 1) {
144
- i0.ɵɵelementStart(0, "div", 37)(1, "h5", 38);
144
+ i0.ɵɵelementStart(0, "div", 36)(1, "h5", 37);
145
145
  i0.ɵɵtext(2, "Fields");
146
146
  i0.ɵɵelementEnd();
147
- i0.ɵɵelementStart(3, "div", 39)(4, "div", 40)(5, "span", 41);
147
+ i0.ɵɵelementStart(3, "div", 38)(4, "div", 39)(5, "span", 40);
148
148
  i0.ɵɵtext(6, "Name");
149
149
  i0.ɵɵelementEnd();
150
- i0.ɵɵelementStart(7, "span", 42);
150
+ i0.ɵɵelementStart(7, "span", 41);
151
151
  i0.ɵɵtext(8, "Type");
152
152
  i0.ɵɵelementEnd();
153
- i0.ɵɵelementStart(9, "span", 43);
153
+ i0.ɵɵelementStart(9, "span", 42);
154
154
  i0.ɵɵtext(10, "Usage");
155
155
  i0.ɵɵelementEnd();
156
- i0.ɵɵelementStart(11, "span", 44);
156
+ i0.ɵɵelementStart(11, "span", 43);
157
157
  i0.ɵɵtext(12, "Description");
158
158
  i0.ɵɵelementEnd()();
159
- i0.ɵɵrepeaterCreate(13, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_Template, 14, 7, "div", 45, _forTrack0);
159
+ i0.ɵɵrepeaterCreate(13, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_Template, 14, 7, "div", 44, _forTrack0);
160
160
  i0.ɵɵelementEnd()();
161
161
  } if (rf & 2) {
162
162
  const entity_r3 = i0.ɵɵnextContext(2).$implicit;
@@ -164,8 +164,9 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Cond
164
164
  i0.ɵɵrepeater(entity_r3.fieldMetadata);
165
165
  } }
166
166
  function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Template(rf, ctx) { if (rf & 1) {
167
- i0.ɵɵelementStart(0, "div", 34);
168
- i0.ɵɵtemplate(1, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_1_Template, 4, 1, "div", 36)(2, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_Template, 15, 0, "div", 37);
167
+ i0.ɵɵelementStart(0, "div", 33);
168
+ i0.ɵɵconditionalCreate(1, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_1_Template, 4, 1, "div", 35);
169
+ i0.ɵɵconditionalCreate(2, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_Template, 15, 0, "div", 36);
169
170
  i0.ɵɵelementEnd();
170
171
  } if (rf & 2) {
171
172
  const entity_r3 = i0.ɵɵnextContext().$implicit;
@@ -176,26 +177,26 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Cond
176
177
  } }
177
178
  function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Template(rf, ctx) { if (rf & 1) {
178
179
  const _r2 = i0.ɵɵgetCurrentView();
179
- i0.ɵɵelementStart(0, "div", 22)(1, "div", 23);
180
+ i0.ɵɵelementStart(0, "div", 21)(1, "div", 22);
180
181
  i0.ɵɵlistener("click", function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Template_div_click_1_listener() { const entity_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.toggleEntity(entity_r3.name)); });
181
- i0.ɵɵelementStart(2, "div", 24)(3, "div", 25);
182
- i0.ɵɵelement(4, "i", 19);
182
+ i0.ɵɵelementStart(2, "div", 23)(3, "div", 24);
183
+ i0.ɵɵelement(4, "i", 18);
183
184
  i0.ɵɵelementEnd();
184
- i0.ɵɵelementStart(5, "div", 26)(6, "h4", 27);
185
+ i0.ɵɵelementStart(5, "div", 25)(6, "h4", 26);
185
186
  i0.ɵɵtext(7);
186
187
  i0.ɵɵelementEnd();
187
- i0.ɵɵtemplate(8, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_8_Template, 2, 1, "p", 28);
188
+ i0.ɵɵconditionalCreate(8, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_8_Template, 2, 1, "p", 27);
188
189
  i0.ɵɵelementEnd();
189
- i0.ɵɵelementStart(9, "div", 29);
190
+ i0.ɵɵelementStart(9, "div", 28);
190
191
  i0.ɵɵelement(10, "i", 5);
191
192
  i0.ɵɵelementEnd()();
192
- i0.ɵɵelementStart(11, "div", 30)(12, "div", 31);
193
- i0.ɵɵrepeaterCreate(13, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_For_14_Template, 3, 4, "span", 32, i0.ɵɵrepeaterTrackByIdentity);
193
+ i0.ɵɵelementStart(11, "div", 29)(12, "div", 30);
194
+ i0.ɵɵrepeaterCreate(13, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_For_14_Template, 3, 4, "span", 31, i0.ɵɵrepeaterTrackByIdentity);
194
195
  i0.ɵɵelementEnd();
195
- i0.ɵɵelementStart(15, "span", 33);
196
+ i0.ɵɵelementStart(15, "span", 32);
196
197
  i0.ɵɵtext(16);
197
198
  i0.ɵɵelementEnd()()();
198
- i0.ɵɵtemplate(17, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Template, 3, 2, "div", 34);
199
+ i0.ɵɵconditionalCreate(17, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Template, 3, 2, "div", 33);
199
200
  i0.ɵɵelementEnd();
200
201
  } if (rf & 2) {
201
202
  const entity_r3 = ctx.$implicit;
@@ -215,12 +216,12 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Temp
215
216
  i0.ɵɵconditional(ctx_r0.isEntityExpanded(entity_r3.name) ? 17 : -1);
216
217
  } }
217
218
  function DataRequirementsViewerComponent_Conditional_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
218
- i0.ɵɵelementStart(0, "div", 12)(1, "h3", 18);
219
- i0.ɵɵelement(2, "i", 19);
219
+ i0.ɵɵelementStart(0, "div", 11)(1, "h3", 17);
220
+ i0.ɵɵelement(2, "i", 18);
220
221
  i0.ɵɵtext(3, " Entities ");
221
222
  i0.ɵɵelementEnd();
222
- i0.ɵɵelementStart(4, "div", 20);
223
- i0.ɵɵrepeaterCreate(5, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Template, 18, 7, "div", 21, _forTrack0);
223
+ i0.ɵɵelementStart(4, "div", 19);
224
+ i0.ɵɵrepeaterCreate(5, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Template, 18, 7, "div", 20, _forTrack0);
224
225
  i0.ɵɵelementEnd()();
225
226
  } if (rf & 2) {
226
227
  const ctx_r0 = i0.ɵɵnextContext(2);
@@ -228,13 +229,13 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_Template(r
228
229
  i0.ɵɵrepeater(ctx_r0.entities);
229
230
  } }
230
231
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_9_Template(rf, ctx) { if (rf & 1) {
231
- i0.ɵɵelementStart(0, "span", 56);
232
- i0.ɵɵelement(1, "i", 59);
232
+ i0.ɵɵelementStart(0, "span", 55);
233
+ i0.ɵɵelement(1, "i", 58);
233
234
  i0.ɵɵtext(2, " NEW ");
234
235
  i0.ɵɵelementEnd();
235
236
  } }
236
237
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_12_Template(rf, ctx) { if (rf & 1) {
237
- i0.ɵɵelementStart(0, "p", 28);
238
+ i0.ɵɵelementStart(0, "p", 27);
238
239
  i0.ɵɵtext(1);
239
240
  i0.ɵɵelementEnd();
240
241
  } if (rf & 2) {
@@ -243,8 +244,8 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
243
244
  i0.ɵɵtextInterpolate(query_r8.description);
244
245
  } }
245
246
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_16_For_2_Template(rf, ctx) { if (rf & 1) {
246
- i0.ɵɵelementStart(0, "span", 60);
247
- i0.ɵɵelement(1, "i", 19);
247
+ i0.ɵɵelementStart(0, "span", 59);
248
+ i0.ɵɵelement(1, "i", 18);
248
249
  i0.ɵɵtext(2);
249
250
  i0.ɵɵelementEnd();
250
251
  } if (rf & 2) {
@@ -253,8 +254,8 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
253
254
  i0.ɵɵtextInterpolate1(" ", entityName_r9, " ");
254
255
  } }
255
256
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_16_Template(rf, ctx) { if (rf & 1) {
256
- i0.ɵɵelementStart(0, "div", 58);
257
- i0.ɵɵrepeaterCreate(1, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_16_For_2_Template, 3, 1, "span", 60, i0.ɵɵrepeaterTrackByIdentity);
257
+ i0.ɵɵelementStart(0, "div", 57);
258
+ i0.ɵɵrepeaterCreate(1, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_16_For_2_Template, 3, 1, "span", 59, i0.ɵɵrepeaterTrackByIdentity);
258
259
  i0.ɵɵelementEnd();
259
260
  } if (rf & 2) {
260
261
  const query_r8 = i0.ɵɵnextContext().$implicit;
@@ -262,17 +263,17 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
262
263
  i0.ɵɵrepeater(query_r8.entityNames);
263
264
  } }
264
265
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_1_For_6_Conditional_4_Template(rf, ctx) { if (rf & 1) {
265
- i0.ɵɵelementStart(0, "span", 69);
266
+ i0.ɵɵelementStart(0, "span", 68);
266
267
  i0.ɵɵtext(1, "Required");
267
268
  i0.ɵɵelementEnd();
268
269
  } }
269
270
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_1_For_6_Conditional_5_Template(rf, ctx) { if (rf & 1) {
270
- i0.ɵɵelementStart(0, "span", 70);
271
+ i0.ɵɵelementStart(0, "span", 69);
271
272
  i0.ɵɵtext(1, "Optional");
272
273
  i0.ɵɵelementEnd();
273
274
  } }
274
275
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_1_For_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
275
- i0.ɵɵelementStart(0, "code", 71);
276
+ i0.ɵɵelementStart(0, "code", 70);
276
277
  i0.ɵɵtext(1);
277
278
  i0.ɵɵelementEnd();
278
279
  } if (rf & 2) {
@@ -281,7 +282,7 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
281
282
  i0.ɵɵtextInterpolate(param_r10.type);
282
283
  } }
283
284
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_1_For_6_Conditional_7_Template(rf, ctx) { if (rf & 1) {
284
- i0.ɵɵelementStart(0, "p", 72);
285
+ i0.ɵɵelementStart(0, "p", 71);
285
286
  i0.ɵɵtext(1);
286
287
  i0.ɵɵelementEnd();
287
288
  } if (rf & 2) {
@@ -290,7 +291,7 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
290
291
  i0.ɵɵtextInterpolate(param_r10.description);
291
292
  } }
292
293
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_1_For_6_Conditional_8_Template(rf, ctx) { if (rf & 1) {
293
- i0.ɵɵelementStart(0, "div", 73)(1, "span", 74);
294
+ i0.ɵɵelementStart(0, "div", 72)(1, "span", 73);
294
295
  i0.ɵɵtext(2, "Sample:");
295
296
  i0.ɵɵelementEnd();
296
297
  i0.ɵɵelementStart(3, "code");
@@ -302,12 +303,14 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
302
303
  i0.ɵɵtextInterpolate(param_r10.sampleValue || param_r10.testValue);
303
304
  } }
304
305
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_1_For_6_Template(rf, ctx) { if (rf & 1) {
305
- i0.ɵɵelementStart(0, "div", 66)(1, "div", 67)(2, "span", 68);
306
+ i0.ɵɵelementStart(0, "div", 65)(1, "div", 66)(2, "span", 67);
306
307
  i0.ɵɵtext(3);
307
308
  i0.ɵɵelementEnd();
308
- i0.ɵɵtemplate(4, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_1_For_6_Conditional_4_Template, 2, 0, "span", 69)(5, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_1_For_6_Conditional_5_Template, 2, 0, "span", 70)(6, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_1_For_6_Conditional_6_Template, 2, 1, "code", 71);
309
+ i0.ɵɵconditionalCreate(4, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_1_For_6_Conditional_4_Template, 2, 0, "span", 68)(5, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_1_For_6_Conditional_5_Template, 2, 0, "span", 69);
310
+ i0.ɵɵconditionalCreate(6, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_1_For_6_Conditional_6_Template, 2, 1, "code", 70);
309
311
  i0.ɵɵelementEnd();
310
- i0.ɵɵtemplate(7, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_1_For_6_Conditional_7_Template, 2, 1, "p", 72)(8, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_1_For_6_Conditional_8_Template, 5, 1, "div", 73);
312
+ i0.ɵɵconditionalCreate(7, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_1_For_6_Conditional_7_Template, 2, 1, "p", 71);
313
+ i0.ɵɵconditionalCreate(8, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_1_For_6_Conditional_8_Template, 5, 1, "div", 72);
311
314
  i0.ɵɵelementEnd();
312
315
  } if (rf & 2) {
313
316
  const param_r10 = ctx.$implicit;
@@ -323,12 +326,12 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
323
326
  i0.ɵɵconditional(param_r10.sampleValue || param_r10.testValue ? 8 : -1);
324
327
  } }
325
328
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_1_Template(rf, ctx) { if (rf & 1) {
326
- i0.ɵɵelementStart(0, "div", 61)(1, "h5", 63);
327
- i0.ɵɵelement(2, "i", 64);
329
+ i0.ɵɵelementStart(0, "div", 60)(1, "h5", 62);
330
+ i0.ɵɵelement(2, "i", 63);
328
331
  i0.ɵɵtext(3, " Parameters ");
329
332
  i0.ɵɵelementEnd();
330
- i0.ɵɵelementStart(4, "div", 65);
331
- i0.ɵɵrepeaterCreate(5, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_1_For_6_Template, 9, 5, "div", 66, _forTrack0);
333
+ i0.ɵɵelementStart(4, "div", 64);
334
+ i0.ɵɵrepeaterCreate(5, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_1_For_6_Template, 9, 5, "div", 65, _forTrack0);
332
335
  i0.ɵɵelementEnd()();
333
336
  } if (rf & 2) {
334
337
  const query_r8 = i0.ɵɵnextContext(2).$implicit;
@@ -336,15 +339,15 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
336
339
  i0.ɵɵrepeater(query_r8.parameters);
337
340
  } }
338
341
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_2_For_12_Template(rf, ctx) { if (rf & 1) {
339
- i0.ɵɵelementStart(0, "div", 45)(1, "span", 41);
342
+ i0.ɵɵelementStart(0, "div", 44)(1, "span", 40);
340
343
  i0.ɵɵelement(2, "i", 5);
341
- i0.ɵɵelementStart(3, "span", 46);
344
+ i0.ɵɵelementStart(3, "span", 45);
342
345
  i0.ɵɵtext(4);
343
346
  i0.ɵɵelementEnd()();
344
- i0.ɵɵelementStart(5, "span", 42)(6, "code", 48);
347
+ i0.ɵɵelementStart(5, "span", 41)(6, "code", 47);
345
348
  i0.ɵɵtext(7);
346
349
  i0.ɵɵelementEnd()();
347
- i0.ɵɵelementStart(8, "span", 44);
350
+ i0.ɵɵelementStart(8, "span", 43);
348
351
  i0.ɵɵtext(9);
349
352
  i0.ɵɵelementEnd()();
350
353
  } if (rf & 2) {
@@ -361,19 +364,19 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
361
364
  i0.ɵɵtextInterpolate1(" ", field_r11.description || "\u2014", " ");
362
365
  } }
363
366
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_2_Template(rf, ctx) { if (rf & 1) {
364
- i0.ɵɵelementStart(0, "div", 37)(1, "h5", 38);
367
+ i0.ɵɵelementStart(0, "div", 36)(1, "h5", 37);
365
368
  i0.ɵɵtext(2, "Output Fields");
366
369
  i0.ɵɵelementEnd();
367
- i0.ɵɵelementStart(3, "div", 39)(4, "div", 40)(5, "span", 41);
370
+ i0.ɵɵelementStart(3, "div", 38)(4, "div", 39)(5, "span", 40);
368
371
  i0.ɵɵtext(6, "Name");
369
372
  i0.ɵɵelementEnd();
370
- i0.ɵɵelementStart(7, "span", 42);
373
+ i0.ɵɵelementStart(7, "span", 41);
371
374
  i0.ɵɵtext(8, "Type");
372
375
  i0.ɵɵelementEnd();
373
- i0.ɵɵelementStart(9, "span", 44);
376
+ i0.ɵɵelementStart(9, "span", 43);
374
377
  i0.ɵɵtext(10, "Description");
375
378
  i0.ɵɵelementEnd()();
376
- i0.ɵɵrepeaterCreate(11, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_2_For_12_Template, 10, 6, "div", 45, _forTrack0);
379
+ i0.ɵɵrepeaterCreate(11, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_2_For_12_Template, 10, 6, "div", 44, _forTrack0);
377
380
  i0.ɵɵelementEnd()();
378
381
  } if (rf & 2) {
379
382
  const query_r8 = i0.ɵɵnextContext(2).$implicit;
@@ -381,11 +384,11 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
381
384
  i0.ɵɵrepeater(query_r8.fields);
382
385
  } }
383
386
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_3_Template(rf, ctx) { if (rf & 1) {
384
- i0.ɵɵelementStart(0, "div", 62)(1, "h5", 75);
385
- i0.ɵɵelement(2, "i", 76);
387
+ i0.ɵɵelementStart(0, "div", 61)(1, "h5", 74);
388
+ i0.ɵɵelement(2, "i", 75);
386
389
  i0.ɵɵtext(3, " Query SQL ");
387
390
  i0.ɵɵelementEnd();
388
- i0.ɵɵelementStart(4, "pre", 77);
391
+ i0.ɵɵelementStart(4, "pre", 76);
389
392
  i0.ɵɵtext(5);
390
393
  i0.ɵɵelementEnd()();
391
394
  } if (rf & 2) {
@@ -394,8 +397,10 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
394
397
  i0.ɵɵtextInterpolate(query_r8.newQuerySQL);
395
398
  } }
396
399
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Template(rf, ctx) { if (rf & 1) {
397
- i0.ɵɵelementStart(0, "div", 34);
398
- i0.ɵɵtemplate(1, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_1_Template, 7, 0, "div", 61)(2, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_2_Template, 13, 0, "div", 37)(3, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_3_Template, 6, 1, "div", 62);
400
+ i0.ɵɵelementStart(0, "div", 33);
401
+ i0.ɵɵconditionalCreate(1, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_1_Template, 7, 0, "div", 60);
402
+ i0.ɵɵconditionalCreate(2, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_2_Template, 13, 0, "div", 36);
403
+ i0.ɵɵconditionalCreate(3, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_3_Template, 6, 1, "div", 61);
399
404
  i0.ɵɵelementEnd();
400
405
  } if (rf & 2) {
401
406
  const query_r8 = i0.ɵɵnextContext().$implicit;
@@ -408,30 +413,30 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
408
413
  } }
409
414
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Template(rf, ctx) { if (rf & 1) {
410
415
  const _r7 = i0.ɵɵgetCurrentView();
411
- i0.ɵɵelementStart(0, "div", 52)(1, "div", 23);
416
+ i0.ɵɵelementStart(0, "div", 51)(1, "div", 22);
412
417
  i0.ɵɵlistener("click", function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Template_div_click_1_listener() { const query_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.toggleQuery(ctx_r0.getQueryKey(query_r8))); });
413
- i0.ɵɵelementStart(2, "div", 24)(3, "div", 53);
414
- i0.ɵɵelement(4, "i", 54);
418
+ i0.ɵɵelementStart(2, "div", 23)(3, "div", 52);
419
+ i0.ɵɵelement(4, "i", 53);
415
420
  i0.ɵɵelementEnd();
416
- i0.ɵɵelementStart(5, "div", 26)(6, "div", 55)(7, "h4", 27);
421
+ i0.ɵɵelementStart(5, "div", 25)(6, "div", 54)(7, "h4", 26);
417
422
  i0.ɵɵtext(8);
418
423
  i0.ɵɵelementEnd();
419
- i0.ɵɵtemplate(9, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_9_Template, 3, 0, "span", 56);
424
+ i0.ɵɵconditionalCreate(9, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_9_Template, 3, 0, "span", 55);
420
425
  i0.ɵɵelementEnd();
421
- i0.ɵɵelementStart(10, "p", 57);
426
+ i0.ɵɵelementStart(10, "p", 56);
422
427
  i0.ɵɵtext(11);
423
428
  i0.ɵɵelementEnd();
424
- i0.ɵɵtemplate(12, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_12_Template, 2, 1, "p", 28);
429
+ i0.ɵɵconditionalCreate(12, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_12_Template, 2, 1, "p", 27);
425
430
  i0.ɵɵelementEnd();
426
- i0.ɵɵelementStart(13, "div", 29);
431
+ i0.ɵɵelementStart(13, "div", 28);
427
432
  i0.ɵɵelement(14, "i", 5);
428
433
  i0.ɵɵelementEnd()();
429
- i0.ɵɵelementStart(15, "div", 30);
430
- i0.ɵɵtemplate(16, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_16_Template, 3, 0, "div", 58);
431
- i0.ɵɵelementStart(17, "span", 33);
434
+ i0.ɵɵelementStart(15, "div", 29);
435
+ i0.ɵɵconditionalCreate(16, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_16_Template, 3, 0, "div", 57);
436
+ i0.ɵɵelementStart(17, "span", 32);
432
437
  i0.ɵɵtext(18);
433
438
  i0.ɵɵelementEnd()()();
434
- i0.ɵɵtemplate(19, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Template, 4, 3, "div", 34);
439
+ i0.ɵɵconditionalCreate(19, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Template, 4, 3, "div", 33);
435
440
  i0.ɵɵelementEnd();
436
441
  } if (rf & 2) {
437
442
  const query_r8 = ctx.$implicit;
@@ -455,12 +460,12 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Temp
455
460
  i0.ɵɵconditional(ctx_r0.isQueryExpanded(ctx_r0.getQueryKey(query_r8)) ? 19 : -1);
456
461
  } }
457
462
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
458
- i0.ɵɵelementStart(0, "div", 13)(1, "h3", 18);
463
+ i0.ɵɵelementStart(0, "div", 12)(1, "h3", 17);
459
464
  i0.ɵɵelement(2, "i", 2);
460
465
  i0.ɵɵtext(3, " Queries ");
461
466
  i0.ɵɵelementEnd();
462
- i0.ɵɵelementStart(4, "div", 20);
463
- i0.ɵɵrepeaterCreate(5, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Template, 20, 10, "div", 51, _forTrack1, true);
467
+ i0.ɵɵelementStart(4, "div", 19);
468
+ i0.ɵɵrepeaterCreate(5, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Template, 20, 10, "div", 50, _forTrack1, true);
464
469
  i0.ɵɵelementEnd()();
465
470
  } if (rf & 2) {
466
471
  const ctx_r0 = i0.ɵɵnextContext(2);
@@ -474,14 +479,17 @@ function DataRequirementsViewerComponent_Conditional_2_Template(rf, ctx) { if (r
474
479
  i0.ɵɵtext(4);
475
480
  i0.ɵɵelementEnd()();
476
481
  i0.ɵɵelementStart(5, "div", 6);
477
- i0.ɵɵtemplate(6, DataRequirementsViewerComponent_Conditional_2_div_6_Template, 5, 2, "div", 7)(7, DataRequirementsViewerComponent_Conditional_2_div_7_Template, 5, 2, "div", 7);
478
- i0.ɵɵelementStart(8, "div", 8)(9, "span", 9);
482
+ i0.ɵɵconditionalCreate(6, DataRequirementsViewerComponent_Conditional_2_Conditional_6_Template, 5, 2, "div", 7);
483
+ i0.ɵɵconditionalCreate(7, DataRequirementsViewerComponent_Conditional_2_Conditional_7_Template, 5, 2, "div", 7);
484
+ i0.ɵɵelementStart(8, "div", 7)(9, "span", 8);
479
485
  i0.ɵɵtext(10);
480
486
  i0.ɵɵelementEnd();
481
- i0.ɵɵelementStart(11, "span", 10);
487
+ i0.ɵɵelementStart(11, "span", 9);
482
488
  i0.ɵɵtext(12);
483
489
  i0.ɵɵelementEnd()()()();
484
- i0.ɵɵtemplate(13, DataRequirementsViewerComponent_Conditional_2_Conditional_13_Template, 6, 5, "div", 11)(14, DataRequirementsViewerComponent_Conditional_2_Conditional_14_Template, 7, 0, "div", 12)(15, DataRequirementsViewerComponent_Conditional_2_Conditional_15_Template, 7, 0, "div", 13);
490
+ i0.ɵɵconditionalCreate(13, DataRequirementsViewerComponent_Conditional_2_Conditional_13_Template, 6, 5, "div", 10);
491
+ i0.ɵɵconditionalCreate(14, DataRequirementsViewerComponent_Conditional_2_Conditional_14_Template, 7, 0, "div", 11);
492
+ i0.ɵɵconditionalCreate(15, DataRequirementsViewerComponent_Conditional_2_Conditional_15_Template, 7, 0, "div", 12);
485
493
  } if (rf & 2) {
486
494
  const ctx_r0 = i0.ɵɵnextContext();
487
495
  i0.ɵɵadvance(2);
@@ -489,9 +497,9 @@ function DataRequirementsViewerComponent_Conditional_2_Template(rf, ctx) { if (r
489
497
  i0.ɵɵadvance(2);
490
498
  i0.ɵɵtextInterpolate(ctx_r0.modeLabel);
491
499
  i0.ɵɵadvance(2);
492
- i0.ɵɵproperty("ngIf", ctx_r0.entities.length > 0);
500
+ i0.ɵɵconditional(ctx_r0.entities.length > 0 ? 6 : -1);
493
501
  i0.ɵɵadvance();
494
- i0.ɵɵproperty("ngIf", ctx_r0.queries.length > 0);
502
+ i0.ɵɵconditional(ctx_r0.queries.length > 0 ? 7 : -1);
495
503
  i0.ɵɵadvance(3);
496
504
  i0.ɵɵtextInterpolate(ctx_r0.totalFieldCount);
497
505
  i0.ɵɵadvance(2);
@@ -666,20 +674,20 @@ export class DataRequirementsViewerComponent {
666
674
  }
667
675
  }
668
676
  static ɵfac = function DataRequirementsViewerComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DataRequirementsViewerComponent)(); };
669
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DataRequirementsViewerComponent, selectors: [["mj-data-requirements-viewer"]], inputs: { dataRequirements: "dataRequirements" }, decls: 3, vars: 1, consts: [[1, "data-requirements-viewer"], [1, "empty-state"], [1, "fas", "fa-database"], [1, "summary-header"], [1, "mode-badge"], [1, "fas", 3, "ngClass"], [1, "stats"], ["class", "stat-item", 4, "ngIf"], [1, "stat-item"], [1, "stat-value"], [1, "stat-label"], [1, "description-section"], [1, "section", "entities-section"], [1, "section", "queries-section"], [1, "description-title"], [1, "fas", "fa-info-circle"], [1, "description-content"], [3, "data", "enableCollapsibleHeadings", "enableLineNumbers", "enableSmartypants", "enableHtml"], [1, "section-title"], [1, "fas", "fa-table"], [1, "cards-container"], [1, "data-card", "entity-card", 3, "expanded"], [1, "data-card", "entity-card"], [1, "card-header", 3, "click"], [1, "card-title-row"], [1, "card-icon"], [1, "card-title-info"], [1, "card-title"], [1, "card-description"], [1, "expand-icon"], [1, "card-meta"], [1, "permissions-row"], [1, "permission-badge", 3, "background-color"], [1, "field-count"], [1, "card-body"], [1, "permission-badge"], [1, "usage-context"], [1, "fields-section"], [1, "fields-title"], [1, "fields-table"], [1, "fields-header"], [1, "field-col", "name-col"], [1, "field-col", "type-col"], [1, "field-col", "tags-col"], [1, "field-col", "desc-col"], [1, "field-row"], [1, "field-name"], ["title", "Required", 1, "required-indicator"], [1, "field-type"], [1, "usage-tag", 3, "background-color"], [1, "usage-tag"], [1, "data-card", "query-card", 3, "expanded"], [1, "data-card", "query-card"], [1, "card-icon", "query-icon"], [1, "fas", "fa-code"], [1, "title-with-badge"], ["title", "This query was newly created for this component", 1, "new-query-badge"], [1, "card-path"], [1, "entity-badges"], [1, "fas", "fa-sparkles"], [1, "entity-badge"], [1, "parameters-section"], [1, "sql-section"], [1, "parameters-title"], [1, "fas", "fa-sliders-h"], [1, "parameters-list"], [1, "parameter-item"], [1, "param-header"], [1, "param-name"], [1, "required-badge"], [1, "optional-badge"], [1, "param-type"], [1, "param-description"], [1, "param-sample"], [1, "sample-label"], [1, "sql-title"], [1, "fas", "fa-terminal"], [1, "sql-code"]], template: function DataRequirementsViewerComponent_Template(rf, ctx) { if (rf & 1) {
677
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DataRequirementsViewerComponent, selectors: [["mj-data-requirements-viewer"]], inputs: { dataRequirements: "dataRequirements" }, standalone: false, decls: 3, vars: 1, consts: [[1, "data-requirements-viewer"], [1, "empty-state"], [1, "fas", "fa-database"], [1, "summary-header"], [1, "mode-badge"], [1, "fas", 3, "ngClass"], [1, "stats"], [1, "stat-item"], [1, "stat-value"], [1, "stat-label"], [1, "description-section"], [1, "section", "entities-section"], [1, "section", "queries-section"], [1, "description-title"], [1, "fas", "fa-info-circle"], [1, "description-content"], [3, "data", "enableCollapsibleHeadings", "enableLineNumbers", "enableSmartypants", "enableHtml"], [1, "section-title"], [1, "fas", "fa-table"], [1, "cards-container"], [1, "data-card", "entity-card", 3, "expanded"], [1, "data-card", "entity-card"], [1, "card-header", 3, "click"], [1, "card-title-row"], [1, "card-icon"], [1, "card-title-info"], [1, "card-title"], [1, "card-description"], [1, "expand-icon"], [1, "card-meta"], [1, "permissions-row"], [1, "permission-badge", 3, "background-color"], [1, "field-count"], [1, "card-body"], [1, "permission-badge"], [1, "usage-context"], [1, "fields-section"], [1, "fields-title"], [1, "fields-table"], [1, "fields-header"], [1, "field-col", "name-col"], [1, "field-col", "type-col"], [1, "field-col", "tags-col"], [1, "field-col", "desc-col"], [1, "field-row"], [1, "field-name"], ["title", "Required", 1, "required-indicator"], [1, "field-type"], [1, "usage-tag", 3, "background-color"], [1, "usage-tag"], [1, "data-card", "query-card", 3, "expanded"], [1, "data-card", "query-card"], [1, "card-icon", "query-icon"], [1, "fas", "fa-code"], [1, "title-with-badge"], ["title", "This query was newly created for this component", 1, "new-query-badge"], [1, "card-path"], [1, "entity-badges"], [1, "fas", "fa-sparkles"], [1, "entity-badge"], [1, "parameters-section"], [1, "sql-section"], [1, "parameters-title"], [1, "fas", "fa-sliders-h"], [1, "parameters-list"], [1, "parameter-item"], [1, "param-header"], [1, "param-name"], [1, "required-badge"], [1, "optional-badge"], [1, "param-type"], [1, "param-description"], [1, "param-sample"], [1, "sample-label"], [1, "sql-title"], [1, "fas", "fa-terminal"], [1, "sql-code"]], template: function DataRequirementsViewerComponent_Template(rf, ctx) { if (rf & 1) {
670
678
  i0.ɵɵelementStart(0, "div", 0);
671
- i0.ɵɵtemplate(1, DataRequirementsViewerComponent_Conditional_1_Template, 6, 0, "div", 1)(2, DataRequirementsViewerComponent_Conditional_2_Template, 16, 9);
679
+ i0.ɵɵconditionalCreate(1, DataRequirementsViewerComponent_Conditional_1_Template, 6, 0, "div", 1)(2, DataRequirementsViewerComponent_Conditional_2_Template, 16, 9);
672
680
  i0.ɵɵelementEnd();
673
681
  } if (rf & 2) {
674
682
  i0.ɵɵadvance();
675
683
  i0.ɵɵconditional(!ctx.hasData ? 1 : 2);
676
- } }, dependencies: [i1.NgClass, i1.NgIf, i2.MarkdownComponent], styles: [".data-requirements-viewer[_ngcontent-%COMP%] {\n padding: 0;\n height: 100%;\n overflow-y: auto;\n background: #fafbfc;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n color: #6c757d;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n color: #dee2e6;\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: #495057;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n color: #6c757d;\n}\n\n\n\n.summary-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: linear-gradient(135deg, #033ba3 0%, #5cb6f6 100%);\n color: white;\n border-radius: 0;\n}\n\n.mode-badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 600;\n}\n\n.mode-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n opacity: 0.9;\n}\n\n.stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2px;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n line-height: 1;\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n opacity: 0.85;\n}\n\n\n\n.description-section[_ngcontent-%COMP%] {\n padding: 20px;\n background: white;\n border-bottom: 1px solid #e9ecef;\n}\n\n.description-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n}\n\n.description-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #5B4FE9;\n}\n\n.description-content[_ngcontent-%COMP%] {\n font-size: 14px;\n line-height: 1.6;\n color: #495057;\n}\n\n.description-content[_ngcontent-%COMP%] p {\n margin: 0 0 12px 0;\n}\n\n.description-content[_ngcontent-%COMP%] p:last-child {\n margin-bottom: 0;\n}\n\n.description-content[_ngcontent-%COMP%] pre {\n background: #f8f9fa;\n padding: 12px;\n border-radius: 6px;\n overflow-x: auto;\n}\n\n.description-content[_ngcontent-%COMP%] code {\n background: #f1f3f4;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 13px;\n}\n\n\n\n.section[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n.section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: #343a40;\n}\n\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #5B4FE9;\n font-size: 18px;\n}\n\n\n\n.cards-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n\n\n.data-card[_ngcontent-%COMP%] {\n background: white;\n border-radius: 8px;\n border: 1px solid #e9ecef;\n overflow: hidden;\n transition: box-shadow 0.2s ease, border-color 0.2s ease;\n}\n\n.data-card[_ngcontent-%COMP%]:hover {\n border-color: #dee2e6;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n}\n\n.data-card.expanded[_ngcontent-%COMP%] {\n border-color: #5B4FE9;\n box-shadow: 0 4px 12px rgba(91, 79, 233, 0.12);\n}\n\n\n\n.card-header[_ngcontent-%COMP%] {\n padding: 16px;\n cursor: pointer;\n user-select: none;\n}\n\n.card-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n}\n\n.card-icon[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border-radius: 8px;\n background: linear-gradient(135deg, #E8F5E9 0%, #C8E6C9 100%);\n color: #4CAF50;\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.card-icon.query-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #E3F2FD 0%, #BBDEFB 100%);\n color: #2196F3;\n}\n\n.card-title-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.title-with-badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n margin-bottom: 4px;\n}\n\n.card-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: #212529;\n}\n\n.new-query-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: 700;\n background: linear-gradient(135deg, #10b981 0%, #059669 100%);\n color: white;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: 0 2px 4px rgba(16, 185, 129, 0.2);\n animation: _ngcontent-%COMP%_subtle-pulse 2s ease-in-out infinite;\n}\n\n.new-query-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n@keyframes _ngcontent-%COMP%_subtle-pulse {\n 0%, 100% {\n box-shadow: 0 2px 4px rgba(16, 185, 129, 0.2);\n }\n 50% {\n box-shadow: 0 2px 8px rgba(16, 185, 129, 0.4);\n }\n}\n\n.card-path[_ngcontent-%COMP%] {\n margin: 0 0 4px 0;\n font-size: 12px;\n color: #6c757d;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.card-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: #6c757d;\n line-height: 1.4;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n color: #adb5bd;\n font-size: 12px;\n padding: 4px;\n}\n\n.data-card.expanded[_ngcontent-%COMP%] .expand-icon[_ngcontent-%COMP%] {\n color: #5B4FE9;\n}\n\n\n\n.card-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid #f1f3f4;\n}\n\n.permissions-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.permission-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: 11px;\n font-weight: 500;\n color: white;\n text-transform: capitalize;\n}\n\n.permission-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.field-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n}\n\n.entity-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.entity-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: 11px;\n background: #f1f3f4;\n color: #495057;\n}\n\n.entity-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n color: #6c757d;\n}\n\n\n\n.card-body[_ngcontent-%COMP%] {\n padding: 0 16px 16px 16px;\n border-top: 1px solid #f1f3f4;\n}\n\n\n\n.usage-context[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 12px;\n margin-top: 12px;\n background: #FFF8E1;\n border-radius: 6px;\n font-size: 13px;\n color: #6d4c00;\n}\n\n.usage-context[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #FFA000;\n margin-top: 2px;\n}\n\n\n\n.fields-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.fields-title[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n\n.fields-table[_ngcontent-%COMP%] {\n border: 1px solid #e9ecef;\n border-radius: 6px;\n overflow: hidden;\n}\n\n.fields-header[_ngcontent-%COMP%] {\n display: flex;\n padding: 10px 12px;\n background: #f8f9fa;\n border-bottom: 1px solid #e9ecef;\n font-size: 11px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.field-row[_ngcontent-%COMP%] {\n display: flex;\n padding: 10px 12px;\n border-bottom: 1px solid #f1f3f4;\n font-size: 13px;\n align-items: center;\n}\n\n.field-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.field-row[_ngcontent-%COMP%]:hover {\n background: #fafbfc;\n}\n\n.field-col[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.name-col[_ngcontent-%COMP%] {\n flex: 0 0 200px;\n min-width: 0;\n}\n\n.type-col[_ngcontent-%COMP%] {\n flex: 0 0 120px;\n}\n\n.tags-col[_ngcontent-%COMP%] {\n flex: 0 0 160px;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.desc-col[_ngcontent-%COMP%] {\n flex: 1;\n color: #6c757d;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.field-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: #212529;\n}\n\n.required-indicator[_ngcontent-%COMP%] {\n color: #dc3545;\n font-weight: bold;\n}\n\n.field-type[_ngcontent-%COMP%] {\n padding: 2px 6px;\n background: #f1f3f4;\n border-radius: 4px;\n font-size: 11px;\n color: #495057;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.usage-tag[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n color: white;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n\n\n.parameters-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.parameters-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.parameters-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #5B4FE9;\n}\n\n.parameters-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.parameter-item[_ngcontent-%COMP%] {\n padding: 12px;\n background: #f8f9fa;\n border-radius: 6px;\n border-left: 3px solid #5B4FE9;\n}\n\n.param-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.param-name[_ngcontent-%COMP%] {\n font-weight: 600;\n color: #212529;\n font-size: 14px;\n}\n\n.required-badge[_ngcontent-%COMP%] {\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n background: #dc3545;\n color: white;\n text-transform: uppercase;\n}\n\n.optional-badge[_ngcontent-%COMP%] {\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n background: #6c757d;\n color: white;\n text-transform: uppercase;\n}\n\n.param-type[_ngcontent-%COMP%] {\n padding: 2px 6px;\n background: #e9ecef;\n border-radius: 4px;\n font-size: 11px;\n color: #495057;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.param-description[_ngcontent-%COMP%] {\n margin: 8px 0 0 0;\n font-size: 13px;\n color: #495057;\n line-height: 1.4;\n}\n\n.param-sample[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 12px;\n}\n\n.sample-label[_ngcontent-%COMP%] {\n color: #6c757d;\n margin-right: 4px;\n}\n\n.param-sample[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n padding: 2px 6px;\n background: white;\n border: 1px solid #e9ecef;\n border-radius: 4px;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n color: #e83e8c;\n}\n\n\n\n.sql-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.sql-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.sql-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #5B4FE9;\n}\n\n.sql-code[_ngcontent-%COMP%] {\n margin: 0;\n padding: 16px;\n background: #1e1e1e;\n border-radius: 6px;\n font-size: 12px;\n line-height: 1.5;\n color: #d4d4d4;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n\n\n@media (max-width: 768px) {\n .summary-header[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n align-items: flex-start;\n }\n\n .stats[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: space-around;\n }\n\n .name-col[_ngcontent-%COMP%] {\n flex: 0 0 140px;\n }\n\n .type-col[_ngcontent-%COMP%] {\n flex: 0 0 90px;\n }\n\n .tags-col[_ngcontent-%COMP%] {\n flex: 0 0 120px;\n }\n\n .card-meta[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 8px;\n align-items: flex-start;\n }\n}"] });
684
+ } }, dependencies: [i1.NgClass, i2.MarkdownComponent], styles: [".data-requirements-viewer[_ngcontent-%COMP%] {\n padding: 0;\n height: 100%;\n overflow-y: auto;\n background: #fafbfc;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n color: #6c757d;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n color: #dee2e6;\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: #495057;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n color: #6c757d;\n}\n\n\n\n.summary-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: linear-gradient(135deg, #033ba3 0%, #5cb6f6 100%);\n color: white;\n border-radius: 0;\n}\n\n.mode-badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 600;\n}\n\n.mode-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n opacity: 0.9;\n}\n\n.stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2px;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n line-height: 1;\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n opacity: 0.85;\n}\n\n\n\n.description-section[_ngcontent-%COMP%] {\n padding: 20px;\n background: white;\n border-bottom: 1px solid #e9ecef;\n}\n\n.description-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n}\n\n.description-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #5B4FE9;\n}\n\n.description-content[_ngcontent-%COMP%] {\n font-size: 14px;\n line-height: 1.6;\n color: #495057;\n}\n\n.description-content[_ngcontent-%COMP%] p {\n margin: 0 0 12px 0;\n}\n\n.description-content[_ngcontent-%COMP%] p:last-child {\n margin-bottom: 0;\n}\n\n.description-content[_ngcontent-%COMP%] pre {\n background: #f8f9fa;\n padding: 12px;\n border-radius: 6px;\n overflow-x: auto;\n}\n\n.description-content[_ngcontent-%COMP%] code {\n background: #f1f3f4;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 13px;\n}\n\n\n\n.section[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n.section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: #343a40;\n}\n\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #5B4FE9;\n font-size: 18px;\n}\n\n\n\n.cards-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n\n\n.data-card[_ngcontent-%COMP%] {\n background: white;\n border-radius: 8px;\n border: 1px solid #e9ecef;\n overflow: hidden;\n transition: box-shadow 0.2s ease, border-color 0.2s ease;\n}\n\n.data-card[_ngcontent-%COMP%]:hover {\n border-color: #dee2e6;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n}\n\n.data-card.expanded[_ngcontent-%COMP%] {\n border-color: #5B4FE9;\n box-shadow: 0 4px 12px rgba(91, 79, 233, 0.12);\n}\n\n\n\n.card-header[_ngcontent-%COMP%] {\n padding: 16px;\n cursor: pointer;\n user-select: none;\n}\n\n.card-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n}\n\n.card-icon[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border-radius: 8px;\n background: linear-gradient(135deg, #E8F5E9 0%, #C8E6C9 100%);\n color: #4CAF50;\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.card-icon.query-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #E3F2FD 0%, #BBDEFB 100%);\n color: #2196F3;\n}\n\n.card-title-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.title-with-badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n margin-bottom: 4px;\n}\n\n.card-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: #212529;\n}\n\n.new-query-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: 700;\n background: linear-gradient(135deg, #10b981 0%, #059669 100%);\n color: white;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: 0 2px 4px rgba(16, 185, 129, 0.2);\n animation: _ngcontent-%COMP%_subtle-pulse 2s ease-in-out infinite;\n}\n\n.new-query-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n@keyframes _ngcontent-%COMP%_subtle-pulse {\n 0%, 100% {\n box-shadow: 0 2px 4px rgba(16, 185, 129, 0.2);\n }\n 50% {\n box-shadow: 0 2px 8px rgba(16, 185, 129, 0.4);\n }\n}\n\n.card-path[_ngcontent-%COMP%] {\n margin: 0 0 4px 0;\n font-size: 12px;\n color: #6c757d;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.card-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: #6c757d;\n line-height: 1.4;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n color: #adb5bd;\n font-size: 12px;\n padding: 4px;\n}\n\n.data-card.expanded[_ngcontent-%COMP%] .expand-icon[_ngcontent-%COMP%] {\n color: #5B4FE9;\n}\n\n\n\n.card-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid #f1f3f4;\n}\n\n.permissions-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.permission-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: 11px;\n font-weight: 500;\n color: white;\n text-transform: capitalize;\n}\n\n.permission-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.field-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n}\n\n.entity-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.entity-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: 11px;\n background: #f1f3f4;\n color: #495057;\n}\n\n.entity-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n color: #6c757d;\n}\n\n\n\n.card-body[_ngcontent-%COMP%] {\n padding: 0 16px 16px 16px;\n border-top: 1px solid #f1f3f4;\n}\n\n\n\n.usage-context[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 12px;\n margin-top: 12px;\n background: #FFF8E1;\n border-radius: 6px;\n font-size: 13px;\n color: #6d4c00;\n}\n\n.usage-context[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #FFA000;\n margin-top: 2px;\n}\n\n\n\n.fields-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.fields-title[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n\n.fields-table[_ngcontent-%COMP%] {\n border: 1px solid #e9ecef;\n border-radius: 6px;\n overflow: hidden;\n}\n\n.fields-header[_ngcontent-%COMP%] {\n display: flex;\n padding: 10px 12px;\n background: #f8f9fa;\n border-bottom: 1px solid #e9ecef;\n font-size: 11px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.field-row[_ngcontent-%COMP%] {\n display: flex;\n padding: 10px 12px;\n border-bottom: 1px solid #f1f3f4;\n font-size: 13px;\n align-items: center;\n}\n\n.field-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.field-row[_ngcontent-%COMP%]:hover {\n background: #fafbfc;\n}\n\n.field-col[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.name-col[_ngcontent-%COMP%] {\n flex: 0 0 200px;\n min-width: 0;\n}\n\n.type-col[_ngcontent-%COMP%] {\n flex: 0 0 120px;\n}\n\n.tags-col[_ngcontent-%COMP%] {\n flex: 0 0 160px;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.desc-col[_ngcontent-%COMP%] {\n flex: 1;\n color: #6c757d;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.field-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: #212529;\n}\n\n.required-indicator[_ngcontent-%COMP%] {\n color: #dc3545;\n font-weight: bold;\n}\n\n.field-type[_ngcontent-%COMP%] {\n padding: 2px 6px;\n background: #f1f3f4;\n border-radius: 4px;\n font-size: 11px;\n color: #495057;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.usage-tag[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n color: white;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n\n\n.parameters-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.parameters-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.parameters-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #5B4FE9;\n}\n\n.parameters-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.parameter-item[_ngcontent-%COMP%] {\n padding: 12px;\n background: #f8f9fa;\n border-radius: 6px;\n border-left: 3px solid #5B4FE9;\n}\n\n.param-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.param-name[_ngcontent-%COMP%] {\n font-weight: 600;\n color: #212529;\n font-size: 14px;\n}\n\n.required-badge[_ngcontent-%COMP%] {\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n background: #dc3545;\n color: white;\n text-transform: uppercase;\n}\n\n.optional-badge[_ngcontent-%COMP%] {\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n background: #6c757d;\n color: white;\n text-transform: uppercase;\n}\n\n.param-type[_ngcontent-%COMP%] {\n padding: 2px 6px;\n background: #e9ecef;\n border-radius: 4px;\n font-size: 11px;\n color: #495057;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.param-description[_ngcontent-%COMP%] {\n margin: 8px 0 0 0;\n font-size: 13px;\n color: #495057;\n line-height: 1.4;\n}\n\n.param-sample[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 12px;\n}\n\n.sample-label[_ngcontent-%COMP%] {\n color: #6c757d;\n margin-right: 4px;\n}\n\n.param-sample[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n padding: 2px 6px;\n background: white;\n border: 1px solid #e9ecef;\n border-radius: 4px;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n color: #e83e8c;\n}\n\n\n\n.sql-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.sql-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.sql-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #5B4FE9;\n}\n\n.sql-code[_ngcontent-%COMP%] {\n margin: 0;\n padding: 16px;\n background: #1e1e1e;\n border-radius: 6px;\n font-size: 12px;\n line-height: 1.5;\n color: #d4d4d4;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n\n\n@media (max-width: 768px) {\n .summary-header[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n align-items: flex-start;\n }\n\n .stats[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: space-around;\n }\n\n .name-col[_ngcontent-%COMP%] {\n flex: 0 0 140px;\n }\n\n .type-col[_ngcontent-%COMP%] {\n flex: 0 0 90px;\n }\n\n .tags-col[_ngcontent-%COMP%] {\n flex: 0 0 120px;\n }\n\n .card-meta[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 8px;\n align-items: flex-start;\n }\n}"] });
677
685
  }
678
686
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DataRequirementsViewerComponent, [{
679
687
  type: Component,
680
- args: [{ selector: 'mj-data-requirements-viewer', template: "<div class=\"data-requirements-viewer\">\n @if (!hasData) {\n <div class=\"empty-state\">\n <i class=\"fas fa-database\"></i>\n <h3>No Data Requirements</h3>\n <p>This component doesn't have any data requirements defined.</p>\n </div>\n } @else {\n <!-- Header Summary -->\n <div class=\"summary-header\">\n <div class=\"mode-badge\">\n <i class=\"fas\" [ngClass]=\"modeIcon\"></i>\n <span>{{ modeLabel }}</span>\n </div>\n <div class=\"stats\">\n <div class=\"stat-item\" *ngIf=\"entities.length > 0\">\n <span class=\"stat-value\">{{ entities.length }}</span>\n <span class=\"stat-label\">{{ entities.length === 1 ? 'Entity' : 'Entities' }}</span>\n </div>\n <div class=\"stat-item\" *ngIf=\"queries.length > 0\">\n <span class=\"stat-value\">{{ queries.length }}</span>\n <span class=\"stat-label\">{{ queries.length === 1 ? 'Query' : 'Queries' }}</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{ totalFieldCount }}</span>\n <span class=\"stat-label\">{{ totalFieldCount === 1 ? 'Field' : 'Fields' }}</span>\n </div>\n </div>\n </div>\n\n <!-- Description / Overview (supports markdown including mermaid diagrams) -->\n @if (description) {\n <div class=\"description-section\">\n <h4 class=\"description-title\">\n <i class=\"fas fa-info-circle\"></i>\n Overview\n </h4>\n <div class=\"description-content\">\n <mj-markdown [data]=\"description\"\n [enableCollapsibleHeadings]=\"false\"\n [enableLineNumbers]=\"false\"\n [enableSmartypants]=\"true\"\n [enableHtml]=\"true\"></mj-markdown>\n </div>\n </div>\n }\n\n <!-- Entities Section -->\n @if (entities.length > 0) {\n <div class=\"section entities-section\">\n <h3 class=\"section-title\">\n <i class=\"fas fa-table\"></i>\n Entities\n </h3>\n <div class=\"cards-container\">\n @for (entity of entities; track entity.name) {\n <div class=\"data-card entity-card\" [class.expanded]=\"isEntityExpanded(entity.name)\">\n <div class=\"card-header\" (click)=\"toggleEntity(entity.name)\">\n <div class=\"card-title-row\">\n <div class=\"card-icon\">\n <i class=\"fas fa-table\"></i>\n </div>\n <div class=\"card-title-info\">\n <h4 class=\"card-title\">{{ entity.name }}</h4>\n @if (entity.description) {\n <p class=\"card-description\">{{ entity.description }}</p>\n }\n </div>\n <div class=\"expand-icon\">\n <i class=\"fas\" [ngClass]=\"isEntityExpanded(entity.name) ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </div>\n </div>\n <div class=\"card-meta\">\n <div class=\"permissions-row\">\n @for (perm of entity.permissionLevelNeeded; track perm) {\n <span class=\"permission-badge\" [style.background-color]=\"getPermissionColor(perm)\">\n <i class=\"fas\" [ngClass]=\"getPermissionIcon(perm)\"></i>\n {{ perm }}\n </span>\n }\n </div>\n <span class=\"field-count\">{{ entity.fieldMetadata.length || 0 }} fields</span>\n </div>\n </div>\n\n @if (isEntityExpanded(entity.name)) {\n <div class=\"card-body\">\n @if (entity.usageContext) {\n <div class=\"usage-context\">\n <i class=\"fas fa-info-circle\"></i>\n <span>{{ entity.usageContext }}</span>\n </div>\n }\n\n <!-- Fields Table -->\n @if (entity.fieldMetadata && entity.fieldMetadata.length > 0) {\n <div class=\"fields-section\">\n <h5 class=\"fields-title\">Fields</h5>\n <div class=\"fields-table\">\n <div class=\"fields-header\">\n <span class=\"field-col name-col\">Name</span>\n <span class=\"field-col type-col\">Type</span>\n <span class=\"field-col tags-col\">Usage</span>\n <span class=\"field-col desc-col\">Description</span>\n </div>\n @for (field of entity.fieldMetadata; track field.name) {\n <div class=\"field-row\">\n <span class=\"field-col name-col\">\n <i class=\"fas\" [ngClass]=\"getFieldTypeIcon(field.type)\" [style.color]=\"getFieldTypeColor(field.type)\"></i>\n <span class=\"field-name\">{{ field.name }}</span>\n @if (!field.allowsNull) {\n <span class=\"required-indicator\" title=\"Required\">*</span>\n }\n </span>\n <span class=\"field-col type-col\">\n <code class=\"field-type\">{{ formatFieldType(field.type) }}</code>\n </span>\n <span class=\"field-col tags-col\">\n @for (tag of getFieldUsageTags(field, entity); track tag) {\n <span class=\"usage-tag\" [style.background-color]=\"getTagColor(tag)\">{{ tag }}</span>\n }\n </span>\n <span class=\"field-col desc-col\">\n {{ field.description || '\u2014' }}\n </span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Queries Section -->\n @if (queries.length > 0) {\n <div class=\"section queries-section\">\n <h3 class=\"section-title\">\n <i class=\"fas fa-database\"></i>\n Queries\n </h3>\n <div class=\"cards-container\">\n @for (query of queries; track getQueryKey(query)) {\n <div class=\"data-card query-card\" [class.expanded]=\"isQueryExpanded(getQueryKey(query))\">\n <div class=\"card-header\" (click)=\"toggleQuery(getQueryKey(query))\">\n <div class=\"card-title-row\">\n <div class=\"card-icon query-icon\">\n <i class=\"fas fa-code\"></i>\n </div>\n <div class=\"card-title-info\">\n <div class=\"title-with-badge\">\n <h4 class=\"card-title\">{{ query.name }}</h4>\n @if (query.isNew) {\n <span class=\"new-query-badge\" title=\"This query was newly created for this component\">\n <i class=\"fas fa-sparkles\"></i>\n NEW\n </span>\n }\n </div>\n <p class=\"card-path\">{{ query.categoryPath }}</p>\n @if (query.description) {\n <p class=\"card-description\">{{ query.description }}</p>\n }\n </div>\n <div class=\"expand-icon\">\n <i class=\"fas\" [ngClass]=\"isQueryExpanded(getQueryKey(query)) ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </div>\n </div>\n <div class=\"card-meta\">\n @if (query.entityNames && query.entityNames.length > 0) {\n <div class=\"entity-badges\">\n @for (entityName of query.entityNames; track entityName) {\n <span class=\"entity-badge\">\n <i class=\"fas fa-table\"></i>\n {{ entityName }}\n </span>\n }\n </div>\n }\n <span class=\"field-count\">{{ query.fields.length || 0 }} fields</span>\n </div>\n </div>\n\n @if (isQueryExpanded(getQueryKey(query))) {\n <div class=\"card-body\">\n <!-- Parameters -->\n @if (query.parameters && query.parameters.length > 0) {\n <div class=\"parameters-section\">\n <h5 class=\"parameters-title\">\n <i class=\"fas fa-sliders-h\"></i>\n Parameters\n </h5>\n <div class=\"parameters-list\">\n @for (param of query.parameters; track param.name) {\n <div class=\"parameter-item\">\n <div class=\"param-header\">\n <span class=\"param-name\">{{ param.name }}</span>\n @if (param.isRequired) {\n <span class=\"required-badge\">Required</span>\n } @else {\n <span class=\"optional-badge\">Optional</span>\n }\n @if (param.type) {\n <code class=\"param-type\">{{ param.type }}</code>\n }\n </div>\n @if (param.description) {\n <p class=\"param-description\">{{ param.description }}</p>\n }\n @if (param.sampleValue || param.testValue) {\n <div class=\"param-sample\">\n <span class=\"sample-label\">Sample:</span>\n <code>{{ param.sampleValue || param.testValue }}</code>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Fields Table -->\n @if (query.fields && query.fields.length > 0) {\n <div class=\"fields-section\">\n <h5 class=\"fields-title\">Output Fields</h5>\n <div class=\"fields-table\">\n <div class=\"fields-header\">\n <span class=\"field-col name-col\">Name</span>\n <span class=\"field-col type-col\">Type</span>\n <span class=\"field-col desc-col\">Description</span>\n </div>\n @for (field of query.fields; track field.name) {\n <div class=\"field-row\">\n <span class=\"field-col name-col\">\n <i class=\"fas\" [ngClass]=\"getFieldTypeIcon(field.type)\" [style.color]=\"getFieldTypeColor(field.type)\"></i>\n <span class=\"field-name\">{{ field.name }}</span>\n </span>\n <span class=\"field-col type-col\">\n <code class=\"field-type\">{{ formatFieldType(field.type) }}</code>\n </span>\n <span class=\"field-col desc-col\">\n {{ field.description || '\u2014' }}\n </span>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- New Query SQL -->\n @if (query.newQuerySQL) {\n <div class=\"sql-section\">\n <h5 class=\"sql-title\">\n <i class=\"fas fa-terminal\"></i>\n Query SQL\n </h5>\n <pre class=\"sql-code\">{{ query.newQuerySQL }}</pre>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n }\n</div>\n", styles: [".data-requirements-viewer {\n padding: 0;\n height: 100%;\n overflow-y: auto;\n background: #fafbfc;\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n color: #6c757d;\n}\n\n.empty-state i {\n font-size: 48px;\n margin-bottom: 16px;\n color: #dee2e6;\n}\n\n.empty-state h3 {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: #495057;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 14px;\n color: #6c757d;\n}\n\n/* Summary Header */\n.summary-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: linear-gradient(135deg, #033ba3 0%, #5cb6f6 100%);\n color: white;\n border-radius: 0;\n}\n\n.mode-badge {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 600;\n}\n\n.mode-badge i {\n font-size: 20px;\n opacity: 0.9;\n}\n\n.stats {\n display: flex;\n gap: 24px;\n}\n\n.stat-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2px;\n}\n\n.stat-value {\n font-size: 24px;\n font-weight: 700;\n line-height: 1;\n}\n\n.stat-label {\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n opacity: 0.85;\n}\n\n/* Description Section */\n.description-section {\n padding: 20px;\n background: white;\n border-bottom: 1px solid #e9ecef;\n}\n\n.description-title {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n}\n\n.description-title i {\n color: #5B4FE9;\n}\n\n.description-content {\n font-size: 14px;\n line-height: 1.6;\n color: #495057;\n}\n\n.description-content ::ng-deep p {\n margin: 0 0 12px 0;\n}\n\n.description-content ::ng-deep p:last-child {\n margin-bottom: 0;\n}\n\n.description-content ::ng-deep pre {\n background: #f8f9fa;\n padding: 12px;\n border-radius: 6px;\n overflow-x: auto;\n}\n\n.description-content ::ng-deep code {\n background: #f1f3f4;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 13px;\n}\n\n/* Section Styling */\n.section {\n padding: 20px;\n}\n\n.section-title {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: #343a40;\n}\n\n.section-title i {\n color: #5B4FE9;\n font-size: 18px;\n}\n\n/* Cards Container */\n.cards-container {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n/* Data Card */\n.data-card {\n background: white;\n border-radius: 8px;\n border: 1px solid #e9ecef;\n overflow: hidden;\n transition: box-shadow 0.2s ease, border-color 0.2s ease;\n}\n\n.data-card:hover {\n border-color: #dee2e6;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n}\n\n.data-card.expanded {\n border-color: #5B4FE9;\n box-shadow: 0 4px 12px rgba(91, 79, 233, 0.12);\n}\n\n/* Card Header */\n.card-header {\n padding: 16px;\n cursor: pointer;\n user-select: none;\n}\n\n.card-title-row {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n}\n\n.card-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border-radius: 8px;\n background: linear-gradient(135deg, #E8F5E9 0%, #C8E6C9 100%);\n color: #4CAF50;\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.card-icon.query-icon {\n background: linear-gradient(135deg, #E3F2FD 0%, #BBDEFB 100%);\n color: #2196F3;\n}\n\n.card-title-info {\n flex: 1;\n min-width: 0;\n}\n\n.title-with-badge {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n margin-bottom: 4px;\n}\n\n.card-title {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: #212529;\n}\n\n.new-query-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: 700;\n background: linear-gradient(135deg, #10b981 0%, #059669 100%);\n color: white;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: 0 2px 4px rgba(16, 185, 129, 0.2);\n animation: subtle-pulse 2s ease-in-out infinite;\n}\n\n.new-query-badge i {\n font-size: 9px;\n}\n\n@keyframes subtle-pulse {\n 0%, 100% {\n box-shadow: 0 2px 4px rgba(16, 185, 129, 0.2);\n }\n 50% {\n box-shadow: 0 2px 8px rgba(16, 185, 129, 0.4);\n }\n}\n\n.card-path {\n margin: 0 0 4px 0;\n font-size: 12px;\n color: #6c757d;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.card-description {\n margin: 0;\n font-size: 13px;\n color: #6c757d;\n line-height: 1.4;\n}\n\n.expand-icon {\n color: #adb5bd;\n font-size: 12px;\n padding: 4px;\n}\n\n.data-card.expanded .expand-icon {\n color: #5B4FE9;\n}\n\n/* Card Meta */\n.card-meta {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid #f1f3f4;\n}\n\n.permissions-row {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.permission-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n color: white;\n text-transform: capitalize;\n}\n\n.permission-badge i {\n font-size: 10px;\n}\n\n.field-count {\n font-size: 12px;\n color: #6c757d;\n}\n\n.entity-badges {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.entity-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 11px;\n background: #f1f3f4;\n color: #495057;\n}\n\n.entity-badge i {\n font-size: 10px;\n color: #6c757d;\n}\n\n/* Card Body */\n.card-body {\n padding: 0 16px 16px 16px;\n border-top: 1px solid #f1f3f4;\n}\n\n/* Usage Context */\n.usage-context {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 12px;\n margin-top: 12px;\n background: #FFF8E1;\n border-radius: 6px;\n font-size: 13px;\n color: #6d4c00;\n}\n\n.usage-context i {\n color: #FFA000;\n margin-top: 2px;\n}\n\n/* Fields Section */\n.fields-section {\n margin-top: 16px;\n}\n\n.fields-title {\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Fields Table */\n.fields-table {\n border: 1px solid #e9ecef;\n border-radius: 6px;\n overflow: hidden;\n}\n\n.fields-header {\n display: flex;\n padding: 10px 12px;\n background: #f8f9fa;\n border-bottom: 1px solid #e9ecef;\n font-size: 11px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.field-row {\n display: flex;\n padding: 10px 12px;\n border-bottom: 1px solid #f1f3f4;\n font-size: 13px;\n align-items: center;\n}\n\n.field-row:last-child {\n border-bottom: none;\n}\n\n.field-row:hover {\n background: #fafbfc;\n}\n\n.field-col {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.name-col {\n flex: 0 0 200px;\n min-width: 0;\n}\n\n.type-col {\n flex: 0 0 120px;\n}\n\n.tags-col {\n flex: 0 0 160px;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.desc-col {\n flex: 1;\n color: #6c757d;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.field-name {\n font-weight: 500;\n color: #212529;\n}\n\n.required-indicator {\n color: #dc3545;\n font-weight: bold;\n}\n\n.field-type {\n padding: 2px 6px;\n background: #f1f3f4;\n border-radius: 4px;\n font-size: 11px;\n color: #495057;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.usage-tag {\n display: inline-block;\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n color: white;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n/* Parameters Section */\n.parameters-section {\n margin-top: 16px;\n}\n\n.parameters-title {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.parameters-title i {\n color: #5B4FE9;\n}\n\n.parameters-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.parameter-item {\n padding: 12px;\n background: #f8f9fa;\n border-radius: 6px;\n border-left: 3px solid #5B4FE9;\n}\n\n.param-header {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.param-name {\n font-weight: 600;\n color: #212529;\n font-size: 14px;\n}\n\n.required-badge {\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n background: #dc3545;\n color: white;\n text-transform: uppercase;\n}\n\n.optional-badge {\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n background: #6c757d;\n color: white;\n text-transform: uppercase;\n}\n\n.param-type {\n padding: 2px 6px;\n background: #e9ecef;\n border-radius: 4px;\n font-size: 11px;\n color: #495057;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.param-description {\n margin: 8px 0 0 0;\n font-size: 13px;\n color: #495057;\n line-height: 1.4;\n}\n\n.param-sample {\n margin-top: 8px;\n font-size: 12px;\n}\n\n.sample-label {\n color: #6c757d;\n margin-right: 4px;\n}\n\n.param-sample code {\n padding: 2px 6px;\n background: white;\n border: 1px solid #e9ecef;\n border-radius: 4px;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n color: #e83e8c;\n}\n\n/* SQL Section */\n.sql-section {\n margin-top: 16px;\n}\n\n.sql-title {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.sql-title i {\n color: #5B4FE9;\n}\n\n.sql-code {\n margin: 0;\n padding: 16px;\n background: #1e1e1e;\n border-radius: 6px;\n font-size: 12px;\n line-height: 1.5;\n color: #d4d4d4;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n .summary-header {\n flex-direction: column;\n gap: 16px;\n align-items: flex-start;\n }\n\n .stats {\n width: 100%;\n justify-content: space-around;\n }\n\n .name-col {\n flex: 0 0 140px;\n }\n\n .type-col {\n flex: 0 0 90px;\n }\n\n .tags-col {\n flex: 0 0 120px;\n }\n\n .card-meta {\n flex-direction: column;\n gap: 8px;\n align-items: flex-start;\n }\n}\n"] }]
688
+ args: [{ standalone: false, selector: 'mj-data-requirements-viewer', template: "<div class=\"data-requirements-viewer\">\n @if (!hasData) {\n <div class=\"empty-state\">\n <i class=\"fas fa-database\"></i>\n <h3>No Data Requirements</h3>\n <p>This component doesn't have any data requirements defined.</p>\n </div>\n } @else {\n <!-- Header Summary -->\n <div class=\"summary-header\">\n <div class=\"mode-badge\">\n <i class=\"fas\" [ngClass]=\"modeIcon\"></i>\n <span>{{ modeLabel }}</span>\n </div>\n <div class=\"stats\">\n @if (entities.length > 0) {\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{ entities.length }}</span>\n <span class=\"stat-label\">{{ entities.length === 1 ? 'Entity' : 'Entities' }}</span>\n </div>\n }\n @if (queries.length > 0) {\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{ queries.length }}</span>\n <span class=\"stat-label\">{{ queries.length === 1 ? 'Query' : 'Queries' }}</span>\n </div>\n }\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{ totalFieldCount }}</span>\n <span class=\"stat-label\">{{ totalFieldCount === 1 ? 'Field' : 'Fields' }}</span>\n </div>\n </div>\n </div>\n\n <!-- Description / Overview (supports markdown including mermaid diagrams) -->\n @if (description) {\n <div class=\"description-section\">\n <h4 class=\"description-title\">\n <i class=\"fas fa-info-circle\"></i>\n Overview\n </h4>\n <div class=\"description-content\">\n <mj-markdown [data]=\"description\"\n [enableCollapsibleHeadings]=\"false\"\n [enableLineNumbers]=\"false\"\n [enableSmartypants]=\"true\"\n [enableHtml]=\"true\"></mj-markdown>\n </div>\n </div>\n }\n\n <!-- Entities Section -->\n @if (entities.length > 0) {\n <div class=\"section entities-section\">\n <h3 class=\"section-title\">\n <i class=\"fas fa-table\"></i>\n Entities\n </h3>\n <div class=\"cards-container\">\n @for (entity of entities; track entity.name) {\n <div class=\"data-card entity-card\" [class.expanded]=\"isEntityExpanded(entity.name)\">\n <div class=\"card-header\" (click)=\"toggleEntity(entity.name)\">\n <div class=\"card-title-row\">\n <div class=\"card-icon\">\n <i class=\"fas fa-table\"></i>\n </div>\n <div class=\"card-title-info\">\n <h4 class=\"card-title\">{{ entity.name }}</h4>\n @if (entity.description) {\n <p class=\"card-description\">{{ entity.description }}</p>\n }\n </div>\n <div class=\"expand-icon\">\n <i class=\"fas\" [ngClass]=\"isEntityExpanded(entity.name) ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </div>\n </div>\n <div class=\"card-meta\">\n <div class=\"permissions-row\">\n @for (perm of entity.permissionLevelNeeded; track perm) {\n <span class=\"permission-badge\" [style.background-color]=\"getPermissionColor(perm)\">\n <i class=\"fas\" [ngClass]=\"getPermissionIcon(perm)\"></i>\n {{ perm }}\n </span>\n }\n </div>\n <span class=\"field-count\">{{ entity.fieldMetadata.length || 0 }} fields</span>\n </div>\n </div>\n\n @if (isEntityExpanded(entity.name)) {\n <div class=\"card-body\">\n @if (entity.usageContext) {\n <div class=\"usage-context\">\n <i class=\"fas fa-info-circle\"></i>\n <span>{{ entity.usageContext }}</span>\n </div>\n }\n\n <!-- Fields Table -->\n @if (entity.fieldMetadata && entity.fieldMetadata.length > 0) {\n <div class=\"fields-section\">\n <h5 class=\"fields-title\">Fields</h5>\n <div class=\"fields-table\">\n <div class=\"fields-header\">\n <span class=\"field-col name-col\">Name</span>\n <span class=\"field-col type-col\">Type</span>\n <span class=\"field-col tags-col\">Usage</span>\n <span class=\"field-col desc-col\">Description</span>\n </div>\n @for (field of entity.fieldMetadata; track field.name) {\n <div class=\"field-row\">\n <span class=\"field-col name-col\">\n <i class=\"fas\" [ngClass]=\"getFieldTypeIcon(field.type)\" [style.color]=\"getFieldTypeColor(field.type)\"></i>\n <span class=\"field-name\">{{ field.name }}</span>\n @if (!field.allowsNull) {\n <span class=\"required-indicator\" title=\"Required\">*</span>\n }\n </span>\n <span class=\"field-col type-col\">\n <code class=\"field-type\">{{ formatFieldType(field.type) }}</code>\n </span>\n <span class=\"field-col tags-col\">\n @for (tag of getFieldUsageTags(field, entity); track tag) {\n <span class=\"usage-tag\" [style.background-color]=\"getTagColor(tag)\">{{ tag }}</span>\n }\n </span>\n <span class=\"field-col desc-col\">\n {{ field.description || '\u2014' }}\n </span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Queries Section -->\n @if (queries.length > 0) {\n <div class=\"section queries-section\">\n <h3 class=\"section-title\">\n <i class=\"fas fa-database\"></i>\n Queries\n </h3>\n <div class=\"cards-container\">\n @for (query of queries; track getQueryKey(query)) {\n <div class=\"data-card query-card\" [class.expanded]=\"isQueryExpanded(getQueryKey(query))\">\n <div class=\"card-header\" (click)=\"toggleQuery(getQueryKey(query))\">\n <div class=\"card-title-row\">\n <div class=\"card-icon query-icon\">\n <i class=\"fas fa-code\"></i>\n </div>\n <div class=\"card-title-info\">\n <div class=\"title-with-badge\">\n <h4 class=\"card-title\">{{ query.name }}</h4>\n @if (query.isNew) {\n <span class=\"new-query-badge\" title=\"This query was newly created for this component\">\n <i class=\"fas fa-sparkles\"></i>\n NEW\n </span>\n }\n </div>\n <p class=\"card-path\">{{ query.categoryPath }}</p>\n @if (query.description) {\n <p class=\"card-description\">{{ query.description }}</p>\n }\n </div>\n <div class=\"expand-icon\">\n <i class=\"fas\" [ngClass]=\"isQueryExpanded(getQueryKey(query)) ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </div>\n </div>\n <div class=\"card-meta\">\n @if (query.entityNames && query.entityNames.length > 0) {\n <div class=\"entity-badges\">\n @for (entityName of query.entityNames; track entityName) {\n <span class=\"entity-badge\">\n <i class=\"fas fa-table\"></i>\n {{ entityName }}\n </span>\n }\n </div>\n }\n <span class=\"field-count\">{{ query.fields.length || 0 }} fields</span>\n </div>\n </div>\n\n @if (isQueryExpanded(getQueryKey(query))) {\n <div class=\"card-body\">\n <!-- Parameters -->\n @if (query.parameters && query.parameters.length > 0) {\n <div class=\"parameters-section\">\n <h5 class=\"parameters-title\">\n <i class=\"fas fa-sliders-h\"></i>\n Parameters\n </h5>\n <div class=\"parameters-list\">\n @for (param of query.parameters; track param.name) {\n <div class=\"parameter-item\">\n <div class=\"param-header\">\n <span class=\"param-name\">{{ param.name }}</span>\n @if (param.isRequired) {\n <span class=\"required-badge\">Required</span>\n } @else {\n <span class=\"optional-badge\">Optional</span>\n }\n @if (param.type) {\n <code class=\"param-type\">{{ param.type }}</code>\n }\n </div>\n @if (param.description) {\n <p class=\"param-description\">{{ param.description }}</p>\n }\n @if (param.sampleValue || param.testValue) {\n <div class=\"param-sample\">\n <span class=\"sample-label\">Sample:</span>\n <code>{{ param.sampleValue || param.testValue }}</code>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Fields Table -->\n @if (query.fields && query.fields.length > 0) {\n <div class=\"fields-section\">\n <h5 class=\"fields-title\">Output Fields</h5>\n <div class=\"fields-table\">\n <div class=\"fields-header\">\n <span class=\"field-col name-col\">Name</span>\n <span class=\"field-col type-col\">Type</span>\n <span class=\"field-col desc-col\">Description</span>\n </div>\n @for (field of query.fields; track field.name) {\n <div class=\"field-row\">\n <span class=\"field-col name-col\">\n <i class=\"fas\" [ngClass]=\"getFieldTypeIcon(field.type)\" [style.color]=\"getFieldTypeColor(field.type)\"></i>\n <span class=\"field-name\">{{ field.name }}</span>\n </span>\n <span class=\"field-col type-col\">\n <code class=\"field-type\">{{ formatFieldType(field.type) }}</code>\n </span>\n <span class=\"field-col desc-col\">\n {{ field.description || '\u2014' }}\n </span>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- New Query SQL -->\n @if (query.newQuerySQL) {\n <div class=\"sql-section\">\n <h5 class=\"sql-title\">\n <i class=\"fas fa-terminal\"></i>\n Query SQL\n </h5>\n <pre class=\"sql-code\">{{ query.newQuerySQL }}</pre>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n }\n</div>\n", styles: [".data-requirements-viewer {\n padding: 0;\n height: 100%;\n overflow-y: auto;\n background: #fafbfc;\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n color: #6c757d;\n}\n\n.empty-state i {\n font-size: 48px;\n margin-bottom: 16px;\n color: #dee2e6;\n}\n\n.empty-state h3 {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: #495057;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 14px;\n color: #6c757d;\n}\n\n/* Summary Header */\n.summary-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: linear-gradient(135deg, #033ba3 0%, #5cb6f6 100%);\n color: white;\n border-radius: 0;\n}\n\n.mode-badge {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 600;\n}\n\n.mode-badge i {\n font-size: 20px;\n opacity: 0.9;\n}\n\n.stats {\n display: flex;\n gap: 24px;\n}\n\n.stat-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2px;\n}\n\n.stat-value {\n font-size: 24px;\n font-weight: 700;\n line-height: 1;\n}\n\n.stat-label {\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n opacity: 0.85;\n}\n\n/* Description Section */\n.description-section {\n padding: 20px;\n background: white;\n border-bottom: 1px solid #e9ecef;\n}\n\n.description-title {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n}\n\n.description-title i {\n color: #5B4FE9;\n}\n\n.description-content {\n font-size: 14px;\n line-height: 1.6;\n color: #495057;\n}\n\n.description-content ::ng-deep p {\n margin: 0 0 12px 0;\n}\n\n.description-content ::ng-deep p:last-child {\n margin-bottom: 0;\n}\n\n.description-content ::ng-deep pre {\n background: #f8f9fa;\n padding: 12px;\n border-radius: 6px;\n overflow-x: auto;\n}\n\n.description-content ::ng-deep code {\n background: #f1f3f4;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 13px;\n}\n\n/* Section Styling */\n.section {\n padding: 20px;\n}\n\n.section-title {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: #343a40;\n}\n\n.section-title i {\n color: #5B4FE9;\n font-size: 18px;\n}\n\n/* Cards Container */\n.cards-container {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n/* Data Card */\n.data-card {\n background: white;\n border-radius: 8px;\n border: 1px solid #e9ecef;\n overflow: hidden;\n transition: box-shadow 0.2s ease, border-color 0.2s ease;\n}\n\n.data-card:hover {\n border-color: #dee2e6;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n}\n\n.data-card.expanded {\n border-color: #5B4FE9;\n box-shadow: 0 4px 12px rgba(91, 79, 233, 0.12);\n}\n\n/* Card Header */\n.card-header {\n padding: 16px;\n cursor: pointer;\n user-select: none;\n}\n\n.card-title-row {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n}\n\n.card-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border-radius: 8px;\n background: linear-gradient(135deg, #E8F5E9 0%, #C8E6C9 100%);\n color: #4CAF50;\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.card-icon.query-icon {\n background: linear-gradient(135deg, #E3F2FD 0%, #BBDEFB 100%);\n color: #2196F3;\n}\n\n.card-title-info {\n flex: 1;\n min-width: 0;\n}\n\n.title-with-badge {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n margin-bottom: 4px;\n}\n\n.card-title {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: #212529;\n}\n\n.new-query-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: 700;\n background: linear-gradient(135deg, #10b981 0%, #059669 100%);\n color: white;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: 0 2px 4px rgba(16, 185, 129, 0.2);\n animation: subtle-pulse 2s ease-in-out infinite;\n}\n\n.new-query-badge i {\n font-size: 9px;\n}\n\n@keyframes subtle-pulse {\n 0%, 100% {\n box-shadow: 0 2px 4px rgba(16, 185, 129, 0.2);\n }\n 50% {\n box-shadow: 0 2px 8px rgba(16, 185, 129, 0.4);\n }\n}\n\n.card-path {\n margin: 0 0 4px 0;\n font-size: 12px;\n color: #6c757d;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.card-description {\n margin: 0;\n font-size: 13px;\n color: #6c757d;\n line-height: 1.4;\n}\n\n.expand-icon {\n color: #adb5bd;\n font-size: 12px;\n padding: 4px;\n}\n\n.data-card.expanded .expand-icon {\n color: #5B4FE9;\n}\n\n/* Card Meta */\n.card-meta {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid #f1f3f4;\n}\n\n.permissions-row {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.permission-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n color: white;\n text-transform: capitalize;\n}\n\n.permission-badge i {\n font-size: 10px;\n}\n\n.field-count {\n font-size: 12px;\n color: #6c757d;\n}\n\n.entity-badges {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.entity-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 11px;\n background: #f1f3f4;\n color: #495057;\n}\n\n.entity-badge i {\n font-size: 10px;\n color: #6c757d;\n}\n\n/* Card Body */\n.card-body {\n padding: 0 16px 16px 16px;\n border-top: 1px solid #f1f3f4;\n}\n\n/* Usage Context */\n.usage-context {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 12px;\n margin-top: 12px;\n background: #FFF8E1;\n border-radius: 6px;\n font-size: 13px;\n color: #6d4c00;\n}\n\n.usage-context i {\n color: #FFA000;\n margin-top: 2px;\n}\n\n/* Fields Section */\n.fields-section {\n margin-top: 16px;\n}\n\n.fields-title {\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Fields Table */\n.fields-table {\n border: 1px solid #e9ecef;\n border-radius: 6px;\n overflow: hidden;\n}\n\n.fields-header {\n display: flex;\n padding: 10px 12px;\n background: #f8f9fa;\n border-bottom: 1px solid #e9ecef;\n font-size: 11px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.field-row {\n display: flex;\n padding: 10px 12px;\n border-bottom: 1px solid #f1f3f4;\n font-size: 13px;\n align-items: center;\n}\n\n.field-row:last-child {\n border-bottom: none;\n}\n\n.field-row:hover {\n background: #fafbfc;\n}\n\n.field-col {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.name-col {\n flex: 0 0 200px;\n min-width: 0;\n}\n\n.type-col {\n flex: 0 0 120px;\n}\n\n.tags-col {\n flex: 0 0 160px;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.desc-col {\n flex: 1;\n color: #6c757d;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.field-name {\n font-weight: 500;\n color: #212529;\n}\n\n.required-indicator {\n color: #dc3545;\n font-weight: bold;\n}\n\n.field-type {\n padding: 2px 6px;\n background: #f1f3f4;\n border-radius: 4px;\n font-size: 11px;\n color: #495057;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.usage-tag {\n display: inline-block;\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n color: white;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n/* Parameters Section */\n.parameters-section {\n margin-top: 16px;\n}\n\n.parameters-title {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.parameters-title i {\n color: #5B4FE9;\n}\n\n.parameters-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.parameter-item {\n padding: 12px;\n background: #f8f9fa;\n border-radius: 6px;\n border-left: 3px solid #5B4FE9;\n}\n\n.param-header {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.param-name {\n font-weight: 600;\n color: #212529;\n font-size: 14px;\n}\n\n.required-badge {\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n background: #dc3545;\n color: white;\n text-transform: uppercase;\n}\n\n.optional-badge {\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n background: #6c757d;\n color: white;\n text-transform: uppercase;\n}\n\n.param-type {\n padding: 2px 6px;\n background: #e9ecef;\n border-radius: 4px;\n font-size: 11px;\n color: #495057;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.param-description {\n margin: 8px 0 0 0;\n font-size: 13px;\n color: #495057;\n line-height: 1.4;\n}\n\n.param-sample {\n margin-top: 8px;\n font-size: 12px;\n}\n\n.sample-label {\n color: #6c757d;\n margin-right: 4px;\n}\n\n.param-sample code {\n padding: 2px 6px;\n background: white;\n border: 1px solid #e9ecef;\n border-radius: 4px;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n color: #e83e8c;\n}\n\n/* SQL Section */\n.sql-section {\n margin-top: 16px;\n}\n\n.sql-title {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.sql-title i {\n color: #5B4FE9;\n}\n\n.sql-code {\n margin: 0;\n padding: 16px;\n background: #1e1e1e;\n border-radius: 6px;\n font-size: 12px;\n line-height: 1.5;\n color: #d4d4d4;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n .summary-header {\n flex-direction: column;\n gap: 16px;\n align-items: flex-start;\n }\n\n .stats {\n width: 100%;\n justify-content: space-around;\n }\n\n .name-col {\n flex: 0 0 140px;\n }\n\n .type-col {\n flex: 0 0 90px;\n }\n\n .tags-col {\n flex: 0 0 120px;\n }\n\n .card-meta {\n flex-direction: column;\n gap: 8px;\n align-items: flex-start;\n }\n}\n"] }]
681
689
  }], null, { dataRequirements: [{
682
690
  type: Input
683
691
  }] }); })();
684
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DataRequirementsViewerComponent, { className: "DataRequirementsViewerComponent", filePath: "src/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.ts", lineNumber: 13 }); })();
692
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DataRequirementsViewerComponent, { className: "DataRequirementsViewerComponent", filePath: "src/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.ts", lineNumber: 14 }); })();
685
693
  //# sourceMappingURL=data-requirements-viewer.component.js.map