@qbs-origin/origin-form 0.5.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 +24 -0
- package/esm2022/lib/action-step-handler.mjs +163 -0
- package/esm2022/lib/auth-client.service.mjs +69 -0
- package/esm2022/lib/enums/label.keys.mjs +721 -0
- package/esm2022/lib/form-css.helper.mjs +367 -0
- package/esm2022/lib/formly/baseFormlyControlComponent.mjs +52 -0
- package/esm2022/lib/formly/baseFormlyStepComponent.mjs +59 -0
- package/esm2022/lib/formly/custom-section-separator.component.mjs +32 -0
- package/esm2022/lib/formly/form-section-separator.component.mjs +36 -0
- package/esm2022/lib/formly/formly-action.mjs +56 -0
- package/esm2022/lib/formly/formly-checkbox/formly-checkbox.component.mjs +52 -0
- package/esm2022/lib/formly/formly-dictionary-dropdown-tree/formly-dictionary-dropdown-tree.component.mjs +261 -0
- package/esm2022/lib/formly/formly-download-documents/formly-download-documents.component.mjs +126 -0
- package/esm2022/lib/formly/formly-enrol-card/formly-enrol-card.component.mjs +120 -0
- package/esm2022/lib/formly/formly-field-stepper/formly-field-stepper.component.mjs +762 -0
- package/esm2022/lib/formly/formly-generate-documents/formly-generate-documents.component.mjs +57 -0
- package/esm2022/lib/formly/formly-identification.component.mjs +84 -0
- package/esm2022/lib/formly/formly-open-banking/formly-open-banking.component.mjs +590 -0
- package/esm2022/lib/formly/formly-paragraph/formly-paragraph.component.mjs +35 -0
- package/esm2022/lib/formly/formly-radio/formly-radio-component.mjs +49 -0
- package/esm2022/lib/formly/formly-row-fille.mjs +12 -0
- package/esm2022/lib/formly/formly-scan-id/formly-scan-id.component.mjs +284 -0
- package/esm2022/lib/formly/formly-sign/formly-sign.component.mjs +173 -0
- package/esm2022/lib/formly/formly-upload-documents/formly-upload-documents.component.mjs +198 -0
- package/esm2022/lib/formly/formly-validate-contact-info/formly-validate-contact-info.component.mjs +124 -0
- package/esm2022/lib/formly/formly-view-documents/formly-view-documents.component.mjs +245 -0
- package/esm2022/lib/formly/formly-view-offers/formly-view-offers.component.mjs +160 -0
- package/esm2022/lib/model-population.helper.mjs +265 -0
- package/esm2022/lib/models/application-type.model.mjs +12 -0
- package/esm2022/lib/models/application.model.mjs +30 -0
- package/esm2022/lib/models/auth/users.model.mjs +2 -0
- package/esm2022/lib/models/dictionary.model.mjs +20 -0
- package/esm2022/lib/models/flux.model.mjs +105 -0
- package/esm2022/lib/models/forms.model.mjs +572 -0
- package/esm2022/lib/models/label-info.model.mjs +2 -0
- package/esm2022/lib/models/label.model.mjs +2 -0
- package/esm2022/lib/models/language.model.mjs +3 -0
- package/esm2022/lib/models/list.model.mjs +2 -0
- package/esm2022/lib/models/partner.model.mjs +3 -0
- package/esm2022/lib/models/treeview.model.mjs +15 -0
- package/esm2022/lib/origin-form-auth.service.mjs +40 -0
- package/esm2022/lib/origin-form-config.model.mjs +2 -0
- package/esm2022/lib/origin-form-token.interceptor.mjs +35 -0
- package/esm2022/lib/origin-form.component.mjs +2391 -0
- package/esm2022/lib/origin-form.module.mjs +479 -0
- package/esm2022/lib/origin-form.service.mjs +14 -0
- package/esm2022/lib/others/check-list.database.mjs +55 -0
- package/esm2022/lib/others/config-service.mjs +42 -0
- package/esm2022/lib/others/dictionary-label-info.mjs +3 -0
- package/esm2022/lib/others/environment-type.mjs +21 -0
- package/esm2022/lib/others/external-link.directive.mjs +49 -0
- package/esm2022/lib/others/flux-helper.mjs +1397 -0
- package/esm2022/lib/others/picker.component.mjs +119 -0
- package/esm2022/lib/others/translation.pipe.mjs +21 -0
- package/esm2022/lib/others/translations-helper.mjs +258 -0
- package/esm2022/lib/others/utils.mjs +272 -0
- package/esm2022/lib/services/applicationData.service.mjs +145 -0
- package/esm2022/lib/services/auth-http.service.mjs +80 -0
- package/esm2022/lib/services/dialog.service.mjs +56 -0
- package/esm2022/lib/services/dictionary.service.mjs +198 -0
- package/esm2022/lib/services/forms.service.mjs +47 -0
- package/esm2022/lib/services/labels.service.mjs +29 -0
- package/esm2022/lib/services/language.service.mjs +24 -0
- package/esm2022/lib/services/open-banking.service.mjs +194 -0
- package/esm2022/lib/services/origin-form-signalr-handler.service.mjs +107 -0
- package/esm2022/lib/services/origin-form-signalr.service.mjs +105 -0
- package/esm2022/lib/services/otp.service.mjs +28 -0
- package/esm2022/lib/services/proxy.service.mjs +79 -0
- package/esm2022/lib/services/scroll-to-error.service.mjs +369 -0
- package/esm2022/lib/services/translation.service.mjs +27 -0
- package/esm2022/lib/shared-components/confirmation.component.mjs +34 -0
- package/esm2022/lib/shared-components/dictionaries-tree.component.mjs +301 -0
- package/esm2022/lib/shared-components/grid.component.mjs +241 -0
- package/esm2022/lib/shared-components/treeview/treeview.component.mjs +224 -0
- package/esm2022/lib/theme-css.mjs +2254 -0
- package/esm2022/lib/theme-injector.service.mjs +26 -0
- package/esm2022/public-api.mjs +4 -0
- package/esm2022/qbs-origin-origin-form.mjs +5 -0
- package/fesm2022/qbs-origin-origin-form.mjs +15215 -0
- package/fesm2022/qbs-origin-origin-form.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/action-step-handler.d.ts +49 -0
- package/lib/auth-client.service.d.ts +17 -0
- package/lib/enums/label.keys.d.ts +720 -0
- package/lib/form-css.helper.d.ts +28 -0
- package/lib/formly/baseFormlyControlComponent.d.ts +25 -0
- package/lib/formly/baseFormlyStepComponent.d.ts +29 -0
- package/lib/formly/custom-section-separator.component.d.ts +6 -0
- package/lib/formly/form-section-separator.component.d.ts +10 -0
- package/lib/formly/formly-action.d.ts +13 -0
- package/lib/formly/formly-checkbox/formly-checkbox.component.d.ts +15 -0
- package/lib/formly/formly-dictionary-dropdown-tree/formly-dictionary-dropdown-tree.component.d.ts +45 -0
- package/lib/formly/formly-download-documents/formly-download-documents.component.d.ts +22 -0
- package/lib/formly/formly-enrol-card/formly-enrol-card.component.d.ts +114 -0
- package/lib/formly/formly-field-stepper/formly-field-stepper.component.d.ts +79 -0
- package/lib/formly/formly-generate-documents/formly-generate-documents.component.d.ts +17 -0
- package/lib/formly/formly-identification.component.d.ts +19 -0
- package/lib/formly/formly-open-banking/formly-open-banking.component.d.ts +119 -0
- package/lib/formly/formly-paragraph/formly-paragraph.component.d.ts +10 -0
- package/lib/formly/formly-radio/formly-radio-component.d.ts +15 -0
- package/lib/formly/formly-row-fille.d.ts +6 -0
- package/lib/formly/formly-scan-id/formly-scan-id.component.d.ts +41 -0
- package/lib/formly/formly-sign/formly-sign.component.d.ts +36 -0
- package/lib/formly/formly-upload-documents/formly-upload-documents.component.d.ts +25 -0
- package/lib/formly/formly-validate-contact-info/formly-validate-contact-info.component.d.ts +79 -0
- package/lib/formly/formly-view-documents/formly-view-documents.component.d.ts +33 -0
- package/lib/formly/formly-view-offers/formly-view-offers.component.d.ts +23 -0
- package/lib/model-population.helper.d.ts +8 -0
- package/lib/models/application-type.model.d.ts +27 -0
- package/lib/models/application.model.d.ts +107 -0
- package/lib/models/auth/users.model.d.ts +20 -0
- package/lib/models/dictionary.model.d.ts +77 -0
- package/lib/models/flux.model.d.ts +101 -0
- package/lib/models/forms.model.d.ts +504 -0
- package/lib/models/label-info.model.d.ts +10 -0
- package/lib/models/label.model.d.ts +4 -0
- package/lib/models/language.model.d.ts +5 -0
- package/lib/models/list.model.d.ts +8 -0
- package/lib/models/partner.model.d.ts +12 -0
- package/lib/models/treeview.model.d.ts +17 -0
- package/lib/origin-form-auth.service.d.ts +15 -0
- package/lib/origin-form-config.model.d.ts +12 -0
- package/lib/origin-form-token.interceptor.d.ts +12 -0
- package/lib/origin-form.component.d.ts +231 -0
- package/lib/origin-form.module.d.ts +84 -0
- package/lib/origin-form.service.d.ts +6 -0
- package/lib/others/check-list.database.d.ts +16 -0
- package/lib/others/config-service.d.ts +22 -0
- package/lib/others/dictionary-label-info.d.ts +6 -0
- package/lib/others/environment-type.d.ts +8 -0
- package/lib/others/external-link.directive.d.ts +12 -0
- package/lib/others/flux-helper.d.ts +115 -0
- package/lib/others/picker.component.d.ts +36 -0
- package/lib/others/translation.pipe.d.ts +10 -0
- package/lib/others/translations-helper.d.ts +31 -0
- package/lib/others/utils.d.ts +37 -0
- package/lib/services/applicationData.service.d.ts +35 -0
- package/lib/services/auth-http.service.d.ts +21 -0
- package/lib/services/dialog.service.d.ts +20 -0
- package/lib/services/dictionary.service.d.ts +89 -0
- package/lib/services/forms.service.d.ts +17 -0
- package/lib/services/labels.service.d.ts +13 -0
- package/lib/services/language.service.d.ts +14 -0
- package/lib/services/open-banking.service.d.ts +137 -0
- package/lib/services/origin-form-signalr-handler.service.d.ts +29 -0
- package/lib/services/origin-form-signalr.service.d.ts +24 -0
- package/lib/services/otp.service.d.ts +22 -0
- package/lib/services/proxy.service.d.ts +29 -0
- package/lib/services/scroll-to-error.service.d.ts +54 -0
- package/lib/services/translation.service.d.ts +10 -0
- package/lib/shared-components/confirmation.component.d.ts +77 -0
- package/lib/shared-components/dictionaries-tree.component.d.ts +51 -0
- package/lib/shared-components/grid.component.d.ts +138 -0
- package/lib/shared-components/treeview/treeview.component.d.ts +121 -0
- package/lib/theme-css.d.ts +2 -0
- package/lib/theme-injector.service.d.ts +8 -0
- package/package.json +42 -0
- package/public-api.d.ts +3 -0
- package/schematics-compiled/collection.json +10 -0
- package/schematics-compiled/ng-add/index.d.ts +2 -0
- package/schematics-compiled/ng-add/index.js +67 -0
- package/schematics-compiled/ng-add/index.js.map +1 -0
- package/schematics-compiled/ng-add/schema.json +8 -0
- package/src/lib/assets/fonts/Figtree-Bold.ttf +0 -0
- package/src/lib/assets/fonts/Figtree-Light.ttf +0 -0
- package/src/lib/assets/fonts/Figtree-Regular.ttf +0 -0
- package/src/lib/assets/fonts/Sora-ExtraBold.ttf +0 -0
- package/src/lib/assets/fonts/Sora-Light.ttf +0 -0
- package/src/lib/assets/fonts/Sora-Regular.ttf +0 -0
- package/src/lib/assets/fonts/ttrounds-bold-webfont.woff +0 -0
- package/src/lib/assets/fonts/ttrounds-bold-webfont.woff2 +0 -0
- package/src/lib/assets/fonts/ttrounds-regular-webfont.woff +0 -0
- package/src/lib/assets/fonts/ttrounds-regular-webfont.woff2 +0 -0
- package/src/lib/assets/fonts/ttrounds-thin-webfont.woff +0 -0
- package/src/lib/assets/fonts/ttrounds-thin-webfont.woff2 +0 -0
- package/src/lib/assets/images/flag/icon-flag-de.svg +10 -0
- package/src/lib/assets/images/flag/icon-flag-en.svg +1 -0
- package/src/lib/assets/images/flag/icon-flag-es.svg +11 -0
- package/src/lib/assets/images/flag/icon-flag-fr.svg +1 -0
- package/src/lib/assets/images/flag/icon-flag-ro.svg +11 -0
- package/src/lib/assets/images/flag/origin-form/new-id-card.png +0 -0
- package/src/lib/assets/images/flag/origin-form/old-id-card.png +0 -0
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
export class FormCssHelper {
|
|
2
|
+
static convertToStyleString(cssRules, isDisplayMode) {
|
|
3
|
+
let styleString = FormCssHelper.convertToCssText(cssRules);
|
|
4
|
+
if (isDisplayMode) {
|
|
5
|
+
const newRule = this.convertRuleToCssText('.mat-horizontal-stepper-header-container', { display: 'none' }, cssRules);
|
|
6
|
+
styleString += newRule;
|
|
7
|
+
}
|
|
8
|
+
return styleString;
|
|
9
|
+
}
|
|
10
|
+
static convertToCssText(cssRules) {
|
|
11
|
+
const styleString = Object.entries(cssRules)
|
|
12
|
+
.map(([k, v]) => this.convertRuleToCssText(k, v, cssRules))
|
|
13
|
+
.join(' ');
|
|
14
|
+
return styleString;
|
|
15
|
+
}
|
|
16
|
+
static convertRuleToCssText(key, values, cssRules) {
|
|
17
|
+
const valuesAsText = Object.entries(values)
|
|
18
|
+
.map(([k, v]) => `${k}:${v};`)
|
|
19
|
+
.join(' ');
|
|
20
|
+
let cssText = ` ${key} {${valuesAsText}} `;
|
|
21
|
+
switch (key) {
|
|
22
|
+
case '.component-text-field':
|
|
23
|
+
cssText = this.getSpecificCssForInput(key, values, cssRules);
|
|
24
|
+
break;
|
|
25
|
+
case '.component-checkbox':
|
|
26
|
+
cssText = this.getSpecificCssForCheckBox(key, values, cssRules);
|
|
27
|
+
break;
|
|
28
|
+
case '.font-heading-1':
|
|
29
|
+
cssText = this.getSpecificCssForStepLabel(key, values, cssRules);
|
|
30
|
+
break;
|
|
31
|
+
case '.formly-radio':
|
|
32
|
+
case '.component-radio':
|
|
33
|
+
cssText = this.getSpecificCssForRadio(values, cssRules);
|
|
34
|
+
break;
|
|
35
|
+
case '.component-date':
|
|
36
|
+
case '.component-data':
|
|
37
|
+
cssText = this.getSpecificCssForData(key, values, cssRules);
|
|
38
|
+
break;
|
|
39
|
+
case '.table-details':
|
|
40
|
+
cssText = this.getSpecificCssForTableDetail(values);
|
|
41
|
+
break;
|
|
42
|
+
case '.table-header':
|
|
43
|
+
cssText = this.getSpecificCssForTableHeader(values);
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
return cssText;
|
|
47
|
+
}
|
|
48
|
+
static getSpecificCssForInput(key, values, cssRules) {
|
|
49
|
+
let inputSpecificCss = '';
|
|
50
|
+
let signInputSpecificCss = '';
|
|
51
|
+
const fontStyleForInputText = cssRules['.font-input'];
|
|
52
|
+
if (fontStyleForInputText) {
|
|
53
|
+
//transfer property from component to input
|
|
54
|
+
if (values['text-align']) {
|
|
55
|
+
fontStyleForInputText['text-align'] = values['text-align'];
|
|
56
|
+
}
|
|
57
|
+
fontStyleForInputText['color'] += ' !important';
|
|
58
|
+
inputSpecificCss = this.styleObjectToString(fontStyleForInputText);
|
|
59
|
+
signInputSpecificCss = this.styleObjectToString(fontStyleForInputText, true);
|
|
60
|
+
}
|
|
61
|
+
let labelSpecificCss = '';
|
|
62
|
+
let signLabelSpecificCss = '';
|
|
63
|
+
const fontStyleForLabelText = cssRules['.component-text-field-label'];
|
|
64
|
+
if (fontStyleForLabelText) {
|
|
65
|
+
labelSpecificCss = this.styleObjectToString(fontStyleForLabelText);
|
|
66
|
+
signLabelSpecificCss = this.styleObjectToString(fontStyleForLabelText, true);
|
|
67
|
+
}
|
|
68
|
+
var css = `
|
|
69
|
+
.mat-mdc-text-field-wrapper.mdc-text-field {
|
|
70
|
+
${this.styleObjectToString(values)};
|
|
71
|
+
border-style: solid;
|
|
72
|
+
input {
|
|
73
|
+
${inputSpecificCss}
|
|
74
|
+
}
|
|
75
|
+
mat-label {
|
|
76
|
+
${labelSpecificCss}
|
|
77
|
+
}
|
|
78
|
+
.mdc-line-ripple--active::after {
|
|
79
|
+
border-bottom-color: ${fontStyleForLabelText['color']}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
input.component-text-field {
|
|
84
|
+
border-style: solid !important;
|
|
85
|
+
${this.styleObjectToString(values, true)};
|
|
86
|
+
${signInputSpecificCss}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.component-text-field-label label {
|
|
90
|
+
${signLabelSpecificCss}
|
|
91
|
+
}
|
|
92
|
+
`;
|
|
93
|
+
return `${key} { ${css}}`;
|
|
94
|
+
}
|
|
95
|
+
static getSpecificCssForTableHeader(values) {
|
|
96
|
+
const backgroundColor = values['background-color'] || '#ffffff';
|
|
97
|
+
const textColor = values['color'] || '#000000';
|
|
98
|
+
const border = values['border-width'];
|
|
99
|
+
const borderColor = values['border-color'] || '#000000';
|
|
100
|
+
const borderCollapse = values['border-collapse'] || 'collapse';
|
|
101
|
+
const borderSpacing = values['border-spacing'] || '0';
|
|
102
|
+
const textAlign = values['text-align'] || 'left';
|
|
103
|
+
const verticalAlign = values['vertical-align'] || 'middle';
|
|
104
|
+
const fontFamily = values['font-family'] || 'Arial, sans-serif';
|
|
105
|
+
const fontSize = values['font-size'] || '14px';
|
|
106
|
+
const letterSpacing = values['letter-spacing'] || 'normal';
|
|
107
|
+
const padding = values['padding'] || '8px';
|
|
108
|
+
const width = values['width'] || 'auto';
|
|
109
|
+
const height = values['height'] || 'auto';
|
|
110
|
+
const css = `
|
|
111
|
+
table
|
|
112
|
+
{
|
|
113
|
+
border-collapse: ${borderCollapse} !important;
|
|
114
|
+
border-spacing: ${borderSpacing};
|
|
115
|
+
font-family: ${fontFamily};
|
|
116
|
+
font-size: ${fontSize};
|
|
117
|
+
}
|
|
118
|
+
table th {
|
|
119
|
+
height: ${height};
|
|
120
|
+
}
|
|
121
|
+
table td{height: ${height};
|
|
122
|
+
}
|
|
123
|
+
.table-head tr th{
|
|
124
|
+
background-color: ${backgroundColor} !important;
|
|
125
|
+
width: ${width} !important;
|
|
126
|
+
border-collapse: ${borderCollapse};
|
|
127
|
+
border-spacing: ${borderSpacing};
|
|
128
|
+
border: ${border} solid ${borderColor};
|
|
129
|
+
vertical-align: ${verticalAlign};
|
|
130
|
+
font-family: ${fontFamily};
|
|
131
|
+
font-size: ${fontSize};
|
|
132
|
+
}
|
|
133
|
+
.table-head {
|
|
134
|
+
color: ${textColor};
|
|
135
|
+
border: ${border} solid ${borderColor};
|
|
136
|
+
text-align: ${textAlign};
|
|
137
|
+
letter-spacing: ${letterSpacing};
|
|
138
|
+
padding: ${padding};
|
|
139
|
+
height: ${height};
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
`;
|
|
143
|
+
return css;
|
|
144
|
+
}
|
|
145
|
+
static getSpecificCssForTableDetail(values) {
|
|
146
|
+
const backgroundColor = values['background-color'] || '#ffffff';
|
|
147
|
+
const textColor = values['color'] || '#000000';
|
|
148
|
+
const textAlign = values['text-align'] || 'left';
|
|
149
|
+
const verticalAlign = values['verticalAlign'] || 'middle';
|
|
150
|
+
const letterSpacing = values['letter-spacing'] || 'normal';
|
|
151
|
+
const padding = values['padding'] || '8px';
|
|
152
|
+
const rowBorder = values['rowborder'] || '1px';
|
|
153
|
+
const rowBorderColor = values['rowborder-color'] || '#000000';
|
|
154
|
+
const hoverBackgroundColor = values['hover-background-color'] || '#f0f0f0';
|
|
155
|
+
const css = `
|
|
156
|
+
|
|
157
|
+
.table-detail{
|
|
158
|
+
background-color: ${backgroundColor}
|
|
159
|
+
}
|
|
160
|
+
.table-detail .ng-star-inserted {
|
|
161
|
+
border-top: ${rowBorder} solid ${rowBorderColor} !important;
|
|
162
|
+
border-bottom: ${rowBorder} solid ${rowBorderColor} !important;
|
|
163
|
+
color: ${textColor} !important;
|
|
164
|
+
text-align: ${textAlign};
|
|
165
|
+
vertical-align: ${verticalAlign};
|
|
166
|
+
letter-spacing: ${letterSpacing};
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
.table-detail .ng-star-inserted:hover {
|
|
171
|
+
background-color: ${hoverBackgroundColor} !important;
|
|
172
|
+
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.table-detail td {
|
|
176
|
+
padding: ${padding} !important;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
`;
|
|
180
|
+
return css;
|
|
181
|
+
}
|
|
182
|
+
static getSpecificCssForCheckBox(key, values, cssRules) {
|
|
183
|
+
let labelSpecificCss = '';
|
|
184
|
+
const fontStyleForLabelText = cssRules['.component-checkbox-label'];
|
|
185
|
+
if (fontStyleForLabelText) {
|
|
186
|
+
labelSpecificCss = this.styleObjectToString(fontStyleForLabelText);
|
|
187
|
+
}
|
|
188
|
+
var css = `
|
|
189
|
+
.mat-mdc-text-field-wrapper.mdc-checkbox-field {
|
|
190
|
+
margin-top: ${values['margin-top']};
|
|
191
|
+
margin-right: ${values['margin-right']};
|
|
192
|
+
margin-bottom: ${values['margin-bottom']};
|
|
193
|
+
margin-left: ${values['margin-left']};
|
|
194
|
+
.mdc-form-field > label {
|
|
195
|
+
${labelSpecificCss};
|
|
196
|
+
padding-left: 0;
|
|
197
|
+
padding-top: 2px;
|
|
198
|
+
};
|
|
199
|
+
.mdc-checkbox {
|
|
200
|
+
width: calc(18px + (2 * ${values['border-width']}));
|
|
201
|
+
height: calc(18px + (2 * ${values['border-width']}));
|
|
202
|
+
flex: 0 0 calc(18px + (2 * ${values['border-width']}));
|
|
203
|
+
}
|
|
204
|
+
.mdc-checkbox .mdc-checkbox__native-control {
|
|
205
|
+
width: 100%;
|
|
206
|
+
height: 100%;
|
|
207
|
+
}
|
|
208
|
+
.mdc-checkbox__background {
|
|
209
|
+
background-color: ${values['background-color']} !important;
|
|
210
|
+
border: ${values['border-width']} solid ${values['border-color']} !important;
|
|
211
|
+
border-radius: ${values['border-radius']};
|
|
212
|
+
width: calc(19px + (2 * ${values['border-width']}));
|
|
213
|
+
height: calc(19px + (2 * ${values['border-width']}));
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
.mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background {
|
|
217
|
+
border: ${values['border-width']} solid ${values['border-color']} !important;
|
|
218
|
+
}
|
|
219
|
+
.mdc-checkbox__checkmark-path {
|
|
220
|
+
color: ${values['color']} !important;
|
|
221
|
+
}`;
|
|
222
|
+
return `${key} { ${css} }`;
|
|
223
|
+
}
|
|
224
|
+
static getSpecificCssForStepLabel(key, values, cssRules) {
|
|
225
|
+
const labelSpecificCss = this.styleObjectToString(values);
|
|
226
|
+
// Map Heading 1 to step labels in stepper
|
|
227
|
+
const heading1Style = cssRules['.font-heading-1'];
|
|
228
|
+
const stepLabelCss = heading1Style
|
|
229
|
+
? this.styleObjectToString(heading1Style)
|
|
230
|
+
: '';
|
|
231
|
+
// Map Heading 2 to section titles
|
|
232
|
+
const heading2Style = cssRules['.font-heading-2'];
|
|
233
|
+
const sectionTitleCss = heading2Style
|
|
234
|
+
? this.styleObjectToString(heading2Style)
|
|
235
|
+
: '';
|
|
236
|
+
// Map Heading 3 to step descriptions
|
|
237
|
+
const heading3Style = cssRules['.font-heading-3'];
|
|
238
|
+
const stepDescriptionCss = heading3Style
|
|
239
|
+
? this.styleObjectToString(heading3Style)
|
|
240
|
+
: '';
|
|
241
|
+
return `
|
|
242
|
+
.mat-horizontal-stepper-wrapper {
|
|
243
|
+
.mat-step-text-label {
|
|
244
|
+
${stepLabelCss}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.mat-step-label {
|
|
249
|
+
${stepLabelCss}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
.mat-step-label-selected {
|
|
253
|
+
${stepLabelCss}
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
.form-section-title h2,
|
|
257
|
+
.separator h2 {
|
|
258
|
+
${sectionTitleCss}
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
.step-description,
|
|
262
|
+
.mat-step-sub-label {
|
|
263
|
+
${stepDescriptionCss}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.mat-stepper-horizontal .mat-step-label,
|
|
267
|
+
.mat-stepper-vertical .mat-step-label {
|
|
268
|
+
${stepLabelCss}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
.component-text-field mat-label,
|
|
272
|
+
.component-checkbox mat-label,
|
|
273
|
+
.component-radio mat-label,
|
|
274
|
+
.component-date mat-label {
|
|
275
|
+
${cssRules['.font-label']
|
|
276
|
+
? this.styleObjectToString(cssRules['.font-label'])
|
|
277
|
+
: ''}
|
|
278
|
+
}
|
|
279
|
+
`;
|
|
280
|
+
}
|
|
281
|
+
static getSpecificCssForRadio(values, cssRules) {
|
|
282
|
+
let labelSpecificCss = '';
|
|
283
|
+
const fontStyleForLabelText = cssRules['.component-radio-label'];
|
|
284
|
+
if (fontStyleForLabelText) {
|
|
285
|
+
labelSpecificCss = this.styleObjectToString(fontStyleForLabelText);
|
|
286
|
+
}
|
|
287
|
+
var css = `
|
|
288
|
+
.mat-mdc-text-field-wrapper.mdc-radiobox-field {
|
|
289
|
+
margin-top: ${values['margin-top']};
|
|
290
|
+
margin-right: ${values['margin-right']};
|
|
291
|
+
margin-bottom: ${values['margin-bottom']};
|
|
292
|
+
margin-left: ${values['margin-left']};
|
|
293
|
+
label {
|
|
294
|
+
${labelSpecificCss};
|
|
295
|
+
padding-left: 0;
|
|
296
|
+
p {
|
|
297
|
+
margin: 0 0 10px;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
.mat-mdc-radio-button {
|
|
301
|
+
.mdc-radio__native-control {
|
|
302
|
+
width: 100%;
|
|
303
|
+
height: 100%;
|
|
304
|
+
}
|
|
305
|
+
.mdc-radio {
|
|
306
|
+
width: calc(20px + (2 * ${values['border-width']}));
|
|
307
|
+
height: calc(20px + (2 * ${values['border-width']}));
|
|
308
|
+
.mdc-radio__background {
|
|
309
|
+
background-color: ${values['background-color']} !important;
|
|
310
|
+
border: ${values['border-width']} solid ${values['border-color']} !important;
|
|
311
|
+
border-radius: 50%;
|
|
312
|
+
width: calc(20px + (2 * ${values['border-width']}));
|
|
313
|
+
height: calc(20px + (2 * ${values['border-width']}));
|
|
314
|
+
.mdc-radio__outer-circle {
|
|
315
|
+
border-color: ${values['background-color']} !important;
|
|
316
|
+
}
|
|
317
|
+
.mdc-radio__inner-circle {
|
|
318
|
+
border-color: ${values['color']} !important;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
`;
|
|
325
|
+
return css;
|
|
326
|
+
}
|
|
327
|
+
static getSpecificCssForData(key, values, cssRules) {
|
|
328
|
+
let inputSpecificCss = '';
|
|
329
|
+
const fontStyleForInputText = cssRules['.font-list'];
|
|
330
|
+
if (fontStyleForInputText) {
|
|
331
|
+
//transfer property from component to input
|
|
332
|
+
if (values['text-align']) {
|
|
333
|
+
fontStyleForInputText['text-align'] = values['text-align'];
|
|
334
|
+
}
|
|
335
|
+
inputSpecificCss = this.styleObjectToString(fontStyleForInputText);
|
|
336
|
+
}
|
|
337
|
+
let labelSpecificCss = '';
|
|
338
|
+
const fontStyleForLabelText = cssRules['.component-data-label'];
|
|
339
|
+
if (fontStyleForLabelText) {
|
|
340
|
+
labelSpecificCss = this.styleObjectToString(fontStyleForLabelText);
|
|
341
|
+
}
|
|
342
|
+
return ` ${key} { .mat-mdc-text-field-wrapper.mdc-text-field {
|
|
343
|
+
${this.styleObjectToString(values)};
|
|
344
|
+
border-style:solid;
|
|
345
|
+
input{
|
|
346
|
+
${inputSpecificCss}
|
|
347
|
+
}
|
|
348
|
+
.mat-mdc-form-field-infix {
|
|
349
|
+
.mat-mdc-form-field-input-control::placeholder{
|
|
350
|
+
${labelSpecificCss}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
} `;
|
|
355
|
+
}
|
|
356
|
+
static styleObjectToString(values, important = false) {
|
|
357
|
+
values['width'] =
|
|
358
|
+
'calc(100%' +
|
|
359
|
+
('margin-left' in values ? ` - ${values['margin-left']}` : '') +
|
|
360
|
+
('margin-right' in values ? ` - ${values['margin-right']}` : '') +
|
|
361
|
+
')';
|
|
362
|
+
return Object.entries(values)
|
|
363
|
+
.map(([key, value]) => `${key}: ${value}${important ? ' !important' : ''}`)
|
|
364
|
+
.join('; ');
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jc3MuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvb3JpZ2luLWZvcm0vc3JjL2xpYi9mb3JtLWNzcy5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGFBQWE7SUFFakIsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFFBQWtCLEVBQUUsYUFBc0I7UUFDM0UsSUFBSSxXQUFXLEdBQUcsYUFBYSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNELElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUN2QywwQ0FBMEMsRUFDMUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQ25CLFFBQVEsQ0FDVCxDQUFDO1lBQ0YsV0FBVyxJQUFJLE9BQU8sQ0FBQztRQUN6QixDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFrQjtRQUNoRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQzthQUN6QyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDMUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxvQkFBb0IsQ0FDakMsR0FBVyxFQUNYLE1BQXNDLEVBQ3RDLFFBQWtCO1FBRWxCLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO2FBQ3hDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUs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LENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDdEU7YUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3NzUnVsZXMgfSBmcm9tIFwiLi9vdGhlcnMvdXRpbHNcIjtcblxuZXhwb3J0IGNsYXNzIEZvcm1Dc3NIZWxwZXIge1xuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFRvU3R5bGVTdHJpbmcoY3NzUnVsZXM6IENzc1J1bGVzLCBpc0Rpc3BsYXlNb2RlOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBsZXQgc3R5bGVTdHJpbmcgPSBGb3JtQ3NzSGVscGVyLmNvbnZlcnRUb0Nzc1RleHQoY3NzUnVsZXMpO1xuICAgIGlmIChpc0Rpc3BsYXlNb2RlKSB7XG4gICAgICBjb25zdCBuZXdSdWxlID0gdGhpcy5jb252ZXJ0UnVsZVRvQ3NzVGV4dChcbiAgICAgICAgJy5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlci1jb250YWluZXInLFxuICAgICAgICB7IGRpc3BsYXk6ICdub25lJyB9LFxuICAgICAgICBjc3NSdWxlc1xuICAgICAgKTtcbiAgICAgIHN0eWxlU3RyaW5nICs9IG5ld1J1bGU7XG4gICAgfVxuICAgIHJldHVybiBzdHlsZVN0cmluZztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvbnZlcnRUb0Nzc1RleHQoY3NzUnVsZXM6IENzc1J1bGVzKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdHlsZVN0cmluZyA9IE9iamVjdC5lbnRyaWVzKGNzc1J1bGVzKVxuICAgICAgLm1hcCgoW2ssIHZdKSA9PiB0aGlzLmNvbnZlcnRSdWxlVG9Dc3NUZXh0KGssIHYsIGNzc1J1bGVzKSlcbiAgICAgIC5qb2luKCcgJyk7XG4gICAgcmV0dXJuIHN0eWxlU3RyaW5nO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY29udmVydFJ1bGVUb0Nzc1RleHQoXG4gICAga2V5OiBzdHJpbmcsXG4gICAgdmFsdWVzOiB7IFtwcm9wZXJ0eTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgY3NzUnVsZXM6IENzc1J1bGVzXG4gICkge1xuICAgIGNvbnN0IHZhbHVlc0FzVGV4dCA9IE9iamVjdC5lbnRyaWVzKHZhbHVlcylcbiAgICAgIC5tYXAoKFtrLCB2XSkgPT4gYCR7a306JHt2fTtgKVxuICAgICAgLmpvaW4oJyAnKTtcbiAgICBsZXQgY3NzVGV4dCA9IGAgJHtrZXl9IHske3ZhbHVlc0FzVGV4dH19IGA7XG5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgY2FzZSAnLmNvbXBvbmVudC10ZXh0LWZpZWxkJzpcbiAgICAgICAgY3NzVGV4dCA9IHRoaXMuZ2V0U3BlY2lmaWNDc3NGb3JJbnB1dChrZXksIHZhbHVlcywgY3NzUnVsZXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJy5jb21wb25lbnQtY2hlY2tib3gnOlxuICAgICAgICBjc3NUZXh0ID0gdGhpcy5nZXRTcGVjaWZpY0Nzc0ZvckNoZWNrQm94KGtleSwgdmFsdWVzLCBjc3NSdWxlcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnLmZvbnQtaGVhZGluZy0xJzpcbiAgICAgICAgY3NzVGV4dCA9IHRoaXMuZ2V0U3BlY2lmaWNDc3NGb3JTdGVwTGFiZWwoa2V5LCB2YWx1ZXMsIGNzc1J1bGVzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcuZm9ybWx5LXJhZGlvJzpcbiAgICAgIGNhc2UgJy5jb21wb25lbnQtcmFkaW8nOlxuICAgICAgICBjc3NUZXh0ID0gdGhpcy5nZXRTcGVjaWZpY0Nzc0ZvclJhZGlvKHZhbHVlcywgY3NzUnVsZXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJy5jb21wb25lbnQtZGF0ZSc6XG4gICAgICBjYXNlICcuY29tcG9uZW50LWRhdGEnOlxuICAgICAgICBjc3NUZXh0ID0gdGhpcy5nZXRTcGVjaWZpY0Nzc0ZvckRhdGEoa2V5LCB2YWx1ZXMsIGNzc1J1bGVzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcudGFibGUtZGV0YWlscyc6XG4gICAgICAgIGNzc1RleHQgPSB0aGlzLmdldFNwZWNpZmljQ3NzRm9yVGFibGVEZXRhaWwodmFsdWVzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcudGFibGUtaGVhZGVyJzpcbiAgICAgICAgY3NzVGV4dCA9IHRoaXMuZ2V0U3BlY2lmaWNDc3NGb3JUYWJsZUhlYWRlcih2YWx1ZXMpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIGNzc1RleHQ7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldFNwZWNpZmljQ3NzRm9ySW5wdXQoXG4gICAga2V5OiBzdHJpbmcsXG4gICAgdmFsdWVzOiB7IFtwcm9wZXJ0eTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgY3NzUnVsZXM6IENzc1J1bGVzXG4gICkge1xuICAgIGxldCBpbnB1dFNwZWNpZmljQ3NzID0gJyc7XG4gICAgbGV0IHNpZ25JbnB1dFNwZWNpZmljQ3NzID0gJyc7XG4gICAgY29uc3QgZm9udFN0eWxlRm9ySW5wdXRUZXh0ID0gY3NzUnVsZXNbJy5mb250LWlucHV0J107XG4gICAgaWYgKGZvbnRTdHlsZUZvcklucHV0VGV4dCkge1xuICAgICAgLy90cmFuc2ZlciBwcm9wZXJ0eSBmcm9tIGNvbXBvbmVudCB0byBpbnB1dFxuICAgICAgaWYgKHZhbHVlc1sndGV4dC1hbGlnbiddKSB7XG4gICAgICAgIGZvbnRTdHlsZUZvcklucHV0VGV4dFsndGV4dC1hbGlnbiddID0gdmFsdWVzWyd0ZXh0LWFsaWduJ107XG4gICAgICB9XG4gICAgICBmb250U3R5bGVGb3JJbnB1dFRleHRbJ2NvbG9yJ10gKz0gJyAhaW1wb3J0YW50JztcbiAgICAgIGlucHV0U3BlY2lmaWNDc3MgPSB0aGlzLnN0eWxlT2JqZWN0VG9TdHJpbmcoZm9udFN0eWxlRm9ySW5wdXRUZXh0KTtcbiAgICAgIHNpZ25JbnB1dFNwZWNpZmljQ3NzID0gdGhpcy5zdHlsZU9iamVjdFRvU3RyaW5nKFxuICAgICAgICBmb250U3R5bGVGb3JJbnB1dFRleHQsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IGxhYmVsU3BlY2lmaWNDc3MgPSAnJztcbiAgICBsZXQgc2lnbkxhYmVsU3BlY2lmaWNDc3MgPSAnJztcbiAgICBjb25zdCBmb250U3R5bGVGb3JMYWJlbFRleHQgPSBjc3NSdWxlc1snLmNvbXBvbmVudC10ZXh0LWZpZWxkLWxhYmVsJ107XG4gICAgaWYgKGZvbnRTdHlsZUZvckxhYmVsVGV4dCkge1xuICAgICAgbGFiZWxTcGVjaWZpY0NzcyA9IHRoaXMuc3R5bGVPYmplY3RUb1N0cmluZyhmb250U3R5bGVGb3JMYWJlbFRleHQpO1xuICAgICAgc2lnbkxhYmVsU3BlY2lmaWNDc3MgPSB0aGlzLnN0eWxlT2JqZWN0VG9TdHJpbmcoXG4gICAgICAgIGZvbnRTdHlsZUZvckxhYmVsVGV4dCxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgY3NzID0gYFxuICAgIC5tYXQtbWRjLXRleHQtZmllbGQtd3JhcHBlci5tZGMtdGV4dC1maWVsZCB7XG4gICAgICAke3RoaXMuc3R5bGVPYmplY3RUb1N0cmluZyh2YWx1ZXMpfTtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICBpbnB1dCB7XG4gICAgICAgICR7aW5wdXRTcGVjaWZpY0Nzc31cbiAgICAgIH1cbiAgICAgIG1hdC1sYWJlbCB7XG4gICAgICAgICR7bGFiZWxTcGVjaWZpY0Nzc31cbiAgICAgIH1cbiAgICAgIC5tZGMtbGluZS1yaXBwbGUtLWFjdGl2ZTo6YWZ0ZXIge1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAke2ZvbnRTdHlsZUZvckxhYmVsVGV4dFsnY29sb3InXX1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbnB1dC5jb21wb25lbnQtdGV4dC1maWVsZCB7XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG4gICAgICAke3RoaXMuc3R5bGVPYmplY3RUb1N0cmluZyh2YWx1ZXMsIHRydWUpfTtcbiAgICAgICR7c2lnbklucHV0U3BlY2lmaWNDc3N9XG4gICAgfVxuXG4gICAgLmNvbXBvbmVudC10ZXh0LWZpZWxkLWxhYmVsIGxhYmVsIHtcbiAgICAgICR7c2lnbkxhYmVsU3BlY2lmaWNDc3N9XG4gICAgfVxuICAgIGA7XG5cbiAgICByZXR1cm4gYCR7a2V5fSB7ICR7Y3NzfX1gO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRTcGVjaWZpY0Nzc0ZvclRhYmxlSGVhZGVyKFxuICAgIHZhbHVlczogeyBbcHJvcGVydHk6IHN0cmluZ106IHN0cmluZyB9XG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgYmFja2dyb3VuZENvbG9yID0gdmFsdWVzWydiYWNrZ3JvdW5kLWNvbG9yJ10gfHwgJyNmZmZmZmYnO1xuICAgIGNvbnN0IHRleHRDb2xvciA9IHZhbHVlc1snY29sb3InXSB8fCAnIzAwMDAwMCc7XG4gICAgY29uc3QgYm9yZGVyID0gdmFsdWVzWydib3JkZXItd2lkdGgnXTtcbiAgICBjb25zdCBib3JkZXJDb2xvciA9IHZhbHVlc1snYm9yZGVyLWNvbG9yJ10gfHwgJyMwMDAwMDAnO1xuICAgIGNvbnN0IGJvcmRlckNvbGxhcHNlID0gdmFsdWVzWydib3JkZXItY29sbGFwc2UnXSB8fCAnY29sbGFwc2UnO1xuICAgIGNvbnN0IGJvcmRlclNwYWNpbmcgPSB2YWx1ZXNbJ2JvcmRlci1zcGFjaW5nJ10gfHwgJzAnO1xuICAgIGNvbnN0IHRleHRBbGlnbiA9IHZhbHVlc1sndGV4dC1hbGlnbiddIHx8ICdsZWZ0JztcbiAgICBjb25zdCB2ZXJ0aWNhbEFsaWduID0gdmFsdWVzWyd2ZXJ0aWNhbC1hbGlnbiddIHx8ICdtaWRkbGUnO1xuICAgIGNvbnN0IGZvbnRGYW1pbHkgPSB2YWx1ZXNbJ2ZvbnQtZmFtaWx5J10gfHwgJ0FyaWFsLCBzYW5zLXNlcmlmJztcbiAgICBjb25zdCBmb250U2l6ZSA9IHZhbHVlc1snZm9udC1zaXplJ10gfHwgJzE0cHgnO1xuICAgIGNvbnN0IGxldHRlclNwYWNpbmcgPSB2YWx1ZXNbJ2xldHRlci1zcGFjaW5nJ10gfHwgJ25vcm1hbCc7XG4gICAgY29uc3QgcGFkZGluZyA9IHZhbHVlc1sncGFkZGluZyddIHx8ICc4cHgnO1xuICAgIGNvbnN0IHdpZHRoID0gdmFsdWVzWyd3aWR0aCddIHx8ICdhdXRvJztcbiAgICBjb25zdCBoZWlnaHQgPSB2YWx1ZXNbJ2hlaWdodCddIHx8ICdhdXRvJztcblxuICAgIGNvbnN0IGNzcyA9IGBcbiAgICB0YWJsZSBcbiAgICAge1xuICAgICAgYm9yZGVyLWNvbGxhcHNlOiAke2JvcmRlckNvbGxhcHNlfSAhaW1wb3J0YW50O1xuICAgICAgYm9yZGVyLXNwYWNpbmc6ICR7Ym9yZGVyU3BhY2luZ307ICAgXG4gICAgICBmb250LWZhbWlseTogJHtmb250RmFtaWx5fTtcbiAgICAgIGZvbnQtc2l6ZTogJHtmb250U2l6ZX07XG4gICAgfVxuICAgICAgdGFibGUgdGgge1xuICAgICAgaGVpZ2h0OiAke2hlaWdodH07XG4gICAgICB9XG4gICAgICB0YWJsZSB0ZHtoZWlnaHQ6ICR7aGVpZ2h0fTtcbiAgICAgIH1cbiAgICAudGFibGUtaGVhZCB0ciB0aHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7YmFja2dyb3VuZENvbG9yfSAhaW1wb3J0YW50O1xuICAgICAgd2lkdGg6ICR7d2lkdGh9ICFpbXBvcnRhbnQ7XG4gICAgICBib3JkZXItY29sbGFwc2U6ICR7Ym9yZGVyQ29sbGFwc2V9O1xuICAgICAgICBib3JkZXItc3BhY2luZzogJHtib3JkZXJTcGFjaW5nfTtcbiAgICAgICAgYm9yZGVyOiAke2JvcmRlcn0gc29saWQgJHtib3JkZXJDb2xvcn07IFxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogJHt2ZXJ0aWNhbEFsaWdufTtcbiAgICAgICAgZm9udC1mYW1pbHk6ICR7Zm9udEZhbWlseX07XG4gICAgICAgIGZvbnQtc2l6ZTogJHtmb250U2l6ZX07XG4gICAgICB9XG4gICAgLnRhYmxlLWhlYWQge1xuICAgICAgY29sb3I6ICR7dGV4dENvbG9yfTtcbiAgICAgIGJvcmRlcjogJHtib3JkZXJ9IHNvbGlkICR7Ym9yZGVyQ29sb3J9OyAgXG4gICAgICB0ZXh0LWFsaWduOiAke3RleHRBbGlnbn07ICAgICAgICAgICAgXG4gICAgICBsZXR0ZXItc3BhY2luZzogJHtsZXR0ZXJTcGFjaW5nfTtcbiAgICAgIHBhZGRpbmc6ICR7cGFkZGluZ307ICAgICAgXG4gICAgICBoZWlnaHQ6ICR7aGVpZ2h0fTtcbiAgICAgfVxuXG4gICAgYDtcbiAgICByZXR1cm4gY3NzO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRTcGVjaWZpY0Nzc0ZvclRhYmxlRGV0YWlsKFxuICAgIHZhbHVlczogeyBbcHJvcGVydHk6IHN0cmluZ106IHN0cmluZyB9XG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgYmFja2dyb3VuZENvbG9yID0gdmFsdWVzWydiYWNrZ3JvdW5kLWNvbG9yJ10gfHwgJyNmZmZmZmYnO1xuICAgIGNvbnN0IHRleHRDb2xvciA9IHZhbHVlc1snY29sb3InXSB8fCAnIzAwMDAwMCc7XG4gICAgY29uc3QgdGV4dEFsaWduID0gdmFsdWVzWyd0ZXh0LWFsaWduJ10gfHwgJ2xlZnQnO1xuICAgIGNvbnN0IHZlcnRpY2FsQWxpZ24gPSB2YWx1ZXNbJ3ZlcnRpY2FsQWxpZ24nXSB8fCAnbWlkZGxlJztcbiAgICBjb25zdCBsZXR0ZXJTcGFjaW5nID0gdmFsdWVzWydsZXR0ZXItc3BhY2luZyddIHx8ICdub3JtYWwnO1xuICAgIGNvbnN0IHBhZGRpbmcgPSB2YWx1ZXNbJ3BhZGRpbmcnXSB8fCAnOHB4JztcbiAgICBjb25zdCByb3dCb3JkZXIgPSB2YWx1ZXNbJ3Jvd2JvcmRlciddIHx8ICcxcHgnO1xuICAgIGNvbnN0IHJvd0JvcmRlckNvbG9yID0gdmFsdWVzWydyb3dib3JkZXItY29sb3InXSB8fCAnIzAwMDAwMCc7XG4gICAgY29uc3QgaG92ZXJCYWNrZ3JvdW5kQ29sb3IgPSB2YWx1ZXNbJ2hvdmVyLWJhY2tncm91bmQtY29sb3InXSB8fCAnI2YwZjBmMCc7XG5cbiAgICBjb25zdCBjc3MgPSBgICAgIFxuXG4gICAgICAudGFibGUtZGV0YWlse1xuICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7YmFja2dyb3VuZENvbG9yfVxuICAgICAgfVxuICAgICAgICAudGFibGUtZGV0YWlsIC5uZy1zdGFyLWluc2VydGVkIHtcbiAgICBib3JkZXItdG9wOiAke3Jvd0JvcmRlcn0gc29saWQgJHtyb3dCb3JkZXJDb2xvcn0gIWltcG9ydGFudDtcbiAgICBib3JkZXItYm90dG9tOiAke3Jvd0JvcmRlcn0gc29saWQgJHtyb3dCb3JkZXJDb2xvcn0gIWltcG9ydGFudDsgICAgXG4gICAgY29sb3I6ICR7dGV4dENvbG9yfSAhaW1wb3J0YW50O1xuICAgIHRleHQtYWxpZ246ICR7dGV4dEFsaWdufTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogJHt2ZXJ0aWNhbEFsaWdufTtcbiAgICBsZXR0ZXItc3BhY2luZzogJHtsZXR0ZXJTcGFjaW5nfTsgICAgXG4gIH1cbiAgXG5cbiAgLnRhYmxlLWRldGFpbCAubmctc3Rhci1pbnNlcnRlZDpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtob3ZlckJhY2tncm91bmRDb2xvcn0gIWltcG9ydGFudDtcbiAgICBcbiAgfVxuXG4gIC50YWJsZS1kZXRhaWwgdGQge1xuICAgIHBhZGRpbmc6ICR7cGFkZGluZ30gIWltcG9ydGFudDtcbiAgfVxuICAgICBcbiAgICBgO1xuXG4gICAgcmV0dXJuIGNzcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0U3BlY2lmaWNDc3NGb3JDaGVja0JveChcbiAgICBrZXk6IHN0cmluZyxcbiAgICB2YWx1ZXM6IHsgW3Byb3BlcnR5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICBjc3NSdWxlczogQ3NzUnVsZXNcbiAgKTogc3RyaW5nIHtcbiAgICBsZXQgbGFiZWxTcGVjaWZpY0NzcyA9ICcnO1xuICAgIGNvbnN0IGZvbnRTdHlsZUZvckxhYmVsVGV4dCA9IGNzc1J1bGVzWycuY29tcG9uZW50LWNoZWNrYm94LWxhYmVsJ107XG4gICAgaWYgKGZvbnRTdHlsZUZvckxhYmVsVGV4dCkge1xuICAgICAgbGFiZWxTcGVjaWZpY0NzcyA9IHRoaXMuc3R5bGVPYmplY3RUb1N0cmluZyhmb250U3R5bGVGb3JMYWJlbFRleHQpO1xuICAgIH1cblxuICAgIHZhciBjc3MgPSBgXG4gICAgLm1hdC1tZGMtdGV4dC1maWVsZC13cmFwcGVyLm1kYy1jaGVja2JveC1maWVsZCB7XG4gICAgICBtYXJnaW4tdG9wOiAke3ZhbHVlc1snbWFyZ2luLXRvcCddfTtcbiAgICAgIG1hcmdpbi1yaWdodDogJHt2YWx1ZXNbJ21hcmdpbi1yaWdodCddfTtcbiAgICAgIG1hcmdpbi1ib3R0b206ICR7dmFsdWVzWydtYXJnaW4tYm90dG9tJ119O1xuICAgICAgbWFyZ2luLWxlZnQ6ICR7dmFsdWVzWydtYXJnaW4tbGVmdCddfTtcbiAgICAgIC5tZGMtZm9ybS1maWVsZCA+IGxhYmVsIHtcbiAgICAgICAgJHtsYWJlbFNwZWNpZmljQ3NzfTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBwYWRkaW5nLXRvcDogMnB4O1xuICAgICAgfTtcbiAgICAgIC5tZGMtY2hlY2tib3gge1xuICAgICAgICB3aWR0aDogY2FsYygxOHB4ICsgKDIgKiAke3ZhbHVlc1snYm9yZGVyLXdpZHRoJ119KSk7XG4gICAgICAgIGhlaWdodDogY2FsYygxOHB4ICsgKDIgKiAke3ZhbHVlc1snYm9yZGVyLXdpZHRoJ119KSk7XG4gICAgICAgIGZsZXg6IDAgMCBjYWxjKDE4cHggKyAoMiAqICR7dmFsdWVzWydib3JkZXItd2lkdGgnXX0pKTtcbiAgICAgIH1cbiAgICAgIC5tZGMtY2hlY2tib3ggLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2wge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuICAgICAgLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dmFsdWVzWydiYWNrZ3JvdW5kLWNvbG9yJ119ICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlcjogJHt2YWx1ZXNbJ2JvcmRlci13aWR0aCddfSBzb2xpZCAke3ZhbHVlc1snYm9yZGVyLWNvbG9yJ119ICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICR7dmFsdWVzWydib3JkZXItcmFkaXVzJ119O1xuICAgICAgICB3aWR0aDogY2FsYygxOXB4ICsgKDIgKiAke3ZhbHVlc1snYm9yZGVyLXdpZHRoJ119KSk7XG4gICAgICAgIGhlaWdodDogY2FsYygxOXB4ICsgKDIgKiAke3ZhbHVlc1snYm9yZGVyLXdpZHRoJ119KSk7XG4gICAgICB9O1xuICAgIH1cbiAgICAubWRjLWNoZWNrYm94X19uYXRpdmUtY29udHJvbDplbmFibGVkOmNoZWNrZWR+Lm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCB7XG4gICAgICBib3JkZXI6ICR7dmFsdWVzWydib3JkZXItd2lkdGgnXX0gc29saWQgJHt2YWx1ZXNbJ2JvcmRlci1jb2xvciddfSAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAubWRjLWNoZWNrYm94X19jaGVja21hcmstcGF0aCB7XG4gICAgICBjb2xvcjogJHt2YWx1ZXNbJ2NvbG9yJ119ICFpbXBvcnRhbnQ7XG4gICAgfWA7XG4gICAgcmV0dXJuIGAke2tleX0geyAke2Nzc30gfWA7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXRTcGVjaWZpY0Nzc0ZvclN0ZXBMYWJlbChcbiAgICBrZXk6IHN0cmluZyxcbiAgICB2YWx1ZXM6IHsgW3Byb3BlcnR5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICBjc3NSdWxlczogQ3NzUnVsZXNcbiAgKSB7XG4gICAgY29uc3QgbGFiZWxTcGVjaWZpY0NzcyA9IHRoaXMuc3R5bGVPYmplY3RUb1N0cmluZyh2YWx1ZXMpO1xuXG4gICAgLy8gTWFwIEhlYWRpbmcgMSB0byBzdGVwIGxhYmVscyBpbiBzdGVwcGVyXG4gICAgY29uc3QgaGVhZGluZzFTdHlsZSA9IGNzc1J1bGVzWycuZm9udC1oZWFkaW5nLTEnXTtcbiAgICBjb25zdCBzdGVwTGFiZWxDc3MgPSBoZWFkaW5nMVN0eWxlXG4gICAgICA/IHRoaXMuc3R5bGVPYmplY3RUb1N0cmluZyhoZWFkaW5nMVN0eWxlKVxuICAgICAgOiAnJztcblxuICAgIC8vIE1hcCBIZWFkaW5nIDIgdG8gc2VjdGlvbiB0aXRsZXNcbiAgICBjb25zdCBoZWFkaW5nMlN0eWxlID0gY3NzUnVsZXNbJy5mb250LWhlYWRpbmctMiddO1xuICAgIGNvbnN0IHNlY3Rpb25UaXRsZUNzcyA9IGhlYWRpbmcyU3R5bGVcbiAgICAgID8gdGhpcy5zdHlsZU9iamVjdFRvU3RyaW5nKGhlYWRpbmcyU3R5bGUpXG4gICAgICA6ICcnO1xuXG4gICAgLy8gTWFwIEhlYWRpbmcgMyB0byBzdGVwIGRlc2NyaXB0aW9uc1xuICAgIGNvbnN0IGhlYWRpbmczU3R5bGUgPSBjc3NSdWxlc1snLmZvbnQtaGVhZGluZy0zJ107XG4gICAgY29uc3Qgc3RlcERlc2NyaXB0aW9uQ3NzID0gaGVhZGluZzNTdHlsZVxuICAgICAgPyB0aGlzLnN0eWxlT2JqZWN0VG9TdHJpbmcoaGVhZGluZzNTdHlsZSlcbiAgICAgIDogJyc7XG5cbiAgICByZXR1cm4gYCBcbiAgICAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLXdyYXBwZXIge1xuICAgICAgICAubWF0LXN0ZXAtdGV4dC1sYWJlbCB7XG4gICAgICAgICAgJHtzdGVwTGFiZWxDc3N9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgLm1hdC1zdGVwLWxhYmVsIHtcbiAgICAgICAgJHtzdGVwTGFiZWxDc3N9XG4gICAgICB9XG4gICAgICBcbiAgICAgIC5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZCB7XG4gICAgICAgICR7c3RlcExhYmVsQ3NzfVxuICAgICAgfVxuICAgICAgXG4gICAgICAuZm9ybS1zZWN0aW9uLXRpdGxlIGgyLFxuICAgICAgLnNlcGFyYXRvciBoMiB7XG4gICAgICAgICR7c2VjdGlvblRpdGxlQ3NzfVxuICAgICAgfVxuICAgICAgXG4gICAgICAuc3RlcC1kZXNjcmlwdGlvbixcbiAgICAgIC5tYXQtc3RlcC1zdWItbGFiZWwge1xuICAgICAgICAke3N0ZXBEZXNjcmlwdGlvbkNzc31cbiAgICAgIH1cbiAgICAgIFxuICAgICAgLm1hdC1zdGVwcGVyLWhvcml6b250YWwgLm1hdC1zdGVwLWxhYmVsLFxuICAgICAgLm1hdC1zdGVwcGVyLXZlcnRpY2FsIC5tYXQtc3RlcC1sYWJlbCB7XG4gICAgICAgICR7c3RlcExhYmVsQ3NzfVxuICAgICAgfVxuICAgICAgXG4gICAgICAuY29tcG9uZW50LXRleHQtZmllbGQgbWF0LWxhYmVsLFxuICAgICAgLmNvbXBvbmVudC1jaGVja2JveCBtYXQtbGFiZWwsXG4gICAgICAuY29tcG9uZW50LXJhZGlvIG1hdC1sYWJlbCxcbiAgICAgIC5jb21wb25lbnQtZGF0ZSBtYXQtbGFiZWwge1xuICAgICAgICAke2Nzc1J1bGVzWycuZm9udC1sYWJlbCddXG4gICAgICAgID8gdGhpcy5zdHlsZU9iamVjdFRvU3RyaW5nKGNzc1J1bGVzWycuZm9udC1sYWJlbCddKVxuICAgICAgICA6ICcnXG4gICAgICB9XG4gICAgICB9XG4gICAgYDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0U3BlY2lmaWNDc3NGb3JSYWRpbyhcbiAgICB2YWx1ZXM6IHsgW3Byb3BlcnR5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICBjc3NSdWxlczogQ3NzUnVsZXNcbiAgKSB7XG4gICAgbGV0IGxhYmVsU3BlY2lmaWNDc3MgPSAnJztcbiAgICBjb25zdCBmb250U3R5bGVGb3JMYWJlbFRleHQgPSBjc3NSdWxlc1snLmNvbXBvbmVudC1yYWRpby1sYWJlbCddO1xuICAgIGlmIChmb250U3R5bGVGb3JMYWJlbFRleHQpIHtcbiAgICAgIGxhYmVsU3BlY2lmaWNDc3MgPSB0aGlzLnN0eWxlT2JqZWN0VG9TdHJpbmcoZm9udFN0eWxlRm9yTGFiZWxUZXh0KTtcbiAgICB9XG5cbiAgICB2YXIgY3NzID0gYFxuICAgIC5tYXQtbWRjLXRleHQtZmllbGQtd3JhcHBlci5tZGMtcmFkaW9ib3gtZmllbGQge1xuICAgICAgbWFyZ2luLXRvcDogJHt2YWx1ZXNbJ21hcmdpbi10b3AnXX07XG4gICAgICBtYXJnaW4tcmlnaHQ6ICR7dmFsdWVzWydtYXJnaW4tcmlnaHQnXX07XG4gICAgICBtYXJnaW4tYm90dG9tOiAke3ZhbHVlc1snbWFyZ2luLWJvdHRvbSddfTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAke3ZhbHVlc1snbWFyZ2luLWxlZnQnXX07XG4gICAgICBsYWJlbCB7XG4gICAgICAgICR7bGFiZWxTcGVjaWZpY0Nzc307XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgcCB7XG4gICAgICAgICAgbWFyZ2luOiAwIDAgMTBweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLm1hdC1tZGMtcmFkaW8tYnV0dG9uIHtcbiAgICAgICAgLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2wge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgfVxuICAgICAgICAubWRjLXJhZGlvIHtcbiAgICAgICAgICB3aWR0aDogY2FsYygyMHB4ICsgKDIgKiAke3ZhbHVlc1snYm9yZGVyLXdpZHRoJ119KSk7XG4gICAgICAgICAgaGVpZ2h0OiBjYWxjKDIwcHggKyAoMiAqICR7dmFsdWVzWydib3JkZXItd2lkdGgnXX0pKTtcbiAgICAgICAgICAubWRjLXJhZGlvX19iYWNrZ3JvdW5kIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dmFsdWVzWydiYWNrZ3JvdW5kLWNvbG9yJ119ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBib3JkZXI6ICR7dmFsdWVzWydib3JkZXItd2lkdGgnXX0gc29saWQgJHt2YWx1ZXNbJ2JvcmRlci1jb2xvciddfSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgICAgd2lkdGg6IGNhbGMoMjBweCArICgyICogJHt2YWx1ZXNbJ2JvcmRlci13aWR0aCddfSkpO1xuICAgICAgICAgICAgaGVpZ2h0OiBjYWxjKDIwcHggKyAoMiAqICR7dmFsdWVzWydib3JkZXItd2lkdGgnXX0pKTtcbiAgICAgICAgICAgIC5tZGMtcmFkaW9fX291dGVyLWNpcmNsZSB7XG4gICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJHt2YWx1ZXNbJ2JhY2tncm91bmQtY29sb3InXX0gIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5tZGMtcmFkaW9fX2lubmVyLWNpcmNsZSB7XG4gICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJHt2YWx1ZXNbJ2NvbG9yJ119ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGA7XG5cbiAgICByZXR1cm4gY3NzO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRTcGVjaWZpY0Nzc0ZvckRhdGEoXG4gICAga2V5OiBzdHJpbmcsXG4gICAgdmFsdWVzOiB7IFtwcm9wZXJ0eTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgY3NzUnVsZXM6IENzc1J1bGVzXG4gICkge1xuICAgIGxldCBpbnB1dFNwZWNpZmljQ3NzID0gJyc7XG4gICAgY29uc3QgZm9udFN0eWxlRm9ySW5wdXRUZXh0ID0gY3NzUnVsZXNbJy5mb250LWxpc3QnXTtcbiAgICBpZiAoZm9udFN0eWxlRm9ySW5wdXRUZXh0KSB7XG4gICAgICAvL3RyYW5zZmVyIHByb3BlcnR5IGZyb20gY29tcG9uZW50IHRvIGlucHV0XG4gICAgICBpZiAodmFsdWVzWyd0ZXh0LWFsaWduJ10pIHtcbiAgICAgICAgZm9udFN0eWxlRm9ySW5wdXRUZXh0Wyd0ZXh0LWFsaWduJ10gPSB2YWx1ZXNbJ3RleHQtYWxpZ24nXTtcbiAgICAgIH1cbiAgICAgIGlucHV0U3BlY2lmaWNDc3MgPSB0aGlzLnN0eWxlT2JqZWN0VG9TdHJpbmcoZm9udFN0eWxlRm9ySW5wdXRUZXh0KTtcbiAgICB9XG5cbiAgICBsZXQgbGFiZWxTcGVjaWZpY0NzcyA9ICcnO1xuICAgIGNvbnN0IGZvbnRTdHlsZUZvckxhYmVsVGV4dCA9IGNzc1J1bGVzWycuY29tcG9uZW50LWRhdGEtbGFiZWwnXTtcbiAgICBpZiAoZm9udFN0eWxlRm9yTGFiZWxUZXh0KSB7XG4gICAgICBsYWJlbFNwZWNpZmljQ3NzID0gdGhpcy5zdHlsZU9iamVjdFRvU3RyaW5nKGZvbnRTdHlsZUZvckxhYmVsVGV4dCk7XG4gICAgfVxuICAgIHJldHVybiBgICR7a2V5fSB7IC5tYXQtbWRjLXRleHQtZmllbGQtd3JhcHBlci5tZGMtdGV4dC1maWVsZCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICR7dGhpcy5zdHlsZU9iamVjdFRvU3RyaW5nKHZhbHVlcyl9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItc3R5bGU6c29saWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aW5wdXRTcGVjaWZpY0Nzc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXQtbWRjLWZvcm0tZmllbGQtaW5maXgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hdC1tZGMtZm9ybS1maWVsZC1pbnB1dC1jb250cm9sOjpwbGFjZWhvbGRlcntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsYWJlbFNwZWNpZmljQ3NzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHN0eWxlT2JqZWN0VG9TdHJpbmcoXG4gICAgdmFsdWVzOiB7IFtwcm9wZXJ0eTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgaW1wb3J0YW50OiBib29sZWFuID0gZmFsc2VcbiAgKTogc3RyaW5nIHtcbiAgICB2YWx1ZXNbJ3dpZHRoJ10gPVxuICAgICAgJ2NhbGMoMTAwJScgK1xuICAgICAgKCdtYXJnaW4tbGVmdCcgaW4gdmFsdWVzID8gYCAtICR7dmFsdWVzWydtYXJnaW4tbGVmdCddfWAgOiAnJykgK1xuICAgICAgKCdtYXJnaW4tcmlnaHQnIGluIHZhbHVlcyA/IGAgLSAke3ZhbHVlc1snbWFyZ2luLXJpZ2h0J119YCA6ICcnKSArXG4gICAgICAnKSc7XG5cbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModmFsdWVzKVxuICAgICAgLm1hcChcbiAgICAgICAgKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fTogJHt2YWx1ZX0ke2ltcG9ydGFudCA/ICcgIWltcG9ydGFudCcgOiAnJ31gXG4gICAgICApXG4gICAgICAuam9pbignOyAnKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Component } from "@angular/core";
|
|
2
|
+
import { FieldType } from "@ngx-formly/core";
|
|
3
|
+
import { Utils } from "../others/utils";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class BaseFormlyControlComponent extends FieldType {
|
|
6
|
+
onInit() { }
|
|
7
|
+
onPageSelected() { }
|
|
8
|
+
async onPageSelectedAsync() { }
|
|
9
|
+
canAdvance() {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
constructor(cdr) {
|
|
13
|
+
super();
|
|
14
|
+
this.cdr = cdr;
|
|
15
|
+
}
|
|
16
|
+
async ngOnInit() {
|
|
17
|
+
this.props['cdr'] = this.cdr;
|
|
18
|
+
this.props['component'] = this;
|
|
19
|
+
this.env = this.props['env'];
|
|
20
|
+
this.langIso = this.props['langIso'];
|
|
21
|
+
this.controlData = this.props['controlData'];
|
|
22
|
+
this.isDisplayMode = this.props['isDisplayMode'];
|
|
23
|
+
this.appDataId = this.props['appDataId'];
|
|
24
|
+
this.appId = this.props['appId'];
|
|
25
|
+
this.title = this.props['label'];
|
|
26
|
+
this.dataUrlId = this.props['dataUrlId'];
|
|
27
|
+
this.onInit();
|
|
28
|
+
}
|
|
29
|
+
getErrorTranslationMessage(errorCode, ...params) {
|
|
30
|
+
const translation = Utils.findErrorTranslationLabel(this.controlData.errorsTranslations, this.langIso, errorCode);
|
|
31
|
+
let errorMessage = 'An error has occured';
|
|
32
|
+
if (translation && translation.value) {
|
|
33
|
+
errorMessage = translation.value;
|
|
34
|
+
if (params) {
|
|
35
|
+
for (let i = 0; i < params.length; i++) {
|
|
36
|
+
errorMessage = errorMessage.replace('{' + i + '}', params[i]);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return errorMessage;
|
|
41
|
+
}
|
|
42
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseFormlyControlComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
43
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BaseFormlyControlComponent, selector: "base-formly-component", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
44
|
+
}
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseFormlyControlComponent, decorators: [{
|
|
46
|
+
type: Component,
|
|
47
|
+
args: [{
|
|
48
|
+
selector: 'base-formly-component',
|
|
49
|
+
template: '',
|
|
50
|
+
}]
|
|
51
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZUZvcm1seUNvbnRyb2xDb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL2Zvcm1seS9iYXNlRm9ybWx5Q29udHJvbENvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQU94QyxNQUFNLE9BQWdCLDBCQUEyQixTQUFRLFNBQVM7SUFXaEUsTUFBTSxLQUFJLENBQUM7SUFDWCxjQUFjLEtBQUksQ0FBQztJQUNuQixLQUFLLENBQUMsbUJBQW1CLEtBQUksQ0FBQztJQUM5QixVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsWUFBbUIsR0FBc0I7UUFDdkMsS0FBSyxFQUFFLENBQUM7UUFEUyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtJQUV6QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQVcsQ0FBQztRQUMvQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELDBCQUEwQixDQUFDLFNBQWlCLEVBQUUsR0FBRyxNQUFnQjtRQUMvRCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMseUJBQXlCLENBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLEVBQ25DLElBQUksQ0FBQyxPQUFPLEVBQ1osU0FBUyxDQUNWLENBQUM7UUFDRixJQUFJLFlBQVksR0FBRyxzQkFBc0IsQ0FBQztRQUMxQyxJQUFJLFdBQVcsSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckMsWUFBWSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDakMsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUN2QyxZQUFZLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEUsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQzsrR0FwRG1CLDBCQUEwQjttR0FBMUIsMEJBQTBCLG9GQUZwQyxFQUFFOzs0RkFFUSwwQkFBMEI7a0JBSi9DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsUUFBUSxFQUFFLEVBQUU7aUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSBcIkBuZ3gtZm9ybWx5L2NvcmVcIjtcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSBcIi4uL290aGVycy91dGlsc1wiO1xuaW1wb3J0IHsgQ29udHJvbERhdGEgfSBmcm9tIFwiLi4vbW9kZWxzL2ZsdXgubW9kZWxcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYmFzZS1mb3JtbHktY29tcG9uZW50JyxcbiAgdGVtcGxhdGU6ICcnLFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRm9ybWx5Q29udHJvbENvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGxhbmdJc286IHN0cmluZztcbiAgY29udHJvbERhdGE6IENvbnRyb2xEYXRhO1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIGlzRGlzcGxheU1vZGU6IGJvb2xlYW47XG4gIGVudjogc3RyaW5nO1xuICBhcHBEYXRhSWQ6IHN0cmluZztcbiAgZGF0YVVybElkOiBzdHJpbmc7XG4gIGFwcElkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgb25Jbml0KCkge31cbiAgb25QYWdlU2VsZWN0ZWQoKSB7fVxuICBhc3luYyBvblBhZ2VTZWxlY3RlZEFzeW5jKCkge31cbiAgY2FuQWR2YW5jZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMucHJvcHNbJ2NkciddID0gdGhpcy5jZHI7XG4gICAgdGhpcy5wcm9wc1snY29tcG9uZW50J10gPSB0aGlzO1xuICAgIHRoaXMuZW52ID0gdGhpcy5wcm9wc1snZW52J107XG4gICAgdGhpcy5sYW5nSXNvID0gdGhpcy5wcm9wc1snbGFuZ0lzbyddIGFzIHN0cmluZztcbiAgICB0aGlzLmNvbnRyb2xEYXRhID0gdGhpcy5wcm9wc1snY29udHJvbERhdGEnXTtcbiAgICB0aGlzLmlzRGlzcGxheU1vZGUgPSB0aGlzLnByb3BzWydpc0Rpc3BsYXlNb2RlJ107XG4gICAgdGhpcy5hcHBEYXRhSWQgPSB0aGlzLnByb3BzWydhcHBEYXRhSWQnXTtcbiAgICB0aGlzLmFwcElkID0gdGhpcy5wcm9wc1snYXBwSWQnXTtcbiAgICB0aGlzLnRpdGxlID0gdGhpcy5wcm9wc1snbGFiZWwnXTtcbiAgICB0aGlzLmRhdGFVcmxJZCA9IHRoaXMucHJvcHNbJ2RhdGFVcmxJZCddO1xuICAgIHRoaXMub25Jbml0KCk7XG4gIH1cblxuICBnZXRFcnJvclRyYW5zbGF0aW9uTWVzc2FnZShlcnJvckNvZGU6IHN0cmluZywgLi4ucGFyYW1zOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gVXRpbHMuZmluZEVycm9yVHJhbnNsYXRpb25MYWJlbChcbiAgICAgIHRoaXMuY29udHJvbERhdGEuZXJyb3JzVHJhbnNsYXRpb25zLFxuICAgICAgdGhpcy5sYW5nSXNvLFxuICAgICAgZXJyb3JDb2RlXG4gICAgKTtcbiAgICBsZXQgZXJyb3JNZXNzYWdlID0gJ0FuIGVycm9yIGhhcyBvY2N1cmVkJztcbiAgICBpZiAodHJhbnNsYXRpb24gJiYgdHJhbnNsYXRpb24udmFsdWUpIHtcbiAgICAgIGVycm9yTWVzc2FnZSA9IHRyYW5zbGF0aW9uLnZhbHVlO1xuICAgICAgaWYgKHBhcmFtcykge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZS5yZXBsYWNlKCd7JyArIGkgKyAnfScsIHBhcmFtc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVycm9yTWVzc2FnZTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { FieldType } from '@ngx-formly/core';
|
|
3
|
+
import { Utils } from '../others/utils';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class BaseFormlyStepComponent extends FieldType {
|
|
6
|
+
onInit() { }
|
|
7
|
+
onPageSelected() { }
|
|
8
|
+
async onPageSelectedAsync() { }
|
|
9
|
+
canAdvance() {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
constructor(cdr) {
|
|
13
|
+
super();
|
|
14
|
+
this.cdr = cdr;
|
|
15
|
+
}
|
|
16
|
+
async ngOnInit() {
|
|
17
|
+
this.props['cdr'] = this.cdr;
|
|
18
|
+
this.props['component'] = this;
|
|
19
|
+
this.env = this.props['env'];
|
|
20
|
+
this.langIso = this.props['langIso'];
|
|
21
|
+
this.stepData = this.props['stepData'];
|
|
22
|
+
this.controlData = this.props['controlData'];
|
|
23
|
+
this.isDisplayMode = this.props['isDisplayMode'];
|
|
24
|
+
this.appDataId = this.props['appDataId'];
|
|
25
|
+
this.appId = this.props['appId'];
|
|
26
|
+
this.stepsSettings = this.props['stepsSettings'];
|
|
27
|
+
this.title = this.props['label'];
|
|
28
|
+
this.dataUrlId = this.props['dataUrlId'];
|
|
29
|
+
this.onInit();
|
|
30
|
+
}
|
|
31
|
+
onEvent(data) {
|
|
32
|
+
if (this.props['event']) {
|
|
33
|
+
this.props['event'](data);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
getErrorTranslationMessage(errorCode, ...params) {
|
|
37
|
+
const translation = Utils.findErrorTranslationLabel(this.stepData.errorsTranslations, this.langIso, errorCode);
|
|
38
|
+
let errorMessage = 'An error has occured';
|
|
39
|
+
if (translation && translation.value) {
|
|
40
|
+
errorMessage = translation.value;
|
|
41
|
+
if (params) {
|
|
42
|
+
for (let i = 0; i < params.length; i++) {
|
|
43
|
+
errorMessage = errorMessage.replace('{' + i + '}', params[i]);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return errorMessage;
|
|
48
|
+
}
|
|
49
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseFormlyStepComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
50
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BaseFormlyStepComponent, selector: "base-formly-component", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
51
|
+
}
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseFormlyStepComponent, decorators: [{
|
|
53
|
+
type: Component,
|
|
54
|
+
args: [{
|
|
55
|
+
selector: 'base-formly-component',
|
|
56
|
+
template: '',
|
|
57
|
+
}]
|
|
58
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZUZvcm1seVN0ZXBDb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL2Zvcm1seS9iYXNlRm9ybWx5U3RlcENvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFN0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQU94QyxNQUFNLE9BQWdCLHVCQUF3QixTQUFRLFNBQVM7SUFhN0QsTUFBTSxLQUFLLENBQUM7SUFDWixjQUFjLEtBQUssQ0FBQztJQUNwQixLQUFLLENBQUMsbUJBQW1CLEtBQUssQ0FBQztJQUMvQixVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsWUFBbUIsR0FBc0I7UUFDdkMsS0FBSyxFQUFFLENBQUM7UUFEUyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtJQUV6QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQVcsQ0FBQztRQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUVoQixDQUFDO0lBRUQsT0FBTyxDQUFDLElBQVM7UUFDZixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsMEJBQTBCLENBQUMsU0FBaUIsRUFBRSxHQUFHLE1BQWdCO1FBQy9ELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyx5QkFBeUIsQ0FDakQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFDaEMsSUFBSSxDQUFDLE9BQU8sRUFDWixTQUFTLENBQ1YsQ0FBQztRQUNGLElBQUksWUFBWSxHQUFHLHNCQUFzQixDQUFDO1FBQzFDLElBQUksV0FBVyxJQUFJLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQyxZQUFZLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNqQyxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQ3ZDLFlBQVksR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNoRSxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDOytHQS9EbUIsdUJBQXVCO21HQUF2Qix1QkFBdUIsb0ZBRmpDLEVBQUU7OzRGQUVRLHVCQUF1QjtrQkFKNUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUUsRUFBRTtpQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBTdGVwc1NldHRpbmdzIH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm1zLm1vZGVsJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vb3RoZXJzL3V0aWxzJztcbmltcG9ydCB7IENvbnRyb2xEYXRhLCBTdGVwRGF0YSB9IGZyb20gJy4uL21vZGVscy9mbHV4Lm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYmFzZS1mb3JtbHktY29tcG9uZW50JyxcbiAgdGVtcGxhdGU6ICcnLFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRm9ybWx5U3RlcENvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGxhbmdJc286IHN0cmluZztcbiAgc3RlcERhdGE6IFN0ZXBEYXRhO1xuICBjb250cm9sRGF0YTogQ29udHJvbERhdGE7XG4gIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgaXNEaXNwbGF5TW9kZTogYm9vbGVhbjtcbiAgZW52OiBzdHJpbmc7XG4gIGFwcERhdGFJZDogc3RyaW5nO1xuICBkYXRhVXJsSWQ6IHN0cmluZztcbiAgYXBwSWQ6IHN0cmluZztcbiAgc3RlcHNTZXR0aW5nczogU3RlcHNTZXR0aW5ncztcbiAgdGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBvbkluaXQoKSB7IH1cbiAgb25QYWdlU2VsZWN0ZWQoKSB7IH1cbiAgYXN5bmMgb25QYWdlU2VsZWN0ZWRBc3luYygpIHsgfVxuICBjYW5BZHZhbmNlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wcm9wc1snY2RyJ10gPSB0aGlzLmNkcjtcbiAgICB0aGlzLnByb3BzWydjb21wb25lbnQnXSA9IHRoaXM7XG4gICAgdGhpcy5lbnYgPSB0aGlzLnByb3BzWydlbnYnXTtcbiAgICB0aGlzLmxhbmdJc28gPSB0aGlzLnByb3BzWydsYW5nSXNvJ10gYXMgc3RyaW5nO1xuICAgIHRoaXMuc3RlcERhdGEgPSB0aGlzLnByb3BzWydzdGVwRGF0YSddO1xuICAgIHRoaXMuY29udHJvbERhdGEgPSB0aGlzLnByb3BzWydjb250cm9sRGF0YSddO1xuICAgIHRoaXMuaXNEaXNwbGF5TW9kZSA9IHRoaXMucHJvcHNbJ2lzRGlzcGxheU1vZGUnXTtcbiAgICB0aGlzLmFwcERhdGFJZCA9IHRoaXMucHJvcHNbJ2FwcERhdGFJZCddO1xuICAgIHRoaXMuYXBwSWQgPSB0aGlzLnByb3BzWydhcHBJZCddO1xuICAgIHRoaXMuc3RlcHNTZXR0aW5ncyA9IHRoaXMucHJvcHNbJ3N0ZXBzU2V0dGluZ3MnXTtcbiAgICB0aGlzLnRpdGxlID0gdGhpcy5wcm9wc1snbGFiZWwnXTtcbiAgICB0aGlzLmRhdGFVcmxJZCA9IHRoaXMucHJvcHNbJ2RhdGFVcmxJZCddO1xuICAgIHRoaXMub25Jbml0KCk7XG5cbiAgfVxuXG4gIG9uRXZlbnQoZGF0YTogYW55KSB7XG4gICAgaWYgKHRoaXMucHJvcHNbJ2V2ZW50J10pIHtcbiAgICAgIHRoaXMucHJvcHNbJ2V2ZW50J10oZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RXJyb3JUcmFuc2xhdGlvbk1lc3NhZ2UoZXJyb3JDb2RlOiBzdHJpbmcsIC4uLnBhcmFtczogc3RyaW5nW10pIHtcbiAgICBjb25zdCB0cmFuc2xhdGlvbiA9IFV0aWxzLmZpbmRFcnJvclRyYW5zbGF0aW9uTGFiZWwoXG4gICAgICB0aGlzLnN0ZXBEYXRhLmVycm9yc1RyYW5zbGF0aW9ucyxcbiAgICAgIHRoaXMubGFuZ0lzbyxcbiAgICAgIGVycm9yQ29kZVxuICAgICk7XG4gICAgbGV0IGVycm9yTWVzc2FnZSA9ICdBbiBlcnJvciBoYXMgb2NjdXJlZCc7XG4gICAgaWYgKHRyYW5zbGF0aW9uICYmIHRyYW5zbGF0aW9uLnZhbHVlKSB7XG4gICAgICBlcnJvck1lc3NhZ2UgPSB0cmFuc2xhdGlvbi52YWx1ZTtcbiAgICAgIGlmIChwYXJhbXMpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJhbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UucmVwbGFjZSgneycgKyBpICsgJ30nLCBwYXJhbXNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlcnJvck1lc3NhZ2U7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { FieldType } from '@ngx-formly/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "@ngx-formly/core";
|
|
6
|
+
export class CustomSectionComponent extends FieldType {
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CustomSectionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
8
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CustomSectionComponent, selector: "formly-custom-section", usesInheritance: true, ngImport: i0, template: `
|
|
9
|
+
<div class="custom-section">
|
|
10
|
+
<ng-container *ngFor="let field of field.fieldGroup">
|
|
11
|
+
<formly-field
|
|
12
|
+
[field]="field"
|
|
13
|
+
[ngClass]="field.className"
|
|
14
|
+
></formly-field>
|
|
15
|
+
</ng-container>
|
|
16
|
+
</div>
|
|
17
|
+
`, isInline: true, styles: [".custom-section{display:grid;gap:5px;margin-bottom:5px;grid-template-columns:repeat(12,1fr)}.full-width{grid-column:span 12}.half-width{grid-column:span 6}.quarter-width{grid-column:span 3}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.FormlyField, selector: "formly-field", inputs: ["field"] }] }); }
|
|
18
|
+
}
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CustomSectionComponent, decorators: [{
|
|
20
|
+
type: Component,
|
|
21
|
+
args: [{ selector: 'formly-custom-section', template: `
|
|
22
|
+
<div class="custom-section">
|
|
23
|
+
<ng-container *ngFor="let field of field.fieldGroup">
|
|
24
|
+
<formly-field
|
|
25
|
+
[field]="field"
|
|
26
|
+
[ngClass]="field.className"
|
|
27
|
+
></formly-field>
|
|
28
|
+
</ng-container>
|
|
29
|
+
</div>
|
|
30
|
+
`, styles: [".custom-section{display:grid;gap:5px;margin-bottom:5px;grid-template-columns:repeat(12,1fr)}.full-width{grid-column:span 12}.half-width{grid-column:span 6}.quarter-width{grid-column:span 3}\n"] }]
|
|
31
|
+
}] });
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXNlY3Rpb24tc2VwYXJhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29yaWdpbi1mb3JtL3NyYy9saWIvZm9ybWx5L2N1c3RvbS1zZWN0aW9uLXNlcGFyYXRvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFrQzdDLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxTQUFTOytHQUF4QyxzQkFBc0I7bUdBQXRCLHNCQUFzQixvRkE5QnZCOzs7Ozs7Ozs7R0FTVDs7NEZBcUJVLHNCQUFzQjtrQkFoQ2xDLFNBQVM7K0JBQ0UsdUJBQXVCLFlBQ3ZCOzs7Ozs7Ozs7R0FTVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Zvcm1seS1jdXN0b20tc2VjdGlvbicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbS1zZWN0aW9uXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBmaWVsZC5maWVsZEdyb3VwXCI+XG4gICAgICAgIDxmb3JtbHktZmllbGRcbiAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImZpZWxkLmNsYXNzTmFtZVwiXG4gICAgICAgID48L2Zvcm1seS1maWVsZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAuY3VzdG9tLXNlY3Rpb24ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDVweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMiwgMWZyKTtcbiAgICAgIH1cbiAgICAgIC5mdWxsLXdpZHRoIHtcbiAgICAgICAgZ3JpZC1jb2x1bW46IHNwYW4gMTI7XG4gICAgICB9XG4gICAgICAuaGFsZi13aWR0aCB7XG4gICAgICAgIGdyaWQtY29sdW1uOiBzcGFuIDY7XG4gICAgICB9XG4gICAgICAucXVhcnRlci13aWR0aCB7XG4gICAgICAgIGdyaWQtY29sdW1uOiBzcGFuIDM7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tU2VjdGlvbkNvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZSB7fSJdfQ==
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { FieldType } from '@ngx-formly/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
export class FormSectionSeparatorComponent extends FieldType {
|
|
6
|
+
ngOnInit() {
|
|
7
|
+
if (this.props['design']) {
|
|
8
|
+
this.heading2Style = this.props['design']['.font-heading-2'];
|
|
9
|
+
const separatorStyle = this.props['design']['.separator-section'];
|
|
10
|
+
if (separatorStyle && separatorStyle['height'] !== '0px') {
|
|
11
|
+
this.separatorStyle = separatorStyle;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormSectionSeparatorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
16
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormSectionSeparatorComponent, selector: "form-section-separator", usesInheritance: true, ngImport: i0, template: `
|
|
17
|
+
<div class="separator" style="margin: 2% ;">
|
|
18
|
+
<h2 *ngIf="to && to['title']" [ngStyle]="heading2Style">
|
|
19
|
+
{{ to['title'] }}
|
|
20
|
+
</h2>
|
|
21
|
+
<hr *ngIf="to && to['showSeparator']" [ngStyle]="separatorStyle" />
|
|
22
|
+
</div>
|
|
23
|
+
`, isInline: true, styles: [".separator{margin:2% 0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
|
|
24
|
+
}
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormSectionSeparatorComponent, decorators: [{
|
|
26
|
+
type: Component,
|
|
27
|
+
args: [{ selector: 'form-section-separator', template: `
|
|
28
|
+
<div class="separator" style="margin: 2% ;">
|
|
29
|
+
<h2 *ngIf="to && to['title']" [ngStyle]="heading2Style">
|
|
30
|
+
{{ to['title'] }}
|
|
31
|
+
</h2>
|
|
32
|
+
<hr *ngIf="to && to['showSeparator']" [ngStyle]="separatorStyle" />
|
|
33
|
+
</div>
|
|
34
|
+
`, styles: [".separator{margin:2% 0}\n"] }]
|
|
35
|
+
}] });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWN0aW9uLXNlcGFyYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL2Zvcm1seS9mb3JtLXNlY3Rpb24tc2VwYXJhdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBb0I3QyxNQUFNLE9BQU8sNkJBQThCLFNBQVEsU0FBUztJQUkxRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDN0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ2xFLElBQUksY0FBYyxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDekQsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7WUFDdkMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOytHQVpVLDZCQUE2QjttR0FBN0IsNkJBQTZCLHFGQWhCOUI7Ozs7Ozs7R0FPVDs7NEZBU1UsNkJBQTZCO2tCQWxCekMsU0FBUzsrQkFDRSx3QkFBd0IsWUFDeEI7Ozs7Ozs7R0FPVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm9ybS1zZWN0aW9uLXNlcGFyYXRvcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInNlcGFyYXRvclwiIHN0eWxlPVwibWFyZ2luOiAyJSA7XCI+XG4gICAgICA8aDIgKm5nSWY9XCJ0byAmJiB0b1sndGl0bGUnXVwiIFtuZ1N0eWxlXT1cImhlYWRpbmcyU3R5bGVcIj5cbiAgICAgICAge3sgdG9bJ3RpdGxlJ10gfX1cbiAgICAgIDwvaDI+XG4gICAgICA8aHIgKm5nSWY9XCJ0byAmJiB0b1snc2hvd1NlcGFyYXRvciddXCIgW25nU3R5bGVdPVwic2VwYXJhdG9yU3R5bGVcIiAvPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAuc2VwYXJhdG9yIHtcbiAgICAgICAgbWFyZ2luOiAyJSAwO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1TZWN0aW9uU2VwYXJhdG9yQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgaGVhZGluZzJTdHlsZTogW3Byb3A6IHN0cmluZ107XG4gIHNlcGFyYXRvclN0eWxlOiBbcHJvcDogc3RyaW5nXTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wc1snZGVzaWduJ10pIHtcbiAgICAgIHRoaXMuaGVhZGluZzJTdHlsZSA9IHRoaXMucHJvcHNbJ2Rlc2lnbiddWycuZm9udC1oZWFkaW5nLTInXTtcbiAgICAgIGNvbnN0IHNlcGFyYXRvclN0eWxlID0gdGhpcy5wcm9wc1snZGVzaWduJ11bJy5zZXBhcmF0b3Itc2VjdGlvbiddO1xuICAgICAgaWYgKHNlcGFyYXRvclN0eWxlICYmIHNlcGFyYXRvclN0eWxlWydoZWlnaHQnXSAhPT0gJzBweCcpIHtcbiAgICAgICAgdGhpcy5zZXBhcmF0b3JTdHlsZSA9IHNlcGFyYXRvclN0eWxlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|