@memberjunction/ng-artifacts 5.42.0 → 5.44.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.
- package/README.md +6 -0
- package/dist/lib/artifacts.module.d.ts +28 -25
- package/dist/lib/artifacts.module.d.ts.map +1 -1
- package/dist/lib/artifacts.module.js +22 -2
- package/dist/lib/artifacts.module.js.map +1 -1
- package/dist/lib/components/artifact-version-history.component.d.ts.map +1 -1
- package/dist/lib/components/artifact-version-history.component.js +26 -29
- package/dist/lib/components/artifact-version-history.component.js.map +1 -1
- package/dist/lib/components/artifact-viewer-panel.component.d.ts +3 -0
- package/dist/lib/components/artifact-viewer-panel.component.d.ts.map +1 -1
- package/dist/lib/components/artifact-viewer-panel.component.js +198 -112
- package/dist/lib/components/artifact-viewer-panel.component.js.map +1 -1
- package/dist/lib/components/plugins/audio-artifact-viewer.component.d.ts +11 -0
- package/dist/lib/components/plugins/audio-artifact-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/plugins/audio-artifact-viewer.component.js +37 -12
- package/dist/lib/components/plugins/audio-artifact-viewer.component.js.map +1 -1
- package/dist/lib/components/plugins/component-feedback-panel/component-feedback-panel.component.d.ts.map +1 -1
- package/dist/lib/components/plugins/component-feedback-panel/component-feedback-panel.component.js +40 -51
- package/dist/lib/components/plugins/component-feedback-panel/component-feedback-panel.component.js.map +1 -1
- package/dist/lib/components/plugins/data-artifact-viewer.component.js +27 -47
- package/dist/lib/components/plugins/data-artifact-viewer.component.js.map +1 -1
- package/dist/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.js +89 -95
- package/dist/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.js.map +1 -1
- package/dist/lib/components/plugins/ml-experiment-results-viewer.component.d.ts +227 -0
- package/dist/lib/components/plugins/ml-experiment-results-viewer.component.d.ts.map +1 -0
- package/dist/lib/components/plugins/ml-experiment-results-viewer.component.js +630 -0
- package/dist/lib/components/plugins/ml-experiment-results-viewer.component.js.map +1 -0
- package/dist/lib/components/plugins/video-artifact-viewer.component.d.ts +11 -0
- package/dist/lib/components/plugins/video-artifact-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/plugins/video-artifact-viewer.component.js +37 -12
- package/dist/lib/components/plugins/video-artifact-viewer.component.js.map +1 -1
- package/dist/lib/components/previews/audio-artifact-preview.component.d.ts +18 -4
- package/dist/lib/components/previews/audio-artifact-preview.component.d.ts.map +1 -1
- package/dist/lib/components/previews/audio-artifact-preview.component.js +54 -21
- package/dist/lib/components/previews/audio-artifact-preview.component.js.map +1 -1
- package/dist/lib/components/previews/video-artifact-preview.component.d.ts +19 -5
- package/dist/lib/components/previews/video-artifact-preview.component.d.ts.map +1 -1
- package/dist/lib/components/previews/video-artifact-preview.component.js +54 -22
- package/dist/lib/components/previews/video-artifact-preview.component.js.map +1 -1
- package/dist/public-api.d.ts +1 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +1 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +21 -18
- package/dist/__tests__/exports.test.d.ts +0 -2
- package/dist/__tests__/exports.test.d.ts.map +0 -1
- package/dist/__tests__/exports.test.js +0 -17
- package/dist/__tests__/exports.test.js.map +0 -1
- package/dist/__tests__/image-artifact-viewer.test.d.ts +0 -2
- package/dist/__tests__/image-artifact-viewer.test.d.ts.map +0 -1
- package/dist/__tests__/image-artifact-viewer.test.js +0 -62
- package/dist/__tests__/image-artifact-viewer.test.js.map +0 -1
- package/dist/__tests__/index.test.d.ts +0 -2
- package/dist/__tests__/index.test.d.ts.map +0 -1
- package/dist/__tests__/index.test.js +0 -7
- package/dist/__tests__/index.test.js.map +0 -1
- package/dist/lib/__tests__/artifact-snapshots.test.d.ts +0 -2
- package/dist/lib/__tests__/artifact-snapshots.test.d.ts.map +0 -1
- package/dist/lib/__tests__/artifact-snapshots.test.js +0 -155
- package/dist/lib/__tests__/artifact-snapshots.test.js.map +0 -1
- package/dist/lib/__tests__/interactive-form-apply.service.test.d.ts +0 -2
- package/dist/lib/__tests__/interactive-form-apply.service.test.d.ts.map +0 -1
- package/dist/lib/__tests__/interactive-form-apply.service.test.js +0 -211
- package/dist/lib/__tests__/interactive-form-apply.service.test.js.map +0 -1
package/dist/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.js
CHANGED
|
@@ -2,23 +2,17 @@ import { Component, Input } from '@angular/core';
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@angular/common";
|
|
4
4
|
import * as i2 from "@memberjunction/ng-markdown";
|
|
5
|
+
import * as i3 from "@memberjunction/ng-ui-components";
|
|
5
6
|
const _forTrack0 = ($index, $item) => $item.name;
|
|
6
7
|
function _forTrack1($index, $item) { return this.getQueryKey($item); }
|
|
7
8
|
function DataRequirementsViewerComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
8
|
-
i0.ɵɵ
|
|
9
|
-
i0.ɵɵelement(1, "i", 2);
|
|
10
|
-
i0.ɵɵelementStart(2, "h3");
|
|
11
|
-
i0.ɵɵtext(3, "No Data Requirements");
|
|
12
|
-
i0.ɵɵelementEnd();
|
|
13
|
-
i0.ɵɵelementStart(4, "p");
|
|
14
|
-
i0.ɵɵtext(5, "This component doesn't have any data requirements defined.");
|
|
15
|
-
i0.ɵɵelementEnd()();
|
|
9
|
+
i0.ɵɵelement(0, "mj-empty-state", 1);
|
|
16
10
|
} }
|
|
17
11
|
function DataRequirementsViewerComponent_Conditional_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
18
|
-
i0.ɵɵelementStart(0, "div",
|
|
12
|
+
i0.ɵɵelementStart(0, "div", 6)(1, "span", 7);
|
|
19
13
|
i0.ɵɵtext(2);
|
|
20
14
|
i0.ɵɵelementEnd();
|
|
21
|
-
i0.ɵɵelementStart(3, "span",
|
|
15
|
+
i0.ɵɵelementStart(3, "span", 8);
|
|
22
16
|
i0.ɵɵtext(4);
|
|
23
17
|
i0.ɵɵelementEnd()();
|
|
24
18
|
} if (rf & 2) {
|
|
@@ -29,10 +23,10 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_6_Template(rf
|
|
|
29
23
|
i0.ɵɵtextInterpolate(ctx_r0.entities.length === 1 ? "Entity" : "Entities");
|
|
30
24
|
} }
|
|
31
25
|
function DataRequirementsViewerComponent_Conditional_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
32
|
-
i0.ɵɵelementStart(0, "div",
|
|
26
|
+
i0.ɵɵelementStart(0, "div", 6)(1, "span", 7);
|
|
33
27
|
i0.ɵɵtext(2);
|
|
34
28
|
i0.ɵɵelementEnd();
|
|
35
|
-
i0.ɵɵelementStart(3, "span",
|
|
29
|
+
i0.ɵɵelementStart(3, "span", 8);
|
|
36
30
|
i0.ɵɵtext(4);
|
|
37
31
|
i0.ɵɵelementEnd()();
|
|
38
32
|
} if (rf & 2) {
|
|
@@ -43,12 +37,12 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_7_Template(rf
|
|
|
43
37
|
i0.ɵɵtextInterpolate(ctx_r0.queries.length === 1 ? "Query" : "Queries");
|
|
44
38
|
} }
|
|
45
39
|
function DataRequirementsViewerComponent_Conditional_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
46
|
-
i0.ɵɵelementStart(0, "div",
|
|
47
|
-
i0.ɵɵelement(2, "i",
|
|
40
|
+
i0.ɵɵelementStart(0, "div", 9)(1, "h4", 12);
|
|
41
|
+
i0.ɵɵelement(2, "i", 13);
|
|
48
42
|
i0.ɵɵtext(3, " Overview ");
|
|
49
43
|
i0.ɵɵelementEnd();
|
|
50
|
-
i0.ɵɵelementStart(4, "div",
|
|
51
|
-
i0.ɵɵelement(5, "mj-markdown",
|
|
44
|
+
i0.ɵɵelementStart(4, "div", 14);
|
|
45
|
+
i0.ɵɵelement(5, "mj-markdown", 15);
|
|
52
46
|
i0.ɵɵelementEnd()();
|
|
53
47
|
} if (rf & 2) {
|
|
54
48
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -56,7 +50,7 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_13_Template(r
|
|
|
56
50
|
i0.ɵɵproperty("data", ctx_r0.description)("enableCollapsibleHeadings", false)("enableLineNumbers", false)("enableSmartypants", true)("enableHtml", true);
|
|
57
51
|
} }
|
|
58
52
|
function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
59
|
-
i0.ɵɵelementStart(0, "p",
|
|
53
|
+
i0.ɵɵelementStart(0, "p", 26);
|
|
60
54
|
i0.ɵɵtext(1);
|
|
61
55
|
i0.ɵɵelementEnd();
|
|
62
56
|
} if (rf & 2) {
|
|
@@ -65,8 +59,8 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Cond
|
|
|
65
59
|
i0.ɵɵtextInterpolate(entity_r3.description);
|
|
66
60
|
} }
|
|
67
61
|
function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_For_14_Template(rf, ctx) { if (rf & 1) {
|
|
68
|
-
i0.ɵɵelementStart(0, "span",
|
|
69
|
-
i0.ɵɵelement(1, "i",
|
|
62
|
+
i0.ɵɵelementStart(0, "span", 33);
|
|
63
|
+
i0.ɵɵelement(1, "i", 4);
|
|
70
64
|
i0.ɵɵtext(2);
|
|
71
65
|
i0.ɵɵelementEnd();
|
|
72
66
|
} if (rf & 2) {
|
|
@@ -79,8 +73,8 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_For_
|
|
|
79
73
|
i0.ɵɵtextInterpolate1(" ", perm_r4, " ");
|
|
80
74
|
} }
|
|
81
75
|
function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
82
|
-
i0.ɵɵelementStart(0, "div",
|
|
83
|
-
i0.ɵɵelement(1, "i",
|
|
76
|
+
i0.ɵɵelementStart(0, "div", 34);
|
|
77
|
+
i0.ɵɵelement(1, "i", 13);
|
|
84
78
|
i0.ɵɵelementStart(2, "span");
|
|
85
79
|
i0.ɵɵtext(3);
|
|
86
80
|
i0.ɵɵelementEnd()();
|
|
@@ -90,12 +84,12 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Cond
|
|
|
90
84
|
i0.ɵɵtextInterpolate(entity_r3.usageContext);
|
|
91
85
|
} }
|
|
92
86
|
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",
|
|
87
|
+
i0.ɵɵelementStart(0, "span", 45);
|
|
94
88
|
i0.ɵɵtext(1, "*");
|
|
95
89
|
i0.ɵɵelementEnd();
|
|
96
90
|
} }
|
|
97
91
|
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",
|
|
92
|
+
i0.ɵɵelementStart(0, "span", 48);
|
|
99
93
|
i0.ɵɵtext(1);
|
|
100
94
|
i0.ɵɵelementEnd();
|
|
101
95
|
} if (rf & 2) {
|
|
@@ -106,20 +100,20 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Cond
|
|
|
106
100
|
i0.ɵɵtextInterpolate(tag_r5);
|
|
107
101
|
} }
|
|
108
102
|
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",
|
|
110
|
-
i0.ɵɵelement(2, "i",
|
|
111
|
-
i0.ɵɵelementStart(3, "span",
|
|
103
|
+
i0.ɵɵelementStart(0, "div", 43)(1, "span", 39);
|
|
104
|
+
i0.ɵɵelement(2, "i", 4);
|
|
105
|
+
i0.ɵɵelementStart(3, "span", 44);
|
|
112
106
|
i0.ɵɵtext(4);
|
|
113
107
|
i0.ɵɵelementEnd();
|
|
114
|
-
i0.ɵɵconditionalCreate(5, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_Conditional_5_Template, 2, 0, "span",
|
|
108
|
+
i0.ɵɵconditionalCreate(5, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_Conditional_5_Template, 2, 0, "span", 45);
|
|
115
109
|
i0.ɵɵelementEnd();
|
|
116
|
-
i0.ɵɵelementStart(6, "span",
|
|
110
|
+
i0.ɵɵelementStart(6, "span", 40)(7, "code", 46);
|
|
117
111
|
i0.ɵɵtext(8);
|
|
118
112
|
i0.ɵɵelementEnd()();
|
|
119
|
-
i0.ɵɵelementStart(9, "span",
|
|
120
|
-
i0.ɵɵrepeaterCreate(10, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_For_11_Template, 2, 3, "span",
|
|
113
|
+
i0.ɵɵelementStart(9, "span", 41);
|
|
114
|
+
i0.ɵɵrepeaterCreate(10, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_For_11_Template, 2, 3, "span", 47, i0.ɵɵrepeaterTrackByIdentity);
|
|
121
115
|
i0.ɵɵelementEnd();
|
|
122
|
-
i0.ɵɵelementStart(12, "span",
|
|
116
|
+
i0.ɵɵelementStart(12, "span", 42);
|
|
123
117
|
i0.ɵɵtext(13);
|
|
124
118
|
i0.ɵɵelementEnd()();
|
|
125
119
|
} if (rf & 2) {
|
|
@@ -141,22 +135,22 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Cond
|
|
|
141
135
|
i0.ɵɵtextInterpolate1(" ", field_r6.description || "\u2014", " ");
|
|
142
136
|
} }
|
|
143
137
|
function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
144
|
-
i0.ɵɵelementStart(0, "div",
|
|
138
|
+
i0.ɵɵelementStart(0, "div", 35)(1, "h5", 36);
|
|
145
139
|
i0.ɵɵtext(2, "Fields");
|
|
146
140
|
i0.ɵɵelementEnd();
|
|
147
|
-
i0.ɵɵelementStart(3, "div",
|
|
141
|
+
i0.ɵɵelementStart(3, "div", 37)(4, "div", 38)(5, "span", 39);
|
|
148
142
|
i0.ɵɵtext(6, "Name");
|
|
149
143
|
i0.ɵɵelementEnd();
|
|
150
|
-
i0.ɵɵelementStart(7, "span",
|
|
144
|
+
i0.ɵɵelementStart(7, "span", 40);
|
|
151
145
|
i0.ɵɵtext(8, "Type");
|
|
152
146
|
i0.ɵɵelementEnd();
|
|
153
|
-
i0.ɵɵelementStart(9, "span",
|
|
147
|
+
i0.ɵɵelementStart(9, "span", 41);
|
|
154
148
|
i0.ɵɵtext(10, "Usage");
|
|
155
149
|
i0.ɵɵelementEnd();
|
|
156
|
-
i0.ɵɵelementStart(11, "span",
|
|
150
|
+
i0.ɵɵelementStart(11, "span", 42);
|
|
157
151
|
i0.ɵɵtext(12, "Description");
|
|
158
152
|
i0.ɵɵelementEnd()();
|
|
159
|
-
i0.ɵɵrepeaterCreate(13, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_Template, 14, 7, "div",
|
|
153
|
+
i0.ɵɵrepeaterCreate(13, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_Template, 14, 7, "div", 43, _forTrack0);
|
|
160
154
|
i0.ɵɵelementEnd()();
|
|
161
155
|
} if (rf & 2) {
|
|
162
156
|
const entity_r3 = i0.ɵɵnextContext(2).$implicit;
|
|
@@ -164,9 +158,9 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Cond
|
|
|
164
158
|
i0.ɵɵrepeater(entity_r3.fieldMetadata);
|
|
165
159
|
} }
|
|
166
160
|
function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
167
|
-
i0.ɵɵelementStart(0, "div",
|
|
168
|
-
i0.ɵɵconditionalCreate(1, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_1_Template, 4, 1, "div",
|
|
169
|
-
i0.ɵɵconditionalCreate(2, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_Template, 15, 0, "div",
|
|
161
|
+
i0.ɵɵelementStart(0, "div", 32);
|
|
162
|
+
i0.ɵɵconditionalCreate(1, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_1_Template, 4, 1, "div", 34);
|
|
163
|
+
i0.ɵɵconditionalCreate(2, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_Template, 15, 0, "div", 35);
|
|
170
164
|
i0.ɵɵelementEnd();
|
|
171
165
|
} if (rf & 2) {
|
|
172
166
|
const entity_r3 = i0.ɵɵnextContext().$implicit;
|
|
@@ -177,26 +171,26 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Cond
|
|
|
177
171
|
} }
|
|
178
172
|
function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
179
173
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
180
|
-
i0.ɵɵelementStart(0, "div",
|
|
174
|
+
i0.ɵɵelementStart(0, "div", 20)(1, "div", 21);
|
|
181
175
|
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)); });
|
|
182
|
-
i0.ɵɵelementStart(2, "div",
|
|
183
|
-
i0.ɵɵelement(4, "i",
|
|
176
|
+
i0.ɵɵelementStart(2, "div", 22)(3, "div", 23);
|
|
177
|
+
i0.ɵɵelement(4, "i", 17);
|
|
184
178
|
i0.ɵɵelementEnd();
|
|
185
|
-
i0.ɵɵelementStart(5, "div",
|
|
179
|
+
i0.ɵɵelementStart(5, "div", 24)(6, "h4", 25);
|
|
186
180
|
i0.ɵɵtext(7);
|
|
187
181
|
i0.ɵɵelementEnd();
|
|
188
|
-
i0.ɵɵconditionalCreate(8, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_8_Template, 2, 1, "p",
|
|
182
|
+
i0.ɵɵconditionalCreate(8, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_8_Template, 2, 1, "p", 26);
|
|
189
183
|
i0.ɵɵelementEnd();
|
|
190
|
-
i0.ɵɵelementStart(9, "div",
|
|
191
|
-
i0.ɵɵelement(10, "i",
|
|
184
|
+
i0.ɵɵelementStart(9, "div", 27);
|
|
185
|
+
i0.ɵɵelement(10, "i", 4);
|
|
192
186
|
i0.ɵɵelementEnd()();
|
|
193
|
-
i0.ɵɵelementStart(11, "div",
|
|
194
|
-
i0.ɵɵrepeaterCreate(13, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_For_14_Template, 3, 4, "span",
|
|
187
|
+
i0.ɵɵelementStart(11, "div", 28)(12, "div", 29);
|
|
188
|
+
i0.ɵɵrepeaterCreate(13, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_For_14_Template, 3, 4, "span", 30, i0.ɵɵrepeaterTrackByIdentity);
|
|
195
189
|
i0.ɵɵelementEnd();
|
|
196
|
-
i0.ɵɵelementStart(15, "span",
|
|
190
|
+
i0.ɵɵelementStart(15, "span", 31);
|
|
197
191
|
i0.ɵɵtext(16);
|
|
198
192
|
i0.ɵɵelementEnd()()();
|
|
199
|
-
i0.ɵɵconditionalCreate(17, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Template, 3, 2, "div",
|
|
193
|
+
i0.ɵɵconditionalCreate(17, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Template, 3, 2, "div", 32);
|
|
200
194
|
i0.ɵɵelementEnd();
|
|
201
195
|
} if (rf & 2) {
|
|
202
196
|
const entity_r3 = ctx.$implicit;
|
|
@@ -216,12 +210,12 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Temp
|
|
|
216
210
|
i0.ɵɵconditional(ctx_r0.isEntityExpanded(entity_r3.name) ? 17 : -1);
|
|
217
211
|
} }
|
|
218
212
|
function DataRequirementsViewerComponent_Conditional_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
219
|
-
i0.ɵɵelementStart(0, "div",
|
|
220
|
-
i0.ɵɵelement(2, "i",
|
|
213
|
+
i0.ɵɵelementStart(0, "div", 10)(1, "h3", 16);
|
|
214
|
+
i0.ɵɵelement(2, "i", 17);
|
|
221
215
|
i0.ɵɵtext(3, " Entities ");
|
|
222
216
|
i0.ɵɵelementEnd();
|
|
223
|
-
i0.ɵɵelementStart(4, "div",
|
|
224
|
-
i0.ɵɵrepeaterCreate(5, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Template, 18, 7, "div",
|
|
217
|
+
i0.ɵɵelementStart(4, "div", 18);
|
|
218
|
+
i0.ɵɵrepeaterCreate(5, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Template, 18, 7, "div", 19, _forTrack0);
|
|
225
219
|
i0.ɵɵelementEnd()();
|
|
226
220
|
} if (rf & 2) {
|
|
227
221
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -235,7 +229,7 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
|
|
|
235
229
|
i0.ɵɵelementEnd();
|
|
236
230
|
} }
|
|
237
231
|
function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
238
|
-
i0.ɵɵelementStart(0, "p",
|
|
232
|
+
i0.ɵɵelementStart(0, "p", 26);
|
|
239
233
|
i0.ɵɵtext(1);
|
|
240
234
|
i0.ɵɵelementEnd();
|
|
241
235
|
} if (rf & 2) {
|
|
@@ -245,7 +239,7 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
|
|
|
245
239
|
} }
|
|
246
240
|
function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_16_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
247
241
|
i0.ɵɵelementStart(0, "span", 59);
|
|
248
|
-
i0.ɵɵelement(1, "i",
|
|
242
|
+
i0.ɵɵelement(1, "i", 17);
|
|
249
243
|
i0.ɵɵtext(2);
|
|
250
244
|
i0.ɵɵelementEnd();
|
|
251
245
|
} if (rf & 2) {
|
|
@@ -339,15 +333,15 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
|
|
|
339
333
|
i0.ɵɵrepeater(query_r8.parameters);
|
|
340
334
|
} }
|
|
341
335
|
function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_2_For_12_Template(rf, ctx) { if (rf & 1) {
|
|
342
|
-
i0.ɵɵelementStart(0, "div",
|
|
343
|
-
i0.ɵɵelement(2, "i",
|
|
344
|
-
i0.ɵɵelementStart(3, "span",
|
|
336
|
+
i0.ɵɵelementStart(0, "div", 43)(1, "span", 39);
|
|
337
|
+
i0.ɵɵelement(2, "i", 4);
|
|
338
|
+
i0.ɵɵelementStart(3, "span", 44);
|
|
345
339
|
i0.ɵɵtext(4);
|
|
346
340
|
i0.ɵɵelementEnd()();
|
|
347
|
-
i0.ɵɵelementStart(5, "span",
|
|
341
|
+
i0.ɵɵelementStart(5, "span", 40)(6, "code", 46);
|
|
348
342
|
i0.ɵɵtext(7);
|
|
349
343
|
i0.ɵɵelementEnd()();
|
|
350
|
-
i0.ɵɵelementStart(8, "span",
|
|
344
|
+
i0.ɵɵelementStart(8, "span", 42);
|
|
351
345
|
i0.ɵɵtext(9);
|
|
352
346
|
i0.ɵɵelementEnd()();
|
|
353
347
|
} if (rf & 2) {
|
|
@@ -364,19 +358,19 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
|
|
|
364
358
|
i0.ɵɵtextInterpolate1(" ", field_r11.description || "\u2014", " ");
|
|
365
359
|
} }
|
|
366
360
|
function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
367
|
-
i0.ɵɵelementStart(0, "div",
|
|
361
|
+
i0.ɵɵelementStart(0, "div", 35)(1, "h5", 36);
|
|
368
362
|
i0.ɵɵtext(2, "Output Fields");
|
|
369
363
|
i0.ɵɵelementEnd();
|
|
370
|
-
i0.ɵɵelementStart(3, "div",
|
|
364
|
+
i0.ɵɵelementStart(3, "div", 37)(4, "div", 38)(5, "span", 39);
|
|
371
365
|
i0.ɵɵtext(6, "Name");
|
|
372
366
|
i0.ɵɵelementEnd();
|
|
373
|
-
i0.ɵɵelementStart(7, "span",
|
|
367
|
+
i0.ɵɵelementStart(7, "span", 40);
|
|
374
368
|
i0.ɵɵtext(8, "Type");
|
|
375
369
|
i0.ɵɵelementEnd();
|
|
376
|
-
i0.ɵɵelementStart(9, "span",
|
|
370
|
+
i0.ɵɵelementStart(9, "span", 42);
|
|
377
371
|
i0.ɵɵtext(10, "Description");
|
|
378
372
|
i0.ɵɵelementEnd()();
|
|
379
|
-
i0.ɵɵrepeaterCreate(11, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_2_For_12_Template, 10, 6, "div",
|
|
373
|
+
i0.ɵɵrepeaterCreate(11, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_2_For_12_Template, 10, 6, "div", 43, _forTrack0);
|
|
380
374
|
i0.ɵɵelementEnd()();
|
|
381
375
|
} if (rf & 2) {
|
|
382
376
|
const query_r8 = i0.ɵɵnextContext(2).$implicit;
|
|
@@ -397,9 +391,9 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
|
|
|
397
391
|
i0.ɵɵtextInterpolate(query_r8.newQuerySQL);
|
|
398
392
|
} }
|
|
399
393
|
function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
400
|
-
i0.ɵɵelementStart(0, "div",
|
|
394
|
+
i0.ɵɵelementStart(0, "div", 32);
|
|
401
395
|
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",
|
|
396
|
+
i0.ɵɵconditionalCreate(2, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_2_Template, 13, 0, "div", 35);
|
|
403
397
|
i0.ɵɵconditionalCreate(3, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_3_Template, 6, 1, "div", 61);
|
|
404
398
|
i0.ɵɵelementEnd();
|
|
405
399
|
} if (rf & 2) {
|
|
@@ -413,12 +407,12 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
|
|
|
413
407
|
} }
|
|
414
408
|
function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
415
409
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
416
|
-
i0.ɵɵelementStart(0, "div", 51)(1, "div",
|
|
410
|
+
i0.ɵɵelementStart(0, "div", 51)(1, "div", 21);
|
|
417
411
|
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))); });
|
|
418
|
-
i0.ɵɵelementStart(2, "div",
|
|
412
|
+
i0.ɵɵelementStart(2, "div", 22)(3, "div", 52);
|
|
419
413
|
i0.ɵɵelement(4, "i", 53);
|
|
420
414
|
i0.ɵɵelementEnd();
|
|
421
|
-
i0.ɵɵelementStart(5, "div",
|
|
415
|
+
i0.ɵɵelementStart(5, "div", 24)(6, "div", 54)(7, "h4", 25);
|
|
422
416
|
i0.ɵɵtext(8);
|
|
423
417
|
i0.ɵɵelementEnd();
|
|
424
418
|
i0.ɵɵconditionalCreate(9, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_9_Template, 3, 0, "span", 55);
|
|
@@ -426,17 +420,17 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Temp
|
|
|
426
420
|
i0.ɵɵelementStart(10, "p", 56);
|
|
427
421
|
i0.ɵɵtext(11);
|
|
428
422
|
i0.ɵɵelementEnd();
|
|
429
|
-
i0.ɵɵconditionalCreate(12, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_12_Template, 2, 1, "p",
|
|
423
|
+
i0.ɵɵconditionalCreate(12, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_12_Template, 2, 1, "p", 26);
|
|
430
424
|
i0.ɵɵelementEnd();
|
|
431
|
-
i0.ɵɵelementStart(13, "div",
|
|
432
|
-
i0.ɵɵelement(14, "i",
|
|
425
|
+
i0.ɵɵelementStart(13, "div", 27);
|
|
426
|
+
i0.ɵɵelement(14, "i", 4);
|
|
433
427
|
i0.ɵɵelementEnd()();
|
|
434
|
-
i0.ɵɵelementStart(15, "div",
|
|
428
|
+
i0.ɵɵelementStart(15, "div", 28);
|
|
435
429
|
i0.ɵɵconditionalCreate(16, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_16_Template, 3, 0, "div", 57);
|
|
436
|
-
i0.ɵɵelementStart(17, "span",
|
|
430
|
+
i0.ɵɵelementStart(17, "span", 31);
|
|
437
431
|
i0.ɵɵtext(18);
|
|
438
432
|
i0.ɵɵelementEnd()()();
|
|
439
|
-
i0.ɵɵconditionalCreate(19, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Template, 4, 3, "div",
|
|
433
|
+
i0.ɵɵconditionalCreate(19, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Template, 4, 3, "div", 32);
|
|
440
434
|
i0.ɵɵelementEnd();
|
|
441
435
|
} if (rf & 2) {
|
|
442
436
|
const query_r8 = ctx.$implicit;
|
|
@@ -460,11 +454,11 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Temp
|
|
|
460
454
|
i0.ɵɵconditional(ctx_r0.isQueryExpanded(ctx_r0.getQueryKey(query_r8)) ? 19 : -1);
|
|
461
455
|
} }
|
|
462
456
|
function DataRequirementsViewerComponent_Conditional_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
463
|
-
i0.ɵɵelementStart(0, "div",
|
|
464
|
-
i0.ɵɵelement(2, "i",
|
|
457
|
+
i0.ɵɵelementStart(0, "div", 11)(1, "h3", 16);
|
|
458
|
+
i0.ɵɵelement(2, "i", 49);
|
|
465
459
|
i0.ɵɵtext(3, " Queries ");
|
|
466
460
|
i0.ɵɵelementEnd();
|
|
467
|
-
i0.ɵɵelementStart(4, "div",
|
|
461
|
+
i0.ɵɵelementStart(4, "div", 18);
|
|
468
462
|
i0.ɵɵrepeaterCreate(5, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Template, 20, 10, "div", 50, _forTrack1, true);
|
|
469
463
|
i0.ɵɵelementEnd()();
|
|
470
464
|
} if (rf & 2) {
|
|
@@ -473,23 +467,23 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_Template(r
|
|
|
473
467
|
i0.ɵɵrepeater(ctx_r0.queries);
|
|
474
468
|
} }
|
|
475
469
|
function DataRequirementsViewerComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
476
|
-
i0.ɵɵelementStart(0, "div",
|
|
477
|
-
i0.ɵɵelement(2, "i",
|
|
470
|
+
i0.ɵɵelementStart(0, "div", 2)(1, "div", 3);
|
|
471
|
+
i0.ɵɵelement(2, "i", 4);
|
|
478
472
|
i0.ɵɵelementStart(3, "span");
|
|
479
473
|
i0.ɵɵtext(4);
|
|
480
474
|
i0.ɵɵelementEnd()();
|
|
481
|
-
i0.ɵɵelementStart(5, "div",
|
|
482
|
-
i0.ɵɵconditionalCreate(6, DataRequirementsViewerComponent_Conditional_2_Conditional_6_Template, 5, 2, "div",
|
|
483
|
-
i0.ɵɵconditionalCreate(7, DataRequirementsViewerComponent_Conditional_2_Conditional_7_Template, 5, 2, "div",
|
|
484
|
-
i0.ɵɵelementStart(8, "div",
|
|
475
|
+
i0.ɵɵelementStart(5, "div", 5);
|
|
476
|
+
i0.ɵɵconditionalCreate(6, DataRequirementsViewerComponent_Conditional_2_Conditional_6_Template, 5, 2, "div", 6);
|
|
477
|
+
i0.ɵɵconditionalCreate(7, DataRequirementsViewerComponent_Conditional_2_Conditional_7_Template, 5, 2, "div", 6);
|
|
478
|
+
i0.ɵɵelementStart(8, "div", 6)(9, "span", 7);
|
|
485
479
|
i0.ɵɵtext(10);
|
|
486
480
|
i0.ɵɵelementEnd();
|
|
487
|
-
i0.ɵɵelementStart(11, "span",
|
|
481
|
+
i0.ɵɵelementStart(11, "span", 8);
|
|
488
482
|
i0.ɵɵtext(12);
|
|
489
483
|
i0.ɵɵelementEnd()()()();
|
|
490
|
-
i0.ɵɵconditionalCreate(13, DataRequirementsViewerComponent_Conditional_2_Conditional_13_Template, 6, 5, "div",
|
|
491
|
-
i0.ɵɵconditionalCreate(14, DataRequirementsViewerComponent_Conditional_2_Conditional_14_Template, 7, 0, "div",
|
|
492
|
-
i0.ɵɵconditionalCreate(15, DataRequirementsViewerComponent_Conditional_2_Conditional_15_Template, 7, 0, "div",
|
|
484
|
+
i0.ɵɵconditionalCreate(13, DataRequirementsViewerComponent_Conditional_2_Conditional_13_Template, 6, 5, "div", 9);
|
|
485
|
+
i0.ɵɵconditionalCreate(14, DataRequirementsViewerComponent_Conditional_2_Conditional_14_Template, 7, 0, "div", 10);
|
|
486
|
+
i0.ɵɵconditionalCreate(15, DataRequirementsViewerComponent_Conditional_2_Conditional_15_Template, 7, 0, "div", 11);
|
|
493
487
|
} if (rf & 2) {
|
|
494
488
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
495
489
|
i0.ɵɵadvance(2);
|
|
@@ -674,18 +668,18 @@ export class DataRequirementsViewerComponent {
|
|
|
674
668
|
}
|
|
675
669
|
}
|
|
676
670
|
static ɵfac = function DataRequirementsViewerComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DataRequirementsViewerComponent)(); };
|
|
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"], [
|
|
671
|
+
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"], ["Icon", "fa-solid fa-database", "Title", "No Data Requirements", "Message", "This component doesn't have any data requirements defined.", "Size", "compact"], [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, "fas", "fa-database"], [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) {
|
|
678
672
|
i0.ɵɵelementStart(0, "div", 0);
|
|
679
|
-
i0.ɵɵconditionalCreate(1, DataRequirementsViewerComponent_Conditional_1_Template,
|
|
673
|
+
i0.ɵɵconditionalCreate(1, DataRequirementsViewerComponent_Conditional_1_Template, 1, 0, "mj-empty-state", 1)(2, DataRequirementsViewerComponent_Conditional_2_Template, 16, 9);
|
|
680
674
|
i0.ɵɵelementEnd();
|
|
681
675
|
} if (rf & 2) {
|
|
682
676
|
i0.ɵɵadvance();
|
|
683
677
|
i0.ɵɵconditional(!ctx.hasData ? 1 : 2);
|
|
684
|
-
} }, dependencies: [i1.NgClass, i2.MarkdownComponent], styles: [".data-requirements-viewer[_ngcontent-%COMP%] {\n padding: 0;\n height: 100%;\n overflow-y: auto;\n background: var(--mj-bg-surface-sunken);\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: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n color: var(--mj-border-default);\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: var(--mj-text-secondary);\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-muted);\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: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\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: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\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: var(--mj-text-secondary);\n}\n\n.description-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.description-content[_ngcontent-%COMP%] {\n font-size: 14px;\n line-height: 1.6;\n color: var(--mj-text-secondary);\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: var(--mj-bg-surface-sunken);\n padding: 12px;\n border-radius: 6px;\n overflow-x: auto;\n}\n\n.description-content[_ngcontent-%COMP%] code {\n background: var(--mj-bg-surface-sunken);\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: var(--mj-text-primary);\n}\n\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\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: var(--mj-bg-surface);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\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: var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.data-card.expanded[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-md);\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: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.card-icon.query-icon[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.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: var(--mj-text-primary);\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: var(--mj-status-success);\n color: var(--mj-text-inverse);\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: var(--mj-text-muted);\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: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n padding: 4px;\n}\n\n.data-card.expanded[_ngcontent-%COMP%] .expand-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\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 var(--mj-bg-surface-sunken);\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: var(--mj-text-inverse);\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: var(--mj-text-muted);\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: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.entity-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n\n\n.card-body[_ngcontent-%COMP%] {\n padding: 0 16px 16px 16px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\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: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-status-warning);\n}\n\n.usage-context[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\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: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n\n.fields-table[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.fields-header[_ngcontent-%COMP%] {\n display: flex;\n padding: 10px 12px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\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 var(--mj-bg-surface-sunken);\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: var(--mj-bg-surface-sunken);\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: var(--mj-text-muted);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.field-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.required-indicator[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n font-weight: bold;\n}\n\n.field-type[_ngcontent-%COMP%] {\n padding: 2px 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n font-size: 11px;\n color: var(--mj-text-secondary);\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: var(--mj-text-inverse);\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: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.parameters-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\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: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n border-left: 3px solid var(--mj-brand-primary);\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: var(--mj-text-primary);\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: var(--mj-status-error);\n color: var(--mj-text-inverse);\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: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n}\n\n.param-type[_ngcontent-%COMP%] {\n padding: 2px 6px;\n background: var(--mj-border-default);\n border-radius: 4px;\n font-size: 11px;\n color: var(--mj-text-secondary);\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: var(--mj-text-secondary);\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: var(--mj-text-muted);\n margin-right: 4px;\n}\n\n.param-sample[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n padding: 2px 6px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n color: var(--mj-status-error);\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: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.sql-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.sql-code[_ngcontent-%COMP%] {\n margin: 0;\n padding: 16px;\n background: var(--mj-bg-code-block, #1e1e1e);\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-xs);\n line-height: 1.5;\n color: var(--mj-text-code, #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}"] });
|
|
678
|
+
} }, dependencies: [i1.NgClass, i2.MarkdownComponent, i3.MJEmptyStateComponent], styles: [".data-requirements-viewer[_ngcontent-%COMP%] {\n padding: 0;\n height: 100%;\n overflow-y: auto;\n background: var(--mj-bg-surface-sunken);\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: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\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: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\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: var(--mj-text-secondary);\n}\n\n.description-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.description-content[_ngcontent-%COMP%] {\n font-size: 14px;\n line-height: 1.6;\n color: var(--mj-text-secondary);\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: var(--mj-bg-surface-sunken);\n padding: 12px;\n border-radius: 6px;\n overflow-x: auto;\n}\n\n.description-content[_ngcontent-%COMP%] code {\n background: var(--mj-bg-surface-sunken);\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: var(--mj-text-primary);\n}\n\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\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: var(--mj-bg-surface);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\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: var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.data-card.expanded[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-md);\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: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.card-icon.query-icon[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.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: var(--mj-text-primary);\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: var(--mj-status-success);\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: 0 2px 4px color-mix(in srgb, var(--mj-status-success) 20%, transparent);\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 color-mix(in srgb, var(--mj-status-success) 20%, transparent);\n }\n 50% {\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-status-success) 40%, transparent);\n }\n}\n\n.card-path[_ngcontent-%COMP%] {\n margin: 0 0 4px 0;\n font-size: 12px;\n color: var(--mj-text-muted);\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: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n padding: 4px;\n}\n\n.data-card.expanded[_ngcontent-%COMP%] .expand-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\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 var(--mj-bg-surface-sunken);\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: var(--mj-text-inverse);\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: var(--mj-text-muted);\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: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.entity-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n\n\n.card-body[_ngcontent-%COMP%] {\n padding: 0 16px 16px 16px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\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: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-status-warning);\n}\n\n.usage-context[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\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: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n\n.fields-table[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.fields-header[_ngcontent-%COMP%] {\n display: flex;\n padding: 10px 12px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\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 var(--mj-bg-surface-sunken);\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: var(--mj-bg-surface-sunken);\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: var(--mj-text-muted);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.field-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.required-indicator[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n font-weight: bold;\n}\n\n.field-type[_ngcontent-%COMP%] {\n padding: 2px 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n font-size: 11px;\n color: var(--mj-text-secondary);\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: var(--mj-text-inverse);\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: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.parameters-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\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: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n border-left: 3px solid var(--mj-brand-primary);\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: var(--mj-text-primary);\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: var(--mj-status-error);\n color: var(--mj-text-inverse);\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: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n}\n\n.param-type[_ngcontent-%COMP%] {\n padding: 2px 6px;\n background: var(--mj-border-default);\n border-radius: 4px;\n font-size: 11px;\n color: var(--mj-text-secondary);\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: var(--mj-text-secondary);\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: var(--mj-text-muted);\n margin-right: 4px;\n}\n\n.param-sample[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n padding: 2px 6px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n color: var(--mj-status-error);\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: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.sql-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.sql-code[_ngcontent-%COMP%] {\n margin: 0;\n padding: 16px;\n background: var(--mj-bg-code-block, #1e1e1e);\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-xs);\n line-height: 1.5;\n color: var(--mj-text-code, #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}"] });
|
|
685
679
|
}
|
|
686
680
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DataRequirementsViewerComponent, [{
|
|
687
681
|
type: Component,
|
|
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: var(--mj-bg-surface-sunken);\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: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 48px;\n margin-bottom: 16px;\n color: var(--mj-border-default);\n}\n\n.empty-state h3 {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.empty-state p {\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-muted);\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: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\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: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\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: var(--mj-text-secondary);\n}\n\n.description-title i {\n color: var(--mj-brand-primary);\n}\n\n.description-content {\n font-size: 14px;\n line-height: 1.6;\n color: var(--mj-text-secondary);\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: var(--mj-bg-surface-sunken);\n padding: 12px;\n border-radius: 6px;\n overflow-x: auto;\n}\n\n.description-content ::ng-deep code {\n background: var(--mj-bg-surface-sunken);\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: var(--mj-text-primary);\n}\n\n.section-title i {\n color: var(--mj-brand-primary);\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: var(--mj-bg-surface);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n transition: box-shadow 0.2s ease, border-color 0.2s ease;\n}\n\n.data-card:hover {\n border-color: var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.data-card.expanded {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-md);\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: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.card-icon.query-icon {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\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: var(--mj-text-primary);\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: var(--mj-status-success);\n color: var(--mj-text-inverse);\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: var(--mj-text-muted);\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.card-description {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.expand-icon {\n color: var(--mj-text-disabled);\n font-size: 12px;\n padding: 4px;\n}\n\n.data-card.expanded .expand-icon {\n color: var(--mj-brand-primary);\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 var(--mj-bg-surface-sunken);\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: var(--mj-text-inverse);\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: var(--mj-text-muted);\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: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.entity-badge i {\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n/* Card Body */\n.card-body {\n padding: 0 16px 16px 16px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\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: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-status-warning);\n}\n\n.usage-context i {\n color: var(--mj-status-warning);\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: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Fields Table */\n.fields-table {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.fields-header {\n display: flex;\n padding: 10px 12px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\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 var(--mj-bg-surface-sunken);\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: var(--mj-bg-surface-sunken);\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: var(--mj-text-muted);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.field-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.required-indicator {\n color: var(--mj-status-error);\n font-weight: bold;\n}\n\n.field-type {\n padding: 2px 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n font-size: 11px;\n color: var(--mj-text-secondary);\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: var(--mj-text-inverse);\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: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.parameters-title i {\n color: var(--mj-brand-primary);\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: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n border-left: 3px solid var(--mj-brand-primary);\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: var(--mj-text-primary);\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: var(--mj-status-error);\n color: var(--mj-text-inverse);\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: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n}\n\n.param-type {\n padding: 2px 6px;\n background: var(--mj-border-default);\n border-radius: 4px;\n font-size: 11px;\n color: var(--mj-text-secondary);\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: var(--mj-text-secondary);\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: var(--mj-text-muted);\n margin-right: 4px;\n}\n\n.param-sample code {\n padding: 2px 6px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n color: var(--mj-status-error);\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: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.sql-title i {\n color: var(--mj-brand-primary);\n}\n\n.sql-code {\n margin: 0;\n padding: 16px;\n background: var(--mj-bg-code-block, #1e1e1e);\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-xs);\n line-height: 1.5;\n color: var(--mj-text-code, #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"] }]
|
|
682
|
+
args: [{ standalone: false, selector: 'mj-data-requirements-viewer', template: "<div class=\"data-requirements-viewer\">\n @if (!hasData) {\n <mj-empty-state\n Icon=\"fa-solid fa-database\"\n Title=\"No Data Requirements\"\n Message=\"This component doesn't have any data requirements defined.\"\n Size=\"compact\" />\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: var(--mj-bg-surface-sunken);\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: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\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: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\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: var(--mj-text-secondary);\n}\n\n.description-title i {\n color: var(--mj-brand-primary);\n}\n\n.description-content {\n font-size: 14px;\n line-height: 1.6;\n color: var(--mj-text-secondary);\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: var(--mj-bg-surface-sunken);\n padding: 12px;\n border-radius: 6px;\n overflow-x: auto;\n}\n\n.description-content ::ng-deep code {\n background: var(--mj-bg-surface-sunken);\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: var(--mj-text-primary);\n}\n\n.section-title i {\n color: var(--mj-brand-primary);\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: var(--mj-bg-surface);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n transition: box-shadow 0.2s ease, border-color 0.2s ease;\n}\n\n.data-card:hover {\n border-color: var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.data-card.expanded {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-md);\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: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.card-icon.query-icon {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\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: var(--mj-text-primary);\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: var(--mj-status-success);\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: 0 2px 4px color-mix(in srgb, var(--mj-status-success) 20%, transparent);\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 color-mix(in srgb, var(--mj-status-success) 20%, transparent);\n }\n 50% {\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-status-success) 40%, transparent);\n }\n}\n\n.card-path {\n margin: 0 0 4px 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.card-description {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.expand-icon {\n color: var(--mj-text-disabled);\n font-size: 12px;\n padding: 4px;\n}\n\n.data-card.expanded .expand-icon {\n color: var(--mj-brand-primary);\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 var(--mj-bg-surface-sunken);\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: var(--mj-text-inverse);\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: var(--mj-text-muted);\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: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.entity-badge i {\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n/* Card Body */\n.card-body {\n padding: 0 16px 16px 16px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\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: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-status-warning);\n}\n\n.usage-context i {\n color: var(--mj-status-warning);\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: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Fields Table */\n.fields-table {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.fields-header {\n display: flex;\n padding: 10px 12px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\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 var(--mj-bg-surface-sunken);\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: var(--mj-bg-surface-sunken);\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: var(--mj-text-muted);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.field-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.required-indicator {\n color: var(--mj-status-error);\n font-weight: bold;\n}\n\n.field-type {\n padding: 2px 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n font-size: 11px;\n color: var(--mj-text-secondary);\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: var(--mj-text-inverse);\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: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.parameters-title i {\n color: var(--mj-brand-primary);\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: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n border-left: 3px solid var(--mj-brand-primary);\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: var(--mj-text-primary);\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: var(--mj-status-error);\n color: var(--mj-text-inverse);\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: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n}\n\n.param-type {\n padding: 2px 6px;\n background: var(--mj-border-default);\n border-radius: 4px;\n font-size: 11px;\n color: var(--mj-text-secondary);\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: var(--mj-text-secondary);\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: var(--mj-text-muted);\n margin-right: 4px;\n}\n\n.param-sample code {\n padding: 2px 6px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n color: var(--mj-status-error);\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: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.sql-title i {\n color: var(--mj-brand-primary);\n}\n\n.sql-code {\n margin: 0;\n padding: 16px;\n background: var(--mj-bg-code-block, #1e1e1e);\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-xs);\n line-height: 1.5;\n color: var(--mj-text-code, #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"] }]
|
|
689
683
|
}], null, { dataRequirements: [{
|
|
690
684
|
type: Input
|
|
691
685
|
}] }); })();
|