@muraai/mnl-form 0.0.1-alpha-28c23a4 → 0.0.1-alpha-db495b1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/README.md +5 -5
  2. package/esm2022/lib/confirmation-dialog/confirmation-dialog.component.mjs +1 -1
  3. package/esm2022/lib/mnl-form/mnl-form-standalone.module.mjs +155 -0
  4. package/esm2022/lib/mnl-form/mnl-form.component.mjs +199 -0
  5. package/esm2022/lib/models/custom-form-field.model.mjs +1 -1
  6. package/esm2022/lib/models/workflow-status.model.mjs +1 -1
  7. package/esm2022/lib/services/graphql.service.mjs +1 -1
  8. package/esm2022/lib/services/scoring.service.mjs +1 -1
  9. package/esm2022/lib/types/action-button-renderer.component.mjs +1 -1
  10. package/esm2022/lib/types/autocomplete-type.component.mjs +1 -1
  11. package/esm2022/lib/types/button.type.mjs +1 -1
  12. package/esm2022/lib/types/comments.type.mjs +1 -1
  13. package/esm2022/lib/types/country-code-input.type.mjs +1 -1
  14. package/esm2022/lib/types/custom-date.type.mjs +1 -1
  15. package/esm2022/lib/types/custom-input.component.mjs +1 -1
  16. package/esm2022/lib/types/date-format.type.mjs +1 -1
  17. package/esm2022/lib/types/expansion-panel.types.mjs +1 -1
  18. package/esm2022/lib/types/formly-field-panel.type.mjs +1 -1
  19. package/esm2022/lib/types/grid-actionable.type.mjs +1 -1
  20. package/esm2022/lib/types/grid-formly-cell.component.mjs +1 -1
  21. package/esm2022/lib/types/grid.type.mjs +1 -1
  22. package/esm2022/lib/types/input.type.mjs +1 -1
  23. package/esm2022/lib/types/mu-helper-text.type.mjs +3 -3
  24. package/esm2022/lib/types/multi-select-autocomplete.mjs +1 -1
  25. package/esm2022/lib/types/multi-select-checkbox.component.mjs +1 -1
  26. package/esm2022/lib/types/radio.type.mjs +1 -1
  27. package/esm2022/lib/types/scrollable-tabs.types.mjs +1 -1
  28. package/esm2022/lib/types/select-api-auto-complete.component.mjs +1 -1
  29. package/esm2022/lib/types/select-autocomplete-redefined.component.mjs +1 -1
  30. package/esm2022/lib/types/select-autocomplete.type.mjs +1 -1
  31. package/esm2022/lib/types/stepper.type.mjs +1 -1
  32. package/esm2022/lib/types/table.types.mjs +1 -1
  33. package/esm2022/lib/types/tabs.types.mjs +1 -1
  34. package/esm2022/lib/types/tabular-form-dialog.component.mjs +1 -1
  35. package/esm2022/lib/types/tabular-form.type.mjs +1 -1
  36. package/esm2022/lib/types/upload-file.mjs +1 -1
  37. package/esm2022/lib/types/view-file-dialog.component.mjs +1 -1
  38. package/esm2022/lib/utils/formly.utils.mjs +1 -1
  39. package/esm2022/lib/validators/custom-email-validator.mjs +1 -1
  40. package/esm2022/lib/validators/ein-validators.mjs +1 -1
  41. package/esm2022/lib/validators/gst-validator.mjs +1 -1
  42. package/esm2022/lib/validators/normal-email-validator.mjs +1 -1
  43. package/esm2022/lib/validators/npi-validator.mjs +1 -1
  44. package/esm2022/lib/validators/pan-validator.mjs +1 -1
  45. package/esm2022/lib/validators/phone-number-validator.mjs +1 -1
  46. package/esm2022/lib/validators/select-validator.mjs +1 -1
  47. package/esm2022/lib/validators/tinSsn-validator.mjs +1 -1
  48. package/esm2022/lib/workflow-status/ workflow-status.module.mjs +1 -1
  49. package/esm2022/lib/workflow-status/workflow-status.component.mjs +1 -1
  50. package/esm2022/lib/wrappers/form-field-description-wrapper.component.mjs +1 -1
  51. package/esm2022/lib/wrappers/form-field-wrapper.component.mjs +1 -1
  52. package/esm2022/lib/wrappers/formly-wrapper-with-old-value.component.mjs +1 -1
  53. package/esm2022/lib/wrappers/prefix-suffix-wrapper.component.mjs +1 -1
  54. package/esm2022/lib/wrappers/prefix-sufix-extension.component.mjs +1 -1
  55. package/esm2022/muraai-mnl-form.mjs +1 -1
  56. package/esm2022/public-api.mjs +3 -3
  57. package/fesm2022/muraai-mnl-form.mjs +7 -7
  58. package/fesm2022/muraai-mnl-form.mjs.map +1 -1
  59. package/lib/{formly-lib/formly-lib.component.d.ts → mnl-form/mnl-form.component.d.ts} +3 -3
  60. package/package.json +1 -1
  61. package/public-api.d.ts +2 -2
  62. package/esm2022/lib/formly-lib/formly-lib.component.mjs +0 -199
  63. package/esm2022/lib/formly-lib/formly-standalone.module.mjs +0 -155
  64. /package/lib/{formly-lib/formly-standalone.module.d.ts → mnl-form/mnl-form-standalone.module.d.ts} +0 -0
@@ -5,7 +5,7 @@ import { TranslateService } from '@ngx-translate/core';
5
5
  import { CustomFormlyFieldConfig } from '../models/custom-form-field.model';
6
6
  import { ScoringService } from '../services/scoring.service';
7
7
  import * as i0 from "@angular/core";
8
- export declare class MnlFormLibComponent implements OnInit {
8
+ export declare class MnlFormComponent implements OnInit {
9
9
  private translateService;
10
10
  private scoring;
11
11
  readonly: boolean;
@@ -33,6 +33,6 @@ export declare class MnlFormLibComponent implements OnInit {
33
33
  applyReadonlyToFields(fields: CustomFormlyFieldConfig[]): CustomFormlyFieldConfig[];
34
34
  filterFieldGroupsByRolesAndCountries(fields: CustomFormlyFieldConfig[]): any[];
35
35
  removeValidationsForFilteredFields(fields: any): void;
36
- static ɵfac: i0.ɵɵFactoryDeclaration<MnlFormLibComponent, never>;
37
- static ɵcmp: i0.ɵɵComponentDeclaration<MnlFormLibComponent, "mnl-form", never, { "readonly": { "alias": "readonly"; "required": false; }; "form": { "alias": "form"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; "model": { "alias": "model"; "required": false; }; "helperModel": { "alias": "helperModel"; "required": false; }; "options": { "alias": "options"; "required": false; }; "userRoles": { "alias": "userRoles"; "required": false; }; "userCountries": { "alias": "userCountries"; "required": false; }; "oldValues": { "alias": "oldValues"; "required": false; }; "showOldValues": { "alias": "showOldValues"; "required": false; }; }, { "noOfTabs": "noOfTabs"; "scoreChange": "scoreChange"; "helperModelChange": "helperModelChange"; }, never, never, true, never>;
36
+ static ɵfac: i0.ɵɵFactoryDeclaration<MnlFormComponent, never>;
37
+ static ɵcmp: i0.ɵɵComponentDeclaration<MnlFormComponent, "mnl-form", never, { "readonly": { "alias": "readonly"; "required": false; }; "form": { "alias": "form"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; "model": { "alias": "model"; "required": false; }; "helperModel": { "alias": "helperModel"; "required": false; }; "options": { "alias": "options"; "required": false; }; "userRoles": { "alias": "userRoles"; "required": false; }; "userCountries": { "alias": "userCountries"; "required": false; }; "oldValues": { "alias": "oldValues"; "required": false; }; "showOldValues": { "alias": "showOldValues"; "required": false; }; }, { "noOfTabs": "noOfTabs"; "scoreChange": "scoreChange"; "helperModelChange": "helperModelChange"; }, never, never, true, never>;
38
38
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@muraai/mnl-form",
3
- "version": "0.0.1-alpha-28c23a4",
3
+ "version": "0.0.1-alpha-db495b1",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.2.0",
6
6
  "@angular/core": "^18.2.0"
package/public-api.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export * from './lib/formly-lib/formly-standalone.module';
2
- export * from './lib/formly-lib/formly-lib.component';
1
+ export * from './lib/mnl-form/mnl-form-standalone.module';
2
+ export * from './lib/mnl-form/mnl-form.component';
3
3
  export * from './lib/models/custom-form-field.model';
4
4
  export * from './lib/models/workflow-status.model';
5
5
  export * from './lib/workflow-status/workflow-status.component';
@@ -1,199 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, EventEmitter, Input, Output } from '@angular/core';
3
- import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
- import { CommonsModule } from '@muraai/mnl-commons';
5
- import { FormlyModule } from '@ngx-formly/core';
6
- import { FormlyMatCheckboxModule } from '@ngx-formly/material/checkbox';
7
- import { FormlyMatInputModule } from '@ngx-formly/material/input';
8
- import { FormlyMatRadioModule } from '@ngx-formly/material/radio';
9
- import { FormlyMatTextAreaModule } from '@ngx-formly/material/textarea';
10
- import { TranslateModule } from '@ngx-translate/core';
11
- import { of } from 'rxjs';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "@ngx-translate/core";
14
- import * as i2 from "../services/scoring.service";
15
- import * as i3 from "@ngx-formly/core";
16
- export class MnlFormLibComponent {
17
- constructor(translateService, scoring) {
18
- this.translateService = translateService;
19
- this.scoring = scoring;
20
- this.readonly = false;
21
- this.noOfTabs = new EventEmitter();
22
- this.scoreChange = new EventEmitter();
23
- this.helperModelChange = new EventEmitter();
24
- this.formPrepared = false;
25
- this.totalTabs = 0;
26
- this.translateService.setDefaultLang('en');
27
- }
28
- ngOnInit() {
29
- if (this.fields) {
30
- this.applyReadonlyToFields(this.fields);
31
- this.filterFieldGroupsByRolesAndCountries(this.fields);
32
- this.form.updateValueAndValidity();
33
- this.formPrepared = true;
34
- this.getNumberOfActiveTabs(this.fields);
35
- this.setAutocompleteSingleOptionByDefault(this.fields);
36
- this.options = {
37
- formState: {
38
- ...this.options.formState,
39
- showOldValues: this.showOldValues,
40
- oldValues: this.oldValues,
41
- helperModel: this.helperModel,
42
- onHelperModelChange: this.onHelperModelChange.bind(this),
43
- },
44
- };
45
- if (this.form.disabled) {
46
- this.form.disable({ emitEvent: false });
47
- }
48
- }
49
- }
50
- onModelChange(model) {
51
- const result = this.scoring.updateScore(model, this.fields);
52
- this.scoreChange.emit(result);
53
- }
54
- onHelperModelChange(helperModel) {
55
- this.helperModelChange.emit(helperModel);
56
- }
57
- setAutocompleteSingleOptionByDefault(fields) {
58
- fields.forEach((field) => {
59
- if (field.type === 'mu-select-autocomplete') {
60
- field.hooks = {
61
- onInit: (field) => {
62
- const formControl = field.formControl;
63
- const options = field.props?.options || [];
64
- if (Array.isArray(options)) {
65
- this.setOptionByDefault(formControl, field, options);
66
- }
67
- else {
68
- (options || of([])).subscribe((options) => {
69
- this.setOptionByDefault(formControl, field, options);
70
- });
71
- }
72
- },
73
- };
74
- }
75
- if (field.fieldGroup) {
76
- this.setAutocompleteSingleOptionByDefault(field.fieldGroup);
77
- }
78
- });
79
- }
80
- setOptionByDefault(formControl, field, options) {
81
- if (formControl && field.props && field.props.options) {
82
- if (options.length === 1) {
83
- formControl.setValue(options[0].value);
84
- }
85
- field.props.optionsChange?.subscribe((updatedOptions) => {
86
- if (updatedOptions.length === 1 && formControl) {
87
- formControl.setValue(updatedOptions[0].value);
88
- }
89
- });
90
- }
91
- }
92
- getNumberOfActiveTabs(fields) {
93
- fields.forEach((field) => {
94
- if (field.type === 'mu-tabs') {
95
- this.totalTabs = field.fieldGroup?.length || 0;
96
- this.noOfTabs.emit(this.totalTabs);
97
- }
98
- if (field.fieldGroup) {
99
- this.getNumberOfActiveTabs(field.fieldGroup);
100
- }
101
- });
102
- }
103
- applyReadonlyToFields(fields) {
104
- return fields.map((field) => {
105
- if (field.fieldGroup) {
106
- this.applyReadonlyToFields(field.fieldGroup);
107
- }
108
- else {
109
- field.props = {
110
- ...(field.props || {}),
111
- readonly: field.props?.readonly !== undefined
112
- ? field.props.readonly
113
- : this.readonly,
114
- };
115
- }
116
- return field;
117
- });
118
- }
119
- filterFieldGroupsByRolesAndCountries(fields) {
120
- return fields
121
- .map((field) => {
122
- if (field.fieldGroup && !field.vissibleCountries) {
123
- field.fieldGroup = this.filterFieldGroupsByRolesAndCountries(field.fieldGroup);
124
- }
125
- // const hasValidRole = field.vissibleRoles
126
- // ? field.vissibleRoles.some((role: any) => this.userRoles?.includes(role))
127
- // : true;
128
- // const hasValidCountry = field.vissibleCountries
129
- // ? field.vissibleCountries.some((country: any) => this.userCountries?.includes(country))
130
- // : true;
131
- const validGroup = field;
132
- if (validGroup && field.fieldGroup) {
133
- field.fieldGroup = this.filterFieldGroupsByRolesAndCountries(field.fieldGroup);
134
- }
135
- if (validGroup == null) {
136
- this.removeValidationsForFilteredFields(field);
137
- }
138
- if (!validGroup && field.props?.required) {
139
- field.props.required = false;
140
- }
141
- return validGroup;
142
- })
143
- .filter((field) => field !== null);
144
- }
145
- removeValidationsForFilteredFields(fields) {
146
- fields?.fieldGroup?.forEach((field) => {
147
- if (field.fieldGroup) {
148
- this.removeValidationsForFilteredFields(field);
149
- }
150
- if (this.form.get(field.key)) {
151
- this.form.removeControl(field.key);
152
- }
153
- });
154
- }
155
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MnlFormLibComponent, deps: [{ token: i1.TranslateService }, { token: i2.ScoringService }], target: i0.ɵɵFactoryTarget.Component }); }
156
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: MnlFormLibComponent, isStandalone: true, selector: "mnl-form", inputs: { readonly: "readonly", form: "form", fields: "fields", model: "model", helperModel: "helperModel", options: "options", userRoles: "userRoles", userCountries: "userCountries", oldValues: "oldValues", showOldValues: "showOldValues" }, outputs: { noOfTabs: "noOfTabs", scoreChange: "scoreChange", helperModelChange: "helperModelChange" }, ngImport: i0, template: "@if(formPrepared) {\n<formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\"\n (modelChange)=\"onModelChange($event)\"\n class=\"mnl-formly-form\"\n></formly-form>\n}\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: CommonsModule }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i3.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: FormlyMatTextAreaModule }, { kind: "ngmodule", type: FormlyMatInputModule }, { kind: "ngmodule", type: FormlyMatCheckboxModule }, { kind: "ngmodule", type: FormlyMatRadioModule }] }); }
157
- }
158
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MnlFormLibComponent, decorators: [{
159
- type: Component,
160
- args: [{ selector: 'mnl-form', standalone: true, imports: [
161
- CommonModule,
162
- CommonsModule,
163
- FormlyModule,
164
- ReactiveFormsModule,
165
- FormsModule,
166
- TranslateModule,
167
- FormlyMatTextAreaModule,
168
- FormlyMatInputModule,
169
- FormlyMatCheckboxModule,
170
- FormlyMatRadioModule,
171
- ], template: "@if(formPrepared) {\n<formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\"\n (modelChange)=\"onModelChange($event)\"\n class=\"mnl-formly-form\"\n></formly-form>\n}\n" }]
172
- }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.ScoringService }], propDecorators: { readonly: [{
173
- type: Input
174
- }], form: [{
175
- type: Input
176
- }], fields: [{
177
- type: Input
178
- }], model: [{
179
- type: Input
180
- }], helperModel: [{
181
- type: Input
182
- }], options: [{
183
- type: Input
184
- }], userRoles: [{
185
- type: Input
186
- }], userCountries: [{
187
- type: Input
188
- }], noOfTabs: [{
189
- type: Output
190
- }], oldValues: [{
191
- type: Input
192
- }], showOldValues: [{
193
- type: Input
194
- }], scoreChange: [{
195
- type: Output
196
- }], helperModelChange: [{
197
- type: Output
198
- }] } });
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWxpYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLWxpYi9zcmMvbGliL2Zvcm1seS1saWIvZm9ybWx5LWxpYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLWxpYi9zcmMvbGliL2Zvcm1seS1saWIvZm9ybWx5LWxpYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQWEsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBcUIsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBb0IsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQXNCMUIsTUFBTSxPQUFPLG1CQUFtQjtJQTBDOUIsWUFDVSxnQkFBa0MsRUFDbEMsT0FBdUI7UUFEdkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtR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WUFBWSw4QkFDWixhQUFhLDhCQUNiLFlBQVksNktBQ1osbUJBQW1CLDhCQUNuQixXQUFXLDhCQUNYLGVBQWUsOEJBQ2YsdUJBQXVCLDhCQUN2QixvQkFBb0IsOEJBQ3BCLHVCQUF1Qiw4QkFDdkIsb0JBQW9COzs0RkFLWCxtQkFBbUI7a0JBbEIvQixTQUFTOytCQUNFLFVBQVUsY0FDUixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsdUJBQXVCO3dCQUN2QixvQkFBb0I7d0JBQ3BCLHVCQUF1Qjt3QkFDdkIsb0JBQW9CO3FCQUNyQjtrSEFNRCxRQUFRO3NCQURQLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsTUFBTTtnQkFJUCxTQUFTO3NCQURSLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQUlOLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxpQkFBaUI7c0JBRGhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbW1vbnNNb2R1bGUgfSBmcm9tICdAbXVyYWFpL21ubC1jb21tb25zJztcbmltcG9ydCB7IEZvcm1seUZvcm1PcHRpb25zLCBGb3JtbHlNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEZvcm1seU1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgRm9ybWx5TWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBGb3JtbHlNYXRSYWRpb01vZHVsZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L21hdGVyaWFsL3JhZGlvJztcbmltcG9ydCB7IEZvcm1seU1hdFRleHRBcmVhTW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvbWF0ZXJpYWwvdGV4dGFyZWEnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ3VzdG9tRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvY3VzdG9tLWZvcm0tZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgU2NvcmluZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zY29yaW5nLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtbmwtZm9ybScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQ29tbW9uc01vZHVsZSxcbiAgICBGb3JtbHlNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgRm9ybWx5TWF0VGV4dEFyZWFNb2R1bGUsXG4gICAgRm9ybWx5TWF0SW5wdXRNb2R1bGUsXG4gICAgRm9ybWx5TWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgRm9ybWx5TWF0UmFkaW9Nb2R1bGUsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtbHktbGliLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2Zvcm1seS1saWIuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBNbmxGb3JtTGliQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgcmVhZG9ubHkgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBmb3JtITogRm9ybUdyb3VwO1xuXG4gIEBJbnB1dCgpXG4gIGZpZWxkcyE6IEN1c3RvbUZvcm1seUZpZWxkQ29uZmlnW107XG5cbiAgQElucHV0KClcbiAgbW9kZWw6IGFueTtcblxuICBASW5wdXQoKVxuICBoZWxwZXJNb2RlbDogYW55O1xuXG4gIEBJbnB1dCgpXG4gIG9wdGlvbnMhOiBGb3JtbHlGb3JtT3B0aW9ucztcblxuICBASW5wdXQoKVxuICB1c2VyUm9sZXMhOiBzdHJpbmdbXTtcblxuICBASW5wdXQoKVxuICB1c2VyQ291bnRyaWVzITogc3RyaW5nW107XG5cbiAgQE91dHB1dCgpXG4gIG5vT2ZUYWJzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgpXG4gIG9sZFZhbHVlczogYW55O1xuXG4gIEBJbnB1dCgpXG4gIHNob3dPbGRWYWx1ZXMhOiBib29sZWFuO1xuXG4gIEBPdXRwdXQoKVxuICBzY29yZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKVxuICBoZWxwZXJNb2RlbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGZvcm1QcmVwYXJlZCA9IGZhbHNlO1xuICB0b3RhbFRhYnMgPSAwO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzY29yaW5nOiBTY29yaW5nU2VydmljZVxuICApIHtcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2V0RGVmYXVsdExhbmcoJ2VuJyk7XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmllbGRzKSB7XG4gICAgICB0aGlzLmFwcGx5UmVhZG9ubHlUb0ZpZWxkcyh0aGlzLmZpZWxkcyk7XG4gICAgICB0aGlzLmZpbHRlckZpZWxkR3JvdXBzQnlSb2xlc0FuZENvdW50cmllcyh0aGlzLmZpZWxkcyk7XG4gICAgICB0aGlzLmZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgdGhpcy5mb3JtUHJlcGFyZWQgPSB0cnVlO1xuICAgICAgdGhpcy5nZXROdW1iZXJPZkFjdGl2ZVRhYnModGhpcy5maWVsZHMpO1xuICAgICAgdGhpcy5zZXRBdXRvY29tcGxldGVTaW5nbGVPcHRpb25CeURlZmF1bHQodGhpcy5maWVsZHMpO1xuICAgICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgICBmb3JtU3RhdGU6IHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnMuZm9ybVN0YXRlLFxuICAgICAgICAgIHNob3dPbGRWYWx1ZXM6IHRoaXMuc2hvd09sZFZhbHVlcyxcbiAgICAgICAgICBvbGRWYWx1ZXM6IHRoaXMub2xkVmFsdWVzLFxuICAgICAgICAgIGhlbHBlck1vZGVsOiB0aGlzLmhlbHBlck1vZGVsLFxuICAgICAgICAgIG9uSGVscGVyTW9kZWxDaGFuZ2U6IHRoaXMub25IZWxwZXJNb2RlbENoYW5nZS5iaW5kKHRoaXMpLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMuZm9ybS5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLmZvcm0uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25Nb2RlbENoYW5nZShtb2RlbDogYW55KSB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5zY29yaW5nLnVwZGF0ZVNjb3JlKG1vZGVsLCB0aGlzLmZpZWxkcyk7XG4gICAgdGhpcy5zY29yZUNoYW5nZS5lbWl0KHJlc3VsdCk7XG4gIH1cblxuICBvbkhlbHBlck1vZGVsQ2hhbmdlKGhlbHBlck1vZGVsOiBhbnkpIHtcbiAgICB0aGlzLmhlbHBlck1vZGVsQ2hhbmdlLmVtaXQoaGVscGVyTW9kZWwpO1xuICB9XG5cbiAgc2V0QXV0b2NvbXBsZXRlU2luZ2xlT3B0aW9uQnlEZWZhdWx0KGZpZWxkczogYW55KSB7XG4gICAgZmllbGRzLmZvckVhY2goKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnbXUtc2VsZWN0LWF1dG9jb21wbGV0ZScpIHtcbiAgICAgICAgZmllbGQuaG9va3MgPSB7XG4gICAgICAgICAgb25Jbml0OiAoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSBmaWVsZC5mb3JtQ29udHJvbDtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBmaWVsZC5wcm9wcz8ub3B0aW9ucyB8fCBbXTtcblxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZXRPcHRpb25CeURlZmF1bHQoZm9ybUNvbnRyb2wsIGZpZWxkLCBvcHRpb25zKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIChvcHRpb25zIHx8IG9mKFtdKSkuc3Vic2NyaWJlKChvcHRpb25zOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldE9wdGlvbkJ5RGVmYXVsdChmb3JtQ29udHJvbCwgZmllbGQsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgaWYgKGZpZWxkLmZpZWxkR3JvdXApIHtcbiAgICAgICAgdGhpcy5zZXRBdXRvY29tcGxldGVTaW5nbGVPcHRpb25CeURlZmF1bHQoZmllbGQuZmllbGRHcm91cCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzZXRPcHRpb25CeURlZmF1bHQoZm9ybUNvbnRyb2w6IGFueSwgZmllbGQ6IGFueSwgb3B0aW9uczogYW55KSB7XG4gICAgaWYgKGZvcm1Db250cm9sICYmIGZpZWxkLnByb3BzICYmIGZpZWxkLnByb3BzLm9wdGlvbnMpIHtcbiAgICAgIGlmIChvcHRpb25zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZShvcHRpb25zWzBdLnZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgZmllbGQucHJvcHMub3B0aW9uc0NoYW5nZT8uc3Vic2NyaWJlKCh1cGRhdGVkT3B0aW9uczogYW55W10pID0+IHtcbiAgICAgICAgaWYgKHVwZGF0ZWRPcHRpb25zLmxlbmd0aCA9PT0gMSAmJiBmb3JtQ29udHJvbCkge1xuICAgICAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKHVwZGF0ZWRPcHRpb25zWzBdLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIGdldE51bWJlck9mQWN0aXZlVGFicyhmaWVsZHM6IGFueSkge1xuICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZDogYW55KSA9PiB7XG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ211LXRhYnMnKSB7XG4gICAgICAgIHRoaXMudG90YWxUYWJzID0gZmllbGQuZmllbGRHcm91cD8ubGVuZ3RoIHx8IDA7XG4gICAgICAgIHRoaXMubm9PZlRhYnMuZW1pdCh0aGlzLnRvdGFsVGFicyk7XG4gICAgICB9XG4gICAgICBpZiAoZmllbGQuZmllbGRHcm91cCkge1xuICAgICAgICB0aGlzLmdldE51bWJlck9mQWN0aXZlVGFicyhmaWVsZC5maWVsZEdyb3VwKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFwcGx5UmVhZG9ubHlUb0ZpZWxkcyhcbiAgICBmaWVsZHM6IEN1c3RvbUZvcm1seUZpZWxkQ29uZmlnW11cbiAgKTogQ3VzdG9tRm9ybWx5RmllbGRDb25maWdbXSB7XG4gICAgcmV0dXJuIGZpZWxkcy5tYXAoKGZpZWxkKSA9PiB7XG4gICAgICBpZiAoZmllbGQuZmllbGRHcm91cCkge1xuICAgICAgICB0aGlzLmFwcGx5UmVhZG9ubHlUb0ZpZWxkcyhmaWVsZC5maWVsZEdyb3VwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpZWxkLnByb3BzID0ge1xuICAgICAgICAgIC4uLihmaWVsZC5wcm9wcyB8fCB7fSksXG4gICAgICAgICAgcmVhZG9ubHk6XG4gICAgICAgICAgICBmaWVsZC5wcm9wcz8ucmVhZG9ubHkgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICA/IGZpZWxkLnByb3BzLnJlYWRvbmx5XG4gICAgICAgICAgICAgIDogdGhpcy5yZWFkb25seSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9KTtcbiAgfVxuXG4gIGZpbHRlckZpZWxkR3JvdXBzQnlSb2xlc0FuZENvdW50cmllcyhmaWVsZHM6IEN1c3RvbUZvcm1seUZpZWxkQ29uZmlnW10pIHtcbiAgICByZXR1cm4gZmllbGRzXG4gICAgICAubWFwKChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgIGlmIChmaWVsZC5maWVsZEdyb3VwICYmICFmaWVsZC52aXNzaWJsZUNvdW50cmllcykge1xuICAgICAgICAgIGZpZWxkLmZpZWxkR3JvdXAgPSB0aGlzLmZpbHRlckZpZWxkR3JvdXBzQnlSb2xlc0FuZENvdW50cmllcyhcbiAgICAgICAgICAgIGZpZWxkLmZpZWxkR3JvdXBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnN0IGhhc1ZhbGlkUm9sZSA9IGZpZWxkLnZpc3NpYmxlUm9sZXNcbiAgICAgICAgLy8gICA/IGZpZWxkLnZpc3NpYmxlUm9sZXMuc29tZSgocm9sZTogYW55KSA9PiB0aGlzLnVzZXJSb2xlcz8uaW5jbHVkZXMocm9sZSkpXG4gICAgICAgIC8vICAgOiB0cnVlO1xuICAgICAgICAvLyBjb25zdCBoYXNWYWxpZENvdW50cnkgPSBmaWVsZC52aXNzaWJsZUNvdW50cmllc1xuICAgICAgICAvLyAgID8gZmllbGQudmlzc2libGVDb3VudHJpZXMuc29tZSgoY291bnRyeTogYW55KSA9PiB0aGlzLnVzZXJDb3VudHJpZXM/LmluY2x1ZGVzKGNvdW50cnkpKVxuICAgICAgICAvLyAgIDogdHJ1ZTtcblxuICAgICAgICBjb25zdCB2YWxpZEdyb3VwID0gZmllbGQ7XG4gICAgICAgIGlmICh2YWxpZEdyb3VwICYmIGZpZWxkLmZpZWxkR3JvdXApIHtcbiAgICAgICAgICBmaWVsZC5maWVsZEdyb3VwID0gdGhpcy5maWx0ZXJGaWVsZEdyb3Vwc0J5Um9sZXNBbmRDb3VudHJpZXMoXG4gICAgICAgICAgICBmaWVsZC5maWVsZEdyb3VwXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsaWRHcm91cCA9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVWYWxpZGF0aW9uc0ZvckZpbHRlcmVkRmllbGRzKGZpZWxkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXZhbGlkR3JvdXAgJiYgZmllbGQucHJvcHM/LnJlcXVpcmVkKSB7XG4gICAgICAgICAgZmllbGQucHJvcHMucmVxdWlyZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsaWRHcm91cDtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKChmaWVsZDogYW55KSA9PiBmaWVsZCAhPT0gbnVsbCk7XG4gIH1cblxuICByZW1vdmVWYWxpZGF0aW9uc0ZvckZpbHRlcmVkRmllbGRzKGZpZWxkczogYW55KSB7XG4gICAgZmllbGRzPy5maWVsZEdyb3VwPy5mb3JFYWNoKChmaWVsZDogYW55KSA9PiB7XG4gICAgICBpZiAoZmllbGQuZmllbGRHcm91cCkge1xuICAgICAgICB0aGlzLnJlbW92ZVZhbGlkYXRpb25zRm9yRmlsdGVyZWRGaWVsZHMoZmllbGQpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZm9ybS5nZXQoZmllbGQua2V5KSkge1xuICAgICAgICB0aGlzLmZvcm0ucmVtb3ZlQ29udHJvbChmaWVsZC5rZXkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCJAaWYoZm9ybVByZXBhcmVkKSB7XG48Zm9ybWx5LWZvcm1cbiAgW2Zvcm1dPVwiZm9ybVwiXG4gIFtmaWVsZHNdPVwiZmllbGRzXCJcbiAgW21vZGVsXT1cIm1vZGVsXCJcbiAgW29wdGlvbnNdPVwib3B0aW9uc1wiXG4gIChtb2RlbENoYW5nZSk9XCJvbk1vZGVsQ2hhbmdlKCRldmVudClcIlxuICBjbGFzcz1cIm1ubC1mb3JtbHktZm9ybVwiXG4+PC9mb3JtbHktZm9ybT5cbn1cbiJdfQ==
@@ -1,155 +0,0 @@
1
- import { importProvidersFrom } from '@angular/core';
2
- import { FormlyModule } from '@ngx-formly/core';
3
- import { ReactiveFormsModule, Validators } from '@angular/forms';
4
- import { FormlyMaterialModule } from '@ngx-formly/material';
5
- import { CustomInputComponent } from '../types/custom-input.component';
6
- import { FormFieldWrapperComponent } from '../wrappers/form-field-wrapper.component';
7
- import { emailValidator } from '../validators/custom-email-validator';
8
- import { FormlyFieldTabsComponent } from '../types/tabs.types';
9
- import { FormlyFieldExpansionPanelComponent } from '../types/expansion-panel.types';
10
- import { FormlyFieldGridComponent } from '../types/grid.type';
11
- import { FormlyFieldStepperComponent } from '../types/stepper.type';
12
- import { FormlyFieldTableComponent } from '../types/table.types';
13
- import { FormlyButtonComponent } from '../types/button.type';
14
- import { FormlyFieldCountryCodeComponent } from '../types/country-code-input.type';
15
- import { FormlySelectAutocompleteComponent } from '../types/select-autocomplete.type';
16
- import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
17
- import { CommonsModule, httpLoaderFactory, MNL_TRANSLATION_RESOURCE } from '@muraai/mnl-commons';
18
- import { phoneValidation } from '../validators/phone-number-validator';
19
- import { TabularFormComponent } from '../types/tabular-form.type';
20
- import { HttpBackend, provideHttpClient } from '@angular/common/http';
21
- import { FormlyMultiSelectCheckboxAutocompleteComponent } from '../types/multi-select-checkbox.component';
22
- import { FormlyMatDatepickerModule } from '@ngx-formly/material/datepicker';
23
- import { DateAdapter, MatNativeDateModule } from '@angular/material/core';
24
- import { MatInputModule } from '@angular/material/input';
25
- import { selectValidator } from '../validators/select-validator';
26
- import { gstValidator } from '../validators/gst-validator';
27
- import { panValidator } from '../validators/pan-validator';
28
- import { FormlyFieldPanelComponent } from '../types/formly-field-panel.type';
29
- import { FormlyWrapperAddonsComponent } from '../wrappers/prefix-suffix-wrapper.component';
30
- import { addonsExtension } from '../wrappers/prefix-sufix-extension.component';
31
- import { WithOldValueWrapperComponent } from '../wrappers/formly-wrapper-with-old-value.component';
32
- import { CommonModule } from '@angular/common';
33
- import { FormlyCommentInputComponent } from '../types/comments.type';
34
- import { CustomFormlyRadioComponent } from '../types/radio.type';
35
- import { CustomFormlyMatInputComponent } from '../types/input.type';
36
- import { ActionableFormlyFieldGridComponent } from '../types/grid-actionable.type';
37
- import { FormlyFileUploadComponent } from '../types/upload-file';
38
- import { MatDatepickerModule } from '@angular/material/datepicker';
39
- import { CustomDate } from '../types/custom-date.type';
40
- import { normalEmailValidator } from '../validators/normal-email-validator';
41
- import { FormlyFieldScrollableTabsComponent } from '../types/scrollable-tabs.types';
42
- import { npiValidator } from '../validators/npi-validator';
43
- import { tinOrSsnValidator } from '../validators/tinSsn-validator';
44
- import { einValidator } from '../validators/ein-validators';
45
- import { FormlyDescriptionWrapperComponent } from '../wrappers/form-field-description-wrapper.component';
46
- import { FormlyFieldTimeComponent } from '../types/date-format.type';
47
- import { MnlFormHelperTextInputComponent } from '../types/mu-helper-text.type';
48
- export const mnlFormProviders = [
49
- importProvidersFrom(CommonsModule.forRoot(), CommonModule, ReactiveFormsModule, FormlyModule.forRoot({
50
- types: [
51
- { name: 'custom-input', component: CustomInputComponent },
52
- { name: 'mu-panel', component: FormlyFieldPanelComponent },
53
- { name: 'mu-tabs', component: FormlyFieldTabsComponent },
54
- { name: 'mu-exp-panel', component: FormlyFieldExpansionPanelComponent },
55
- { name: 'mu-table', component: FormlyFieldTableComponent },
56
- // { name: 'mu-autocomplete', component: AutocompleteTypeComponent, wrappers: ['form-field'] },
57
- // { name: 'mu-multi-select-autocomplete', component: MultiSelectAutocompleteComponent, wrappers: ['form-field'] },
58
- { name: 'mu-stepper', component: FormlyFieldStepperComponent, wrappers: [] },
59
- { name: 'mu-grid', component: FormlyFieldGridComponent,
60
- defaultOptions: {
61
- props: {
62
- width: '100%',
63
- height: '100%',
64
- },
65
- },
66
- },
67
- { name: 'mu-button', component: FormlyButtonComponent },
68
- { name: 'mu-country-code-phone', component: FormlyFieldCountryCodeComponent },
69
- { name: 'mu-select-autocomplete', component: FormlySelectAutocompleteComponent },
70
- { name: 'mu-tabular-form', component: TabularFormComponent },
71
- {
72
- name: 'mu-multi-checkbox-autocomplete',
73
- component: FormlyMultiSelectCheckboxAutocompleteComponent,
74
- },
75
- // { name: 'mu-select-api-autocomplete', component: SelectApiAutoCompleteComponent },
76
- // { name: 'mu-select-auto-complete', component: SelectAutocompleteComponent},
77
- { name: 'mu-comments', component: FormlyCommentInputComponent },
78
- { name: 'mu-radio', component: CustomFormlyRadioComponent },
79
- { name: 'mu-input', component: CustomFormlyMatInputComponent },
80
- { name: 'mu-actionable-grid', component: ActionableFormlyFieldGridComponent,
81
- defaultOptions: {
82
- props: {
83
- width: '100%'
84
- },
85
- },
86
- },
87
- { name: 'mu-upload-file', component: FormlyFileUploadComponent },
88
- { name: 'mu-scroll-tabs', component: FormlyFieldScrollableTabsComponent },
89
- { name: 'mu-custom-time', component: FormlyFieldTimeComponent },
90
- { name: 'mu-helper-text', component: MnlFormHelperTextInputComponent },
91
- ],
92
- wrappers: [
93
- { name: 'mu-form-field', component: FormFieldWrapperComponent },
94
- { name: 'mu-with-old-value', component: WithOldValueWrapperComponent },
95
- { name: 'addons', component: FormlyWrapperAddonsComponent },
96
- { name: 'description', component: FormlyDescriptionWrapperComponent }
97
- ],
98
- extensions: [{ name: 'addons', extension: { onPopulate: addonsExtension } }],
99
- validators: [
100
- { name: 'email', validation: emailValidator },
101
- {
102
- name: 'maxlength',
103
- validation: Validators.maxLength(30),
104
- },
105
- { name: 'gst', validation: gstValidator },
106
- { name: 'pan', validation: panValidator },
107
- { name: 'dunsNumber', validation: Validators.pattern(/^\d{9}$/) },
108
- { name: 'aadharNumber', validation: Validators.pattern(/^\d{12}$/) },
109
- { name: 'telexNum', validation: Validators.pattern(/^[0-9]{1,30}$/) },
110
- { name: 'accountNum', validation: Validators.pattern(/^[a-zA-Z0-9]{1,19}$/) },
111
- { name: 'postalCodePattern', validation: Validators.pattern(/^\d{1,10}$/) },
112
- { name: 'faxPattern', validation: Validators.pattern(/^\d{1,30}$/) },
113
- { name: 'ifscCode', validation: Validators.pattern(/^[a-zA-Z0-9]{1,11}$/) },
114
- { name: 'pattern', validation: Validators.pattern(/^[a-zA-Z0-9\s\-:\/&.,()]*$/) },
115
- { name: 'phoneValidation', validation: phoneValidation },
116
- { name: 'selectNotAvailTinNoPe', validation: selectValidator },
117
- { name: 'onlyTenDigits', validation: Validators.pattern(/^\d{10}$/) },
118
- { name: 'udyamPattern', validation: Validators.pattern(/^UDYAM-[A-Z]{2}-\d{2}-\d{7}$/) },
119
- { name: 'unitsPattern', validation: Validators.pattern(/^[A-Za-z\s]{1,20}$/) },
120
- { name: 'normalEmail', validation: normalEmailValidator },
121
- { name: 'validateTwoDecimals', validation: Validators.pattern(/^\d*(\.\d{1,2})?$/) },
122
- {
123
- name: 'percentageValidation',
124
- validation: Validators.pattern(/^(100(\.0{1,2})?|(\d{1,2}(\.\d{1,2})?))$/),
125
- },
126
- {
127
- name: 'urlValidity',
128
- validation: Validators.pattern(/^(https?:\/\/)?([a-zA-Z0-9-]+\.)+(com|org|net|gov|edu|io|co|uk|in|au|de|fr|ca|jp|cn|ru|br|us|info|biz|me|tech|xyz|online|store|blog)(:\d+)?(\/[^\s]*)?$/)
129
- },
130
- { name: 'npi', validation: npiValidator },
131
- { name: 'tinOrSsn', validation: tinOrSsnValidator },
132
- { name: 'ein', validation: einValidator },
133
- { name: 'sicValidator', validation: Validators.pattern(/^(?!0000)\d{4}$/) },
134
- { name: 'tinNumber', validation: Validators.pattern(/^[a-zA-Z0-9\s-]{5,20}$/) },
135
- { name: 'gstHstNumber', validation: Validators.pattern(/^[a-zA-Z0-9]{15}$/) },
136
- { name: 'qstNumber', validation: Validators.pattern(/^[a-zA-Z0-9]{9}$/) }
137
- ],
138
- validationMessages: [
139
- { name: 'phoneValidation', message: 'Invalid mobile number for the selected country.' },
140
- { name: 'selectNotAvailTinNoPe', message: 'Select the fields not available in TIN / No PE certificate is required' },
141
- ]
142
- }), FormlyMaterialModule, TranslateModule.forRoot({
143
- loader: {
144
- provide: TranslateLoader,
145
- useFactory: httpLoaderFactory,
146
- deps: [HttpBackend, MNL_TRANSLATION_RESOURCE],
147
- },
148
- }), FormlyMatDatepickerModule, MatNativeDateModule, MatInputModule, MatDatepickerModule),
149
- {
150
- provide: DateAdapter,
151
- useClass: CustomDate,
152
- },
153
- provideHttpClient()
154
- ];
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LXN0YW5kYWxvbmUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1saWIvc3JjL2xpYi9mb3JtbHktbGliL2Zvcm1seS1zdGFuZGFsb25lLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUs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QVUsRUFBRSxpQkFBaUI7WUFDN0IsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLHdCQUF3QixDQUFDO1NBQzlDO0tBQ0YsQ0FBQyxFQUNOLHlCQUF5QixFQUN6QixtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLG1CQUFtQixDQUNwQjtJQUNEO1FBQ0UsT0FBTyxFQUFFLFdBQVc7UUFDcEIsUUFBUSxFQUFFLFVBQVU7S0FDckI7SUFDRCxpQkFBaUIsRUFBRTtDQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW1wb3J0UHJvdmlkZXJzRnJvbSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybWx5TW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybWx5TWF0ZXJpYWxNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbCc7XG5pbXBvcnQgeyBDdXN0b21JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL3R5cGVzL2N1c3RvbS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybUZpZWxkV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4uL3dyYXBwZXJzL2Zvcm0tZmllbGQtd3JhcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgZW1haWxWYWxpZGF0b3IgfSBmcm9tICcuLi92YWxpZGF0b3JzL2N1c3RvbS1lbWFpbC12YWxpZGF0b3InO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRUYWJzQ29tcG9uZW50IH0gZnJvbSAnLi4vdHlwZXMvdGFicy50eXBlcyc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZEV4cGFuc2lvblBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vdHlwZXMvZXhwYW5zaW9uLXBhbmVsLnR5cGVzJztcbmltcG9ydCB7IEZvcm1seUZpZWxkR3JpZENvbXBvbmVudCB9IGZyb20gJy4uL3R5cGVzL2dyaWQudHlwZSc7XG5pbXBvcnQgeyBNdWx0aVNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4uL3R5cGVzL211bHRpLXNlbGVjdC1hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRTdGVwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vdHlwZXMvc3RlcHBlci50eXBlJztcbmltcG9ydCB7IEZvcm1seUZpZWxkVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi90eXBlcy90YWJsZS50eXBlcyc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVUeXBlQ29tcG9uZW50IH0gZnJvbSAnLi4vdHlwZXMvYXV0b2NvbXBsZXRlLXR5cGUuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1seUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL3R5cGVzL2J1dHRvbi50eXBlJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ291bnRyeUNvZGVDb21wb25lbnQgfSBmcm9tICcuLi90eXBlcy9jb3VudHJ5LWNvZGUtaW5wdXQudHlwZSc7XG5pbXBvcnQgeyBGb3JtbHlTZWxlY3RBdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuLi90eXBlcy9zZWxlY3QtYXV0b2NvbXBsZXRlLnR5cGUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTG9hZGVyLCBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IENvbW1vbnNNb2R1bGUsIGh0dHBMb2FkZXJGYWN0b3J5LCBNTkxfVFJBTlNMQVRJT05fUkVTT1VSQ0UgfSBmcm9tICdAbXVyYWFpL21ubC1jb21tb25zJztcbmltcG9ydCB7IHBob25lVmFsaWRhdGlvbiB9IGZyb20gJy4uL3ZhbGlkYXRvcnMvcGhvbmUtbnVtYmVyLXZhbGlkYXRvcic7XG5pbXBvcnQgeyBUYWJ1bGFyRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL3R5cGVzL3RhYnVsYXItZm9ybS50eXBlJztcbmltcG9ydCB7IEh0dHBCYWNrZW5kLCBwcm92aWRlSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEZvcm1seU11bHRpU2VsZWN0Q2hlY2tib3hBdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuLi90eXBlcy9tdWx0aS1zZWxlY3QtY2hlY2tib3guY29tcG9uZW50JztcbmltcG9ydCB7Rm9ybWx5TWF0RGF0ZXBpY2tlck1vZHVsZX0gZnJvbSAnQG5neC1mb3JtbHkvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciwgTWF0TmF0aXZlRGF0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBzZWxlY3RWYWxpZGF0b3IgfSBmcm9tICcuLi92YWxpZGF0b3JzL3NlbGVjdC12YWxpZGF0b3InO1xuaW1wb3J0IHsgU2VsZWN0QXBpQXV0b0NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vdHlwZXMvc2VsZWN0LWFwaS1hdXRvLWNvbXBsZXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBnc3RWYWxpZGF0b3IgfSBmcm9tICcuLi92YWxpZGF0b3JzL2dzdC12YWxpZGF0b3InO1xuaW1wb3J0IHsgcGFuVmFsaWRhdG9yIH0gZnJvbSAnLi4vdmFsaWRhdG9ycy9wYW4tdmFsaWRhdG9yJztcbmltcG9ydCB7IEZvcm1seUZpZWxkUGFuZWxDb21wb25lbnQgfSBmcm9tICcuLi90eXBlcy9mb3JtbHktZmllbGQtcGFuZWwudHlwZSc7XG5pbXBvcnQgeyBTZWxlY3RBdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuLi90eXBlcy9zZWxlY3QtYXV0b2NvbXBsZXRlLXJlZGVmaW5lZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybWx5V3JhcHBlckFkZG9uc0NvbXBvbmVudCB9IGZyb20gJy4uL3dyYXBwZXJzL3ByZWZpeC1zdWZmaXgtd3JhcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgYWRkb25zRXh0ZW5zaW9uIH0gZnJvbSAnLi4vd3JhcHBlcnMvcHJlZml4LXN1Zml4LWV4dGVuc2lvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2l0aE9sZFZhbHVlV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4uL3dyYXBwZXJzL2Zvcm1seS13cmFwcGVyLXdpdGgtb2xkLXZhbHVlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybWx5Q29tbWVudElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vdHlwZXMvY29tbWVudHMudHlwZSc7XG5pbXBvcnQgeyBDdXN0b21Gb3JtbHlSYWRpb0NvbXBvbmVudCB9IGZyb20gJy4uL3R5cGVzL3JhZGlvLnR5cGUnO1xuaW1wb3J0IHsgQ3VzdG9tRm9ybWx5TWF0SW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi90eXBlcy9pbnB1dC50eXBlJztcbmltcG9ydCB7IEFjdGlvbmFibGVGb3JtbHlGaWVsZEdyaWRDb21wb25lbnQgfSBmcm9tICcuLi90eXBlcy9ncmlkLWFjdGlvbmFibGUudHlwZSc7XG5pbXBvcnQgeyBGb3JtbHlGaWxlVXBsb2FkQ29tcG9uZW50IH0gZnJvbSAnLi4vdHlwZXMvdXBsb2FkLWZpbGUnO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgQ3VzdG9tRGF0ZSB9IGZyb20gJy4uL3R5cGVzL2N1c3RvbS1kYXRlLnR5cGUnO1xuaW1wb3J0IHsgbm9ybWFsRW1haWxWYWxpZGF0b3IgfSBmcm9tICcuLi92YWxpZGF0b3JzL25vcm1hbC1lbWFpbC12YWxpZGF0b3InO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRTY3JvbGxhYmxlVGFic0NvbXBvbmVudCB9IGZyb20gJy4uL3R5cGVzL3Njcm9sbGFibGUtdGFicy50eXBlcyc7XG5pbXBvcnQgeyBucGlWYWxpZGF0b3IgfSBmcm9tICcuLi92YWxpZGF0b3JzL25waS12YWxpZGF0b3InO1xuaW1wb3J0IHsgdGluT3JTc25WYWxpZGF0b3IgfSBmcm9tICcuLi92YWxpZGF0b3JzL3RpblNzbi12YWxpZGF0b3InO1xuaW1wb3J0IHsgZWluVmFsaWRhdG9yIH0gZnJvbSAnLi4vdmFsaWRhdG9ycy9laW4tdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBGb3JtbHlEZXNjcmlwdGlvbldyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi93cmFwcGVycy9mb3JtLWZpZWxkLWRlc2NyaXB0aW9uLXdyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1seUZpZWxkVGltZUNvbXBvbmVudCB9IGZyb20gJy4uL3R5cGVzL2RhdGUtZm9ybWF0LnR5cGUnO1xuaW1wb3J0IHsgTW5sRm9ybUhlbHBlclRleHRJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL3R5cGVzL211LWhlbHBlci10ZXh0LnR5cGUnO1xuXG5leHBvcnQgY29uc3QgbW5sRm9ybVByb3ZpZGVycyA9IFtcbiAgaW1wb3J0UHJvdmlkZXJzRnJvbShcbiAgICBDb21tb25zTW9kdWxlLmZvclJvb3QoKSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3JtbHlNb2R1bGUuZm9yUm9vdCh7XG4gICAgICAgIHR5cGVzOiBbXG4gICAgICAgICAgeyBuYW1lOiAnY3VzdG9tLWlucHV0JywgY29tcG9uZW50OiBDdXN0b21JbnB1dENvbXBvbmVudCB9LFxuICAgICAgICAgIHtuYW1lOiAnbXUtcGFuZWwnLCBjb21wb25lbnQ6IEZvcm1seUZpZWxkUGFuZWxDb21wb25lbnR9LFxuICAgICAgICAgIHsgbmFtZTogJ211LXRhYnMnLCBjb21wb25lbnQ6IEZvcm1seUZpZWxkVGFic0NvbXBvbmVudCB9LFxuICAgICAgICAgIHsgbmFtZTogJ211LWV4cC1wYW5lbCcsIGNvbXBvbmVudDogRm9ybWx5RmllbGRFeHBhbnNpb25QYW5lbENvbXBvbmVudCB9LFxuICAgICAgICAgIHsgbmFtZTogJ211LXRhYmxlJywgY29tcG9uZW50OiBGb3JtbHlGaWVsZFRhYmxlQ29tcG9uZW50IH0sXG4gICAgICAgICAgLy8geyBuYW1lOiAnbXUtYXV0b2NvbXBsZXRlJywgY29tcG9uZW50OiBBdXRvY29tcGxldGVUeXBlQ29tcG9uZW50LCB3cmFwcGVyczogWydmb3JtLWZpZWxkJ10gfSxcbiAgICAgICAgICAvLyB7IG5hbWU6ICdtdS1tdWx0aS1zZWxlY3QtYXV0b2NvbXBsZXRlJywgY29tcG9uZW50OiBNdWx0aVNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudCwgd3JhcHBlcnM6IFsnZm9ybS1maWVsZCddIH0sXG4gICAgICAgICAgeyBuYW1lOiAnbXUtc3RlcHBlcicsIGNvbXBvbmVudDogRm9ybWx5RmllbGRTdGVwcGVyQ29tcG9uZW50LCB3cmFwcGVyczogW10gfSxcbiAgICAgICAgICB7IG5hbWU6ICdtdS1ncmlkJywgY29tcG9uZW50OiBGb3JtbHlGaWVsZEdyaWRDb21wb25lbnQsXG4gICAgICAgICAgICBkZWZhdWx0T3B0aW9uczoge1xuICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBuYW1lOiAnbXUtYnV0dG9uJywgY29tcG9uZW50OiBGb3JtbHlCdXR0b25Db21wb25lbnQgfSxcbiAgICAgICAgICB7IG5hbWU6ICdtdS1jb3VudHJ5LWNvZGUtcGhvbmUnLCBjb21wb25lbnQ6IEZvcm1seUZpZWxkQ291bnRyeUNvZGVDb21wb25lbnQgfSxcbiAgICAgICAgICB7IG5hbWU6ICdtdS1zZWxlY3QtYXV0b2NvbXBsZXRlJywgY29tcG9uZW50OiBGb3JtbHlTZWxlY3RBdXRvY29tcGxldGVDb21wb25lbnR9LFxuICAgICAgICAgIHsgbmFtZTogJ211LXRhYnVsYXItZm9ybScsIGNvbXBvbmVudDogVGFidWxhckZvcm1Db21wb25lbnQgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnbXUtbXVsdGktY2hlY2tib3gtYXV0b2NvbXBsZXRlJyxcbiAgICAgICAgICAgIGNvbXBvbmVudDogRm9ybWx5TXVsdGlTZWxlY3RDaGVja2JveEF1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIHsgbmFtZTogJ211LXNlbGVjdC1hcGktYXV0b2NvbXBsZXRlJywgY29tcG9uZW50OiBTZWxlY3RBcGlBdXRvQ29tcGxldGVDb21wb25lbnQgfSxcbiAgICAgICAgICAvLyB7IG5hbWU6ICdtdS1zZWxlY3QtYXV0by1jb21wbGV0ZScsIGNvbXBvbmVudDogU2VsZWN0QXV0b2NvbXBsZXRlQ29tcG9uZW50fSxcbiAgICAgICAgICB7IG5hbWU6ICdtdS1jb21tZW50cycsIGNvbXBvbmVudDogRm9ybWx5Q29tbWVudElucHV0Q29tcG9uZW50IH0sXG4gICAgICAgICAgeyBuYW1lOiAnbXUtcmFkaW8nLCBjb21wb25lbnQ6IEN1c3RvbUZvcm1seVJhZGlvQ29tcG9uZW50fSxcbiAgICAgICAgICB7IG5hbWU6ICdtdS1pbnB1dCcsIGNvbXBvbmVudDogQ3VzdG9tRm9ybWx5TWF0SW5wdXRDb21wb25lbnR9LFxuICAgICAgICAgIHsgbmFtZTogJ211LWFjdGlvbmFibGUtZ3JpZCcsIGNvbXBvbmVudDogQWN0aW9uYWJsZUZvcm1seUZpZWxkR3JpZENvbXBvbmVudCxcbiAgICAgICAgICAgIGRlZmF1bHRPcHRpb25zOiB7XG4gICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJ1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgbmFtZTogJ211LXVwbG9hZC1maWxlJywgY29tcG9uZW50OiBGb3JtbHlGaWxlVXBsb2FkQ29tcG9uZW50IH0sXG4gICAgICAgICAgeyBuYW1lOiAnbXUtc2Nyb2xsLXRhYnMnLCBjb21wb25lbnQ6IEZvcm1seUZpZWxkU2Nyb2xsYWJsZVRhYnNDb21wb25lbnQgfSxcbiAgICAgICAgICB7IG5hbWU6ICdtdS1jdXN0b20tdGltZScsIGNvbXBvbmVudDogRm9ybWx5RmllbGRUaW1lQ29tcG9uZW50IH0sXG4gICAgICAgICAgeyBuYW1lOiAnbXUtaGVscGVyLXRleHQnLCBjb21wb25lbnQ6IE1ubEZvcm1IZWxwZXJUZXh0SW5wdXRDb21wb25lbnQgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHdyYXBwZXJzOiBbXG4gICAgICAgICAgeyBuYW1lOiAnbXUtZm9ybS1maWVsZCcsIGNvbXBvbmVudDogRm9ybUZpZWxkV3JhcHBlckNvbXBvbmVudCB9LFxuICAgICAgICAgIHsgbmFtZTogJ211LXdpdGgtb2xkLXZhbHVlJywgY29tcG9uZW50OiBXaXRoT2xkVmFsdWVXcmFwcGVyQ29tcG9uZW50IH0sXG4gICAgICAgICAgeyBuYW1lOiAnYWRkb25zJywgY29tcG9uZW50OiBGb3JtbHlXcmFwcGVyQWRkb25zQ29tcG9uZW50IH0sXG4gICAgICAgICAgeyBuYW1lOiAnZGVzY3JpcHRpb24nLCBjb21wb25lbnQ6IEZvcm1seURlc2NyaXB0aW9uV3JhcHBlckNvbXBvbmVudCB9XG4gICAgICAgIF0sXG4gICAgICAgIGV4dGVuc2lvbnM6IFt7IG5hbWU6ICdhZGRvbnMnLCBleHRlbnNpb246IHsgb25Qb3B1bGF0ZTogYWRkb25zRXh0ZW5zaW9uIH0gfV0sXG4gICAgICAgIHZhbGlkYXRvcnM6IFtcbiAgICAgICAgICB7IG5hbWU6ICdlbWFpbCcsIHZhbGlkYXRpb246IGVtYWlsVmFsaWRhdG9yIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ21heGxlbmd0aCcsXG4gICAgICAgICAgICB2YWxpZGF0aW9uOiBWYWxpZGF0b3JzLm1heExlbmd0aCgzMCksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7bmFtZTogJ2dzdCcsIHZhbGlkYXRpb246IGdzdFZhbGlkYXRvcn0sXG4gICAgICAgICAge25hbWU6ICdwYW4nLCB2YWxpZGF0aW9uOiBwYW5WYWxpZGF0b3J9LFxuICAgICAgICAgIHsgbmFtZTogJ2R1bnNOdW1iZXInLCB2YWxpZGF0aW9uOiBWYWxpZGF0b3JzLnBhdHRlcm4oL15cXGR7OX0kLykgfSxcbiAgICAgICAgICB7IG5hbWU6ICdhYWRoYXJOdW1iZXInLCB2YWxpZGF0aW9uOiBWYWxpZGF0b3JzLnBhdHRlcm4oL15cXGR7MTJ9JC8pIH0sXG4gICAgICAgICAgeyBuYW1lOiAndGVsZXhOdW0nLCB2YWxpZGF0aW9uOiBWYWxpZGF0b3JzLnBhdHRlcm4oL15bMC05XXsxLDMwfSQvKSB9LFxuICAgICAgICAgIHtuYW1lOiAnYWNjb3VudE51bScsIHZhbGlkYXRpb246IFZhbGlkYXRvcnMucGF0dGVybigvXlthLXpBLVowLTldezEsMTl9JC8pfSxcbiAgICAgICAgICB7bmFtZTogJ3Bvc3RhbENvZGVQYXR0ZXJuJywgdmFsaWRhdGlvbjogIFZhbGlkYXRvcnMucGF0dGVybigvXlxcZHsxLDEwfSQvKX0sXG4gICAgICAgICAge25hbWU6ICdmYXhQYXR0ZXJuJywgdmFsaWRhdGlvbjogIFZhbGlkYXRvcnMucGF0dGVybigvXlxcZHsxLDMwfSQvKX0sXG4gICAgICAgICAge25hbWU6ICdpZnNjQ29kZScsIHZhbGlkYXRpb246IFZhbGlkYXRvcnMucGF0dGVybigvXlthLXpBLVowLTldezEsMTF9JC8pfSxcbiAgICAgICAgICB7bmFtZTogJ3BhdHRlcm4nLCB2YWxpZGF0aW9uOiBWYWxpZGF0b3JzLnBhdHRlcm4oL15bYS16QS1aMC05XFxzXFwtOlxcLyYuLCgpXSokLyl9LFxuICAgICAgICAgIHtuYW1lOiAncGhvbmVWYWxpZGF0aW9uJywgdmFsaWRhdGlvbjogcGhvbmVWYWxpZGF0aW9uIH0sXG4gICAgICAgICAge25hbWU6ICdzZWxlY3ROb3RBdmFpbFRpbk5vUGUnLCB2YWxpZGF0aW9uOiBzZWxlY3RWYWxpZGF0b3IgfSxcbiAgICAgICAgICB7bmFtZTogJ29ubHlUZW5EaWdpdHMnLCB2YWxpZGF0aW9uOiBWYWxpZGF0b3JzLnBhdHRlcm4oL15cXGR7MTB9JC8pfSxcbiAgICAgICAgICB7bmFtZTogJ3VkeWFtUGF0dGVybicsIHZhbGlkYXRpb246IFZhbGlkYXRvcnMucGF0dGVybigvXlVEWUFNLVtBLVpdezJ9LVxcZHsyfS1cXGR7N30kLyl9LFxuICAgICAgICAgIHtuYW1lOiAndW5pdHNQYXR0ZXJuJywgdmFsaWRhdGlvbjogVmFsaWRhdG9ycy5wYXR0ZXJuKC9eW0EtWmEtelxcc117MSwyMH0kLyl9LFxuICAgICAgICAgIHtuYW1lOiAnbm9ybWFsRW1haWwnLCB2YWxpZGF0aW9uOiBub3JtYWxFbWFpbFZhbGlkYXRvcn0sXG4gICAgICAgICAge25hbWU6ICd2YWxpZGF0ZVR3b0RlY2ltYWxzJywgdmFsaWRhdGlvbjogVmFsaWRhdG9ycy5wYXR0ZXJuKC9eXFxkKihcXC5cXGR7MSwyfSk/JC8pfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAncGVyY2VudGFnZVZhbGlkYXRpb24nLFxuICAgICAgICAgICAgdmFsaWRhdGlvbjogVmFsaWRhdG9ycy5wYXR0ZXJuKC9eKDEwMChcXC4wezEsMn0pP3woXFxkezEsMn0oXFwuXFxkezEsMn0pPykpJC8pLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3VybFZhbGlkaXR5JyxcbiAgICAgICAgICAgIHZhbGlkYXRpb246IFZhbGlkYXRvcnMucGF0dGVybigvXihodHRwcz86XFwvXFwvKT8oW2EtekEtWjAtOS1dK1xcLikrKGNvbXxvcmd8bmV0fGdvdnxlZHV8aW98Y298dWt8aW58YXV8ZGV8ZnJ8Y2F8anB8Y258cnV8YnJ8dXN8aW5mb3xiaXp8bWV8dGVjaHx4eXp8b25saW5lfHN0b3JlfGJsb2cpKDpcXGQrKT8oXFwvW15cXHNdKik/JC8pXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7bmFtZTogJ25waScsIHZhbGlkYXRpb246IG5waVZhbGlkYXRvcn0sXG4gICAgICAgICAge25hbWU6ICd0aW5PclNzbicsIHZhbGlkYXRpb246IHRpbk9yU3NuVmFsaWRhdG9yfSxcbiAgICAgICAgICB7bmFtZTogJ2VpbicsIHZhbGlkYXRpb246IGVpblZhbGlkYXRvcn0sXG4gICAgICAgICAge25hbWU6ICdzaWNWYWxpZGF0b3InLCB2YWxpZGF0aW9uOiBWYWxpZGF0b3JzLnBhdHRlcm4oL14oPyEwMDAwKVxcZHs0fSQvKX0sXG4gICAgICAgICAge25hbWU6ICd0aW5OdW1iZXInLCB2YWxpZGF0aW9uOiBWYWxpZGF0b3JzLnBhdHRlcm4oL15bYS16QS1aMC05XFxzLV17NSwyMH0kLyl9LFxuICAgICAgICAgIHtuYW1lOiAnZ3N0SHN0TnVtYmVyJywgdmFsaWRhdGlvbjogVmFsaWRhdG9ycy5wYXR0ZXJuKC9eW2EtekEtWjAtOV17MTV9JC8pfSxcbiAgICAgICAgICB7bmFtZTogJ3FzdE51bWJlcicsIHZhbGlkYXRpb246IFZhbGlkYXRvcnMucGF0dGVybigvXlthLXpBLVowLTldezl9JC8pfVxuICAgICAgICBdLFxuICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZXM6IFtcbiAgICAgICAgICB7bmFtZTogJ3Bob25lVmFsaWRhdGlvbicsIG1lc3NhZ2U6ICdJbnZhbGlkIG1vYmlsZSBudW1iZXIgZm9yIHRoZSBzZWxlY3RlZCBjb3VudHJ5LicgfSxcbiAgICAgICAgICB7bmFtZTogJ3NlbGVjdE5vdEF2YWlsVGluTm9QZScsIG1lc3NhZ2U6ICdTZWxlY3QgdGhlIGZpZWxkcyBub3QgYXZhaWxhYmxlIGluIFRJTiAvIE5vIFBFIGNlcnRpZmljYXRlIGlzIHJlcXVpcmVkJyB9LFxuICAgICAgICBdXG4gICAgICB9KSxcbiAgICBGb3JtbHlNYXRlcmlhbE1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUuZm9yUm9vdCh7XG4gICAgICAgICAgbG9hZGVyOiB7XG4gICAgICAgICAgICBwcm92aWRlOiBUcmFuc2xhdGVMb2FkZXIsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiBodHRwTG9hZGVyRmFjdG9yeSxcbiAgICAgICAgICAgIGRlcHM6IFtIdHRwQmFja2VuZCwgTU5MX1RSQU5TTEFUSU9OX1JFU09VUkNFXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICBGb3JtbHlNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIE1hdE5hdGl2ZURhdGVNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0RGF0ZXBpY2tlck1vZHVsZVxuICApLFxuICB7XG4gICAgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsXG4gICAgdXNlQ2xhc3M6IEN1c3RvbURhdGUsXG4gIH0sXG4gIHByb3ZpZGVIdHRwQ2xpZW50KClcbl07Il19