kwikid-forms 0.1.5 → 0.1.7
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 +43 -43
- package/bundles/kwikid-forms.umd.js +4286 -4224
- package/bundles/kwikid-forms.umd.js.map +1 -1
- package/esm2015/kwikid-forms.js +4 -4
- package/esm2015/lib/builder/builder.component.js +138 -138
- package/esm2015/lib/builder/builder.module.js +21 -21
- package/esm2015/lib/kwikid-forms.module.js +38 -38
- package/esm2015/lib/renderer/form-view/definitions/actions/form-view.actions.enum.definitions.js +20 -20
- package/esm2015/lib/renderer/form-view/definitions/actions/form-view.actions.type.definitions.js +2 -2
- package/esm2015/lib/renderer/form-view/definitions/apis/form-view.apis.enum.definitions.js +8 -8
- package/esm2015/lib/renderer/form-view/definitions/apis/form-view.apis.type.definitions.js +2 -2
- package/esm2015/lib/renderer/form-view/definitions/common/form-view.common.enum.definitions.js +101 -101
- package/esm2015/lib/renderer/form-view/definitions/common/form-view.common.type.definitions.js +2 -2
- package/esm2015/lib/renderer/form-view/definitions/fields/form-view.fields.enum.definitions.js +15 -15
- package/esm2015/lib/renderer/form-view/definitions/fields/form-view.fields.type.definitions.js +2 -2
- package/esm2015/lib/renderer/form-view/definitions/sources/form-view.sources.type.definitions.js +2 -2
- package/esm2015/lib/renderer/form-view/definitions/triggers/form-view.triggers.type.definitions.js +2 -2
- package/esm2015/lib/renderer/form-view/definitions/validations/form-view.validations.type.definitions.js +2 -2
- package/esm2015/lib/renderer/form-view/form-view.component.js +814 -814
- package/esm2015/lib/renderer/form-view/form-view.module.js +44 -44
- package/esm2015/lib/renderer/form-view/form-view.service.js +29 -29
- package/esm2015/lib/renderer/form-view/helpers/form-view.apis.helper.js +137 -137
- package/esm2015/lib/renderer/form-view/helpers/form-view.common.helper.js +136 -136
- package/esm2015/lib/renderer/form-view/helpers/form-view.defaults.helper.js +63 -63
- package/esm2015/lib/renderer/form-view/helpers/form-view.fields.helper.js +203 -203
- package/esm2015/lib/renderer/form-view/helpers/form-view.validations.helper.js +161 -161
- package/esm2015/lib/renderer/forms-list/forms-list.component.js +89 -89
- package/esm2015/lib/renderer/forms-list/forms-list.module.js +37 -37
- package/esm2015/lib/renderer/renderer.component.js +282 -278
- package/esm2015/lib/renderer/renderer.config-converter.helper.js +586 -586
- package/esm2015/lib/renderer/renderer.helper.js +50 -50
- package/esm2015/lib/renderer/renderer.module.js +50 -50
- package/esm2015/lib/renderer/renderer.service.js +172 -172
- package/esm2015/public_api.js +17 -17
- package/fesm2015/kwikid-forms.js +3031 -3027
- package/fesm2015/kwikid-forms.js.map +1 -1
- package/kwikid-forms.d.ts +5 -5
- package/lib/builder/builder.component.d.ts +68 -68
- package/lib/builder/builder.module.d.ts +10 -10
- package/lib/kwikid-forms.module.d.ts +10 -10
- package/lib/renderer/form-view/definitions/actions/form-view.actions.enum.definitions.d.ts +18 -18
- package/lib/renderer/form-view/definitions/actions/form-view.actions.type.definitions.d.ts +91 -91
- package/lib/renderer/form-view/definitions/apis/form-view.apis.enum.definitions.d.ts +6 -6
- package/lib/renderer/form-view/definitions/apis/form-view.apis.type.definitions.d.ts +40 -40
- package/lib/renderer/form-view/definitions/common/form-view.common.enum.definitions.d.ts +97 -97
- package/lib/renderer/form-view/definitions/common/form-view.common.type.definitions.d.ts +7 -7
- package/lib/renderer/form-view/definitions/fields/form-view.fields.enum.definitions.d.ts +13 -13
- package/lib/renderer/form-view/definitions/fields/form-view.fields.type.definitions.d.ts +136 -136
- package/lib/renderer/form-view/definitions/sources/form-view.sources.type.definitions.d.ts +16 -16
- package/lib/renderer/form-view/definitions/triggers/form-view.triggers.type.definitions.d.ts +1 -1
- package/lib/renderer/form-view/definitions/validations/form-view.validations.type.definitions.d.ts +16 -16
- package/lib/renderer/form-view/form-view.component.d.ts +80 -80
- package/lib/renderer/form-view/form-view.module.d.ts +12 -12
- package/lib/renderer/form-view/form-view.service.d.ts +5 -5
- package/lib/renderer/form-view/helpers/form-view.apis.helper.d.ts +17 -17
- package/lib/renderer/form-view/helpers/form-view.common.helper.d.ts +19 -19
- package/lib/renderer/form-view/helpers/form-view.defaults.helper.d.ts +10 -10
- package/lib/renderer/form-view/helpers/form-view.fields.helper.d.ts +24 -24
- package/lib/renderer/form-view/helpers/form-view.validations.helper.d.ts +25 -25
- package/lib/renderer/forms-list/forms-list.component.d.ts +22 -22
- package/lib/renderer/forms-list/forms-list.module.d.ts +11 -11
- package/lib/renderer/renderer.component.d.ts +36 -36
- package/lib/renderer/renderer.config-converter.helper.d.ts +7 -7
- package/lib/renderer/renderer.helper.d.ts +6 -6
- package/lib/renderer/renderer.module.d.ts +14 -14
- package/lib/renderer/renderer.service.d.ts +28 -28
- package/package.json +1 -1
- package/public_api.d.ts +9 -9
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
import jp from "jsonpath";
|
|
2
|
-
export const hasKey = (object, key) => {
|
|
3
|
-
return object.hasOwnProperty(key);
|
|
4
|
-
};
|
|
5
|
-
export const isEmpty = (value) => {
|
|
6
|
-
if (value === "" || value === undefined || value === null) {
|
|
7
|
-
return true;
|
|
8
|
-
}
|
|
9
|
-
else if (value &&
|
|
10
|
-
Object.keys(value).length === 0 &&
|
|
11
|
-
Object.getPrototypeOf(value) === Object.prototype) {
|
|
12
|
-
return true;
|
|
13
|
-
}
|
|
14
|
-
else if (Array.isArray(value)) {
|
|
15
|
-
if (value.length === 0) {
|
|
16
|
-
return true;
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
return false;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
export const isNotEmpty = (value) => {
|
|
27
|
-
return !isEmpty(value);
|
|
28
|
-
};
|
|
29
|
-
export const handleJPQueryResponse = (value) => {
|
|
30
|
-
/**
|
|
31
|
-
* jp.query doesn't always return an array with one element
|
|
32
|
-
* so directly can't access with [0], need to check conditionally
|
|
33
|
-
*/
|
|
34
|
-
if (Array.isArray(value)) {
|
|
35
|
-
if (value.length > 0) {
|
|
36
|
-
value = value[0];
|
|
37
|
-
}
|
|
38
|
-
else if (value.length === 0) {
|
|
39
|
-
value = "";
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return value;
|
|
43
|
-
};
|
|
44
|
-
export const jpQueryWrapper = (obj, key) => {
|
|
45
|
-
return handleJPQueryResponse(jp.query(obj, key));
|
|
46
|
-
};
|
|
47
|
-
export const isSingleForm = (formsList) => {
|
|
48
|
-
return formsList.length === 1;
|
|
49
|
-
};
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import jp from "jsonpath";
|
|
2
|
+
export const hasKey = (object, key) => {
|
|
3
|
+
return object.hasOwnProperty(key);
|
|
4
|
+
};
|
|
5
|
+
export const isEmpty = (value) => {
|
|
6
|
+
if (value === "" || value === undefined || value === null) {
|
|
7
|
+
return true;
|
|
8
|
+
}
|
|
9
|
+
else if (value &&
|
|
10
|
+
Object.keys(value).length === 0 &&
|
|
11
|
+
Object.getPrototypeOf(value) === Object.prototype) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
else if (Array.isArray(value)) {
|
|
15
|
+
if (value.length === 0) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
export const isNotEmpty = (value) => {
|
|
27
|
+
return !isEmpty(value);
|
|
28
|
+
};
|
|
29
|
+
export const handleJPQueryResponse = (value) => {
|
|
30
|
+
/**
|
|
31
|
+
* jp.query doesn't always return an array with one element
|
|
32
|
+
* so directly can't access with [0], need to check conditionally
|
|
33
|
+
*/
|
|
34
|
+
if (Array.isArray(value)) {
|
|
35
|
+
if (value.length > 0) {
|
|
36
|
+
value = value[0];
|
|
37
|
+
}
|
|
38
|
+
else if (value.length === 0) {
|
|
39
|
+
value = "";
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return value;
|
|
43
|
+
};
|
|
44
|
+
export const jpQueryWrapper = (obj, key) => {
|
|
45
|
+
return handleJPQueryResponse(jp.query(obj, key));
|
|
46
|
+
};
|
|
47
|
+
export const isSingleForm = (formsList) => {
|
|
48
|
+
return formsList.length === 1;
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvcmVuZGVyZXIuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUxQixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxNQUFXLEVBQUUsR0FBVyxFQUFXLEVBQUU7SUFDMUQsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQVUsRUFBVyxFQUFFO0lBQzdDLElBQUksS0FBSyxLQUFLLEVBQUUsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7UUFDekQsT0FBTyxJQUFJLENBQUM7S0FDYjtTQUFNLElBQ0wsS0FBSztRQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUM7UUFDL0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxNQUFNLENBQUMsU0FBUyxFQUNqRDtRQUNBLE9BQU8sSUFBSSxDQUFDO0tBQ2I7U0FBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDL0IsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN0QixPQUFPLElBQUksQ0FBQztTQUNiO2FBQU07WUFDTCxPQUFPLEtBQUssQ0FBQztTQUNkO0tBQ0Y7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRTtJQUN2QyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBVSxFQUFPLEVBQUU7SUFDdkQ7OztPQUdHO0lBQ0gsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3hCLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDcEIsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsQjthQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDN0IsS0FBSyxHQUFHLEVBQUUsQ0FBQztTQUNaO0tBQ0Y7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLEdBQVEsRUFBRSxHQUFXLEVBQVcsRUFBRTtJQUMvRCxPQUFPLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsU0FBZ0IsRUFBVyxFQUFFO0lBQ3hELE9BQU8sU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7QUFDaEMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHVpRGF5IH0gZnJvbSBcIkB0YWlnYS11aS9jZGtcIjtcbmltcG9ydCBqcCBmcm9tIFwianNvbnBhdGhcIjtcblxuZXhwb3J0IGNvbnN0IGhhc0tleSA9IChvYmplY3Q6IGFueSwga2V5OiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIG9iamVjdC5oYXNPd25Qcm9wZXJ0eShrZXkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRW1wdHkgPSAodmFsdWU6IGFueSk6IGJvb2xlYW4gPT4ge1xuICBpZiAodmFsdWUgPT09IFwiXCIgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKFxuICAgIHZhbHVlICYmXG4gICAgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMCAmJlxuICAgIE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSkgPT09IE9iamVjdC5wcm90b3R5cGVcbiAgKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAodmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBpc05vdEVtcHR5ID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuICFpc0VtcHR5KHZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVKUFF1ZXJ5UmVzcG9uc2UgPSAodmFsdWU6IGFueSk6IGFueSA9PiB7XG4gIC8qKlxuICAgKiBqcC5xdWVyeSBkb2Vzbid0IGFsd2F5cyByZXR1cm4gYW4gYXJyYXkgd2l0aCBvbmUgZWxlbWVudFxuICAgKiBzbyBkaXJlY3RseSBjYW4ndCBhY2Nlc3Mgd2l0aCBbMF0sIG5lZWQgdG8gY2hlY2sgY29uZGl0aW9uYWxseVxuICAgKi9cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgaWYgKHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhbHVlID0gdmFsdWVbMF07XG4gICAgfSBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHZhbHVlID0gXCJcIjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59O1xuXG5leHBvcnQgY29uc3QganBRdWVyeVdyYXBwZXIgPSAob2JqOiBhbnksIGtleTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiBoYW5kbGVKUFF1ZXJ5UmVzcG9uc2UoanAucXVlcnkob2JqLCBrZXkpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1NpbmdsZUZvcm0gPSAoZm9ybXNMaXN0OiBhbnlbXSk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gZm9ybXNMaXN0Lmxlbmd0aCA9PT0gMTtcbn07XG4iXX0=
|
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
import { CommonModule } from "@angular/common";
|
|
2
|
-
import { HttpClientModule } from "@angular/common/http";
|
|
3
|
-
import { NgModule } from "@angular/core";
|
|
4
|
-
import { TuiLoaderModule, TuiSvgModule } from "@taiga-ui/core";
|
|
5
|
-
import { TuiPushModule } from "@taiga-ui/kit";
|
|
6
|
-
import { KwikUIModule } from "kwikui";
|
|
7
|
-
import { KwikIDFormViewModule } from "./form-view/form-view.module";
|
|
8
|
-
import { KwikIDFormsListModule } from "./forms-list/forms-list.module";
|
|
9
|
-
import { KwikIDFormsRendererComponent } from "./renderer.component";
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
export class KwikIDFormRendererModule {
|
|
12
|
-
}
|
|
13
|
-
/** @nocollapse */ KwikIDFormRendererModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
14
|
-
/** @nocollapse */ KwikIDFormRendererModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.
|
|
15
|
-
HttpClientModule,
|
|
16
|
-
KwikIDFormViewModule,
|
|
17
|
-
KwikIDFormsListModule,
|
|
18
|
-
KwikUIModule,
|
|
19
|
-
TuiLoaderModule,
|
|
20
|
-
TuiPushModule,
|
|
21
|
-
TuiSvgModule], exports: [KwikIDFormsRendererComponent] });
|
|
22
|
-
/** @nocollapse */ KwikIDFormRendererModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.
|
|
23
|
-
CommonModule,
|
|
24
|
-
HttpClientModule,
|
|
25
|
-
KwikIDFormViewModule,
|
|
26
|
-
KwikIDFormsListModule,
|
|
27
|
-
KwikUIModule,
|
|
28
|
-
TuiLoaderModule,
|
|
29
|
-
TuiPushModule,
|
|
30
|
-
TuiSvgModule
|
|
31
|
-
]] });
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
33
|
-
type: NgModule,
|
|
34
|
-
args: [{
|
|
35
|
-
declarations: [KwikIDFormsRendererComponent],
|
|
36
|
-
imports: [
|
|
37
|
-
CommonModule,
|
|
38
|
-
HttpClientModule,
|
|
39
|
-
KwikIDFormViewModule,
|
|
40
|
-
KwikIDFormsListModule,
|
|
41
|
-
KwikUIModule,
|
|
42
|
-
TuiLoaderModule,
|
|
43
|
-
TuiPushModule,
|
|
44
|
-
TuiSvgModule
|
|
45
|
-
],
|
|
46
|
-
providers: [],
|
|
47
|
-
exports: [KwikIDFormsRendererComponent]
|
|
48
|
-
}]
|
|
49
|
-
}] });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { CommonModule } from "@angular/common";
|
|
2
|
+
import { HttpClientModule } from "@angular/common/http";
|
|
3
|
+
import { NgModule } from "@angular/core";
|
|
4
|
+
import { TuiLoaderModule, TuiSvgModule } from "@taiga-ui/core";
|
|
5
|
+
import { TuiPushModule } from "@taiga-ui/kit";
|
|
6
|
+
import { KwikUIModule } from "kwikui";
|
|
7
|
+
import { KwikIDFormViewModule } from "./form-view/form-view.module";
|
|
8
|
+
import { KwikIDFormsListModule } from "./forms-list/forms-list.module";
|
|
9
|
+
import { KwikIDFormsRendererComponent } from "./renderer.component";
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
export class KwikIDFormRendererModule {
|
|
12
|
+
}
|
|
13
|
+
/** @nocollapse */ KwikIDFormRendererModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormRendererModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
14
|
+
/** @nocollapse */ KwikIDFormRendererModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormRendererModule, declarations: [KwikIDFormsRendererComponent], imports: [CommonModule,
|
|
15
|
+
HttpClientModule,
|
|
16
|
+
KwikIDFormViewModule,
|
|
17
|
+
KwikIDFormsListModule,
|
|
18
|
+
KwikUIModule,
|
|
19
|
+
TuiLoaderModule,
|
|
20
|
+
TuiPushModule,
|
|
21
|
+
TuiSvgModule], exports: [KwikIDFormsRendererComponent] });
|
|
22
|
+
/** @nocollapse */ KwikIDFormRendererModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormRendererModule, providers: [], imports: [[
|
|
23
|
+
CommonModule,
|
|
24
|
+
HttpClientModule,
|
|
25
|
+
KwikIDFormViewModule,
|
|
26
|
+
KwikIDFormsListModule,
|
|
27
|
+
KwikUIModule,
|
|
28
|
+
TuiLoaderModule,
|
|
29
|
+
TuiPushModule,
|
|
30
|
+
TuiSvgModule
|
|
31
|
+
]] });
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormRendererModule, decorators: [{
|
|
33
|
+
type: NgModule,
|
|
34
|
+
args: [{
|
|
35
|
+
declarations: [KwikIDFormsRendererComponent],
|
|
36
|
+
imports: [
|
|
37
|
+
CommonModule,
|
|
38
|
+
HttpClientModule,
|
|
39
|
+
KwikIDFormViewModule,
|
|
40
|
+
KwikIDFormsListModule,
|
|
41
|
+
KwikUIModule,
|
|
42
|
+
TuiLoaderModule,
|
|
43
|
+
TuiPushModule,
|
|
44
|
+
TuiSvgModule
|
|
45
|
+
],
|
|
46
|
+
providers: [],
|
|
47
|
+
exports: [KwikIDFormsRendererComponent]
|
|
48
|
+
}]
|
|
49
|
+
}] });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvcmVuZGVyZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQWlCcEUsTUFBTSxPQUFPLHdCQUF3Qjs7eUlBQXhCLHdCQUF3QjswSUFBeEIsd0JBQXdCLGlCQWRwQiw0QkFBNEIsYUFFekMsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixvQkFBb0I7UUFDcEIscUJBQXFCO1FBQ3JCLFlBQVk7UUFDWixlQUFlO1FBQ2YsYUFBYTtRQUNiLFlBQVksYUFHSiw0QkFBNEI7MElBRTNCLHdCQUF3QixhQUh4QixFQUFFLFlBVko7WUFDUCxZQUFZO1lBQ1osZ0JBQWdCO1lBQ2hCLG9CQUFvQjtZQUNwQixxQkFBcUI7WUFDckIsWUFBWTtZQUNaLGVBQWU7WUFDZixhQUFhO1lBQ2IsWUFBWTtTQUNiOzRGQUlVLHdCQUF3QjtrQkFmcEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztvQkFDNUMsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLHFCQUFxQjt3QkFDckIsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsWUFBWTtxQkFDYjtvQkFDRCxTQUFTLEVBQUUsRUFBRTtvQkFDYixPQUFPLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztpQkFDeEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBUdWlMb2FkZXJNb2R1bGUsIFR1aVN2Z01vZHVsZSB9IGZyb20gXCJAdGFpZ2EtdWkvY29yZVwiO1xuaW1wb3J0IHsgVHVpUHVzaE1vZHVsZSB9IGZyb20gXCJAdGFpZ2EtdWkva2l0XCI7XG5pbXBvcnQgeyBLd2lrVUlNb2R1bGUgfSBmcm9tIFwia3dpa3VpXCI7XG5pbXBvcnQgeyBLd2lrSURGb3JtVmlld01vZHVsZSB9IGZyb20gXCIuL2Zvcm0tdmlldy9mb3JtLXZpZXcubW9kdWxlXCI7XG5pbXBvcnQgeyBLd2lrSURGb3Jtc0xpc3RNb2R1bGUgfSBmcm9tIFwiLi9mb3Jtcy1saXN0L2Zvcm1zLWxpc3QubW9kdWxlXCI7XG5pbXBvcnQgeyBLd2lrSURGb3Jtc1JlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSBcIi4vcmVuZGVyZXIuY29tcG9uZW50XCI7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0t3aWtJREZvcm1zUmVuZGVyZXJDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEh0dHBDbGllbnRNb2R1bGUsXG4gICAgS3dpa0lERm9ybVZpZXdNb2R1bGUsXG4gICAgS3dpa0lERm9ybXNMaXN0TW9kdWxlLFxuICAgIEt3aWtVSU1vZHVsZSxcbiAgICBUdWlMb2FkZXJNb2R1bGUsXG4gICAgVHVpUHVzaE1vZHVsZSxcbiAgICBUdWlTdmdNb2R1bGVcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXSxcbiAgZXhwb3J0czogW0t3aWtJREZvcm1zUmVuZGVyZXJDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIEt3aWtJREZvcm1SZW5kZXJlck1vZHVsZSB7fVxuIl19
|
|
@@ -1,172 +1,172 @@
|
|
|
1
|
-
import { __awaiter, __decorate } from "tslib";
|
|
2
|
-
import { Injectable } from "@angular/core";
|
|
3
|
-
import { logMethod, checkObjectKeyExists, } from "kwikid-toolkit";
|
|
4
|
-
import { setValueToObject } from "./form-view/helpers/form-view.common.helper";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class KwikIDRendererService {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.isMobileView = false;
|
|
9
|
-
this.allFormsData = {};
|
|
10
|
-
}
|
|
11
|
-
setIsMobileView(isMobileView) {
|
|
12
|
-
this.isMobileView = isMobileView;
|
|
13
|
-
}
|
|
14
|
-
setFormsList(formsList) {
|
|
15
|
-
this.formsList = formsList;
|
|
16
|
-
}
|
|
17
|
-
setFormsListCompleted(formsListCompleted) {
|
|
18
|
-
this.formsListCompleted = formsListCompleted;
|
|
19
|
-
}
|
|
20
|
-
setAllFormsData(allFormsData) {
|
|
21
|
-
this.allFormsData = allFormsData;
|
|
22
|
-
}
|
|
23
|
-
setActiveFormConfig(activeFormConfig) {
|
|
24
|
-
this.activeFormConfig = activeFormConfig;
|
|
25
|
-
}
|
|
26
|
-
setActiveFormFields(activeFormFields) {
|
|
27
|
-
this.activeFormFields = activeFormFields;
|
|
28
|
-
}
|
|
29
|
-
setActiveFormData(activeFormData) {
|
|
30
|
-
this.activeFormData = activeFormData;
|
|
31
|
-
}
|
|
32
|
-
fetchFormConfig(url) {
|
|
33
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
-
const response = yield fetch(url, { method: "GET" });
|
|
35
|
-
const data = yield response.json();
|
|
36
|
-
return data;
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
findActiveFormConfig(formsList) {
|
|
40
|
-
const activeFormConfig = formsList.find((form) => {
|
|
41
|
-
return form.status === "editable" && !form.disabled;
|
|
42
|
-
});
|
|
43
|
-
return activeFormConfig;
|
|
44
|
-
}
|
|
45
|
-
findCompletedFormsList(allFormsData) {
|
|
46
|
-
let formsListCompleted = [];
|
|
47
|
-
Object.keys(allFormsData).map((formKey) => {
|
|
48
|
-
formsListCompleted.push(formKey);
|
|
49
|
-
});
|
|
50
|
-
return formsListCompleted;
|
|
51
|
-
}
|
|
52
|
-
markFormInFormsListAsCompleted(formsList, formsListCompleted) {
|
|
53
|
-
for (let form of formsList) {
|
|
54
|
-
if (formsListCompleted.includes(form.key)) {
|
|
55
|
-
console.log(formsListCompleted.includes(form.key));
|
|
56
|
-
form = setValueToObject(form, "status", "completed");
|
|
57
|
-
form = setValueToObject(form, "disabled", false);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return formsList;
|
|
61
|
-
}
|
|
62
|
-
markFormInFormsListAsDisabled(formsList, formsListCompleted) {
|
|
63
|
-
for (let form of formsList) {
|
|
64
|
-
if (form.status !== "completed") {
|
|
65
|
-
if (checkObjectKeyExists(form, "dependentOn")) {
|
|
66
|
-
const isDependent = form.dependentOn.every((r) => formsListCompleted.includes(r));
|
|
67
|
-
if (isDependent) {
|
|
68
|
-
form = setValueToObject(form, "status", "editable");
|
|
69
|
-
form = setValueToObject(form, "disabled", false);
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
form = setValueToObject(form, "status", "locked");
|
|
73
|
-
form = setValueToObject(form, "disabled", true);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
form = setValueToObject(form, "dependentOn", []);
|
|
78
|
-
form = setValueToObject(form, "status", "editable");
|
|
79
|
-
form = setValueToObject(form, "disabled", false);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return formsList;
|
|
84
|
-
}
|
|
85
|
-
assignSequenceNoToForm(formsList) {
|
|
86
|
-
let sequenceNo = 1;
|
|
87
|
-
for (let form of formsList) {
|
|
88
|
-
form.sequenceNo = sequenceNo++;
|
|
89
|
-
}
|
|
90
|
-
return formsList;
|
|
91
|
-
}
|
|
92
|
-
filterAllFormsData(allFormsData, formsList) {
|
|
93
|
-
let currentUserFormAllFormsData = {};
|
|
94
|
-
for (let form of formsList) {
|
|
95
|
-
if (checkObjectKeyExists(allFormsData, form.key)) {
|
|
96
|
-
currentUserFormAllFormsData = Object.assign(Object.assign({}, currentUserFormAllFormsData), { [form.key]: allFormsData[form.key] });
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return currentUserFormAllFormsData;
|
|
100
|
-
}
|
|
101
|
-
updateFormsList() {
|
|
102
|
-
let formsList = this.formsList;
|
|
103
|
-
let formsListCompleted;
|
|
104
|
-
let activeFormConfig;
|
|
105
|
-
formsList = this.assignSequenceNoToForm(formsList);
|
|
106
|
-
/**
|
|
107
|
-
* Below code identifies the allFormsData required for the current User Form.
|
|
108
|
-
* Why? Because allFormsData will actually contain the whole journey's all
|
|
109
|
-
* possible User Form steps. So, it is important to set the form data which
|
|
110
|
-
* this particular User Form only has to LOCAL METHOD Variable.
|
|
111
|
-
*/
|
|
112
|
-
const currentUserFormAllFormsData = this.filterAllFormsData(this.allFormsData, formsList);
|
|
113
|
-
console.log(JSON.parse(JSON.stringify(formsList)));
|
|
114
|
-
formsListCompleted = this.findCompletedFormsList(currentUserFormAllFormsData);
|
|
115
|
-
formsList = this.markFormInFormsListAsCompleted(formsList, formsListCompleted);
|
|
116
|
-
formsList = this.markFormInFormsListAsDisabled(formsList, formsListCompleted);
|
|
117
|
-
if (formsList.length !== formsListCompleted.length) {
|
|
118
|
-
activeFormConfig = this.findActiveFormConfig(formsList);
|
|
119
|
-
this.setActiveFormConfig(activeFormConfig);
|
|
120
|
-
}
|
|
121
|
-
this.setFormsList(formsList);
|
|
122
|
-
this.setFormsListCompleted(formsListCompleted);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
/** @nocollapse */ KwikIDRendererService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
126
|
-
/** @nocollapse */ KwikIDRendererService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
127
|
-
__decorate([
|
|
128
|
-
logMethod
|
|
129
|
-
], KwikIDRendererService.prototype, "setFormsList", null);
|
|
130
|
-
__decorate([
|
|
131
|
-
logMethod
|
|
132
|
-
], KwikIDRendererService.prototype, "setFormsListCompleted", null);
|
|
133
|
-
__decorate([
|
|
134
|
-
logMethod
|
|
135
|
-
], KwikIDRendererService.prototype, "setAllFormsData", null);
|
|
136
|
-
__decorate([
|
|
137
|
-
logMethod
|
|
138
|
-
], KwikIDRendererService.prototype, "setActiveFormConfig", null);
|
|
139
|
-
__decorate([
|
|
140
|
-
logMethod
|
|
141
|
-
], KwikIDRendererService.prototype, "setActiveFormFields", null);
|
|
142
|
-
__decorate([
|
|
143
|
-
logMethod
|
|
144
|
-
], KwikIDRendererService.prototype, "setActiveFormData", null);
|
|
145
|
-
__decorate([
|
|
146
|
-
logMethod
|
|
147
|
-
], KwikIDRendererService.prototype, "findActiveFormConfig", null);
|
|
148
|
-
__decorate([
|
|
149
|
-
logMethod
|
|
150
|
-
], KwikIDRendererService.prototype, "findCompletedFormsList", null);
|
|
151
|
-
__decorate([
|
|
152
|
-
logMethod
|
|
153
|
-
], KwikIDRendererService.prototype, "markFormInFormsListAsCompleted", null);
|
|
154
|
-
__decorate([
|
|
155
|
-
logMethod
|
|
156
|
-
], KwikIDRendererService.prototype, "markFormInFormsListAsDisabled", null);
|
|
157
|
-
__decorate([
|
|
158
|
-
logMethod
|
|
159
|
-
], KwikIDRendererService.prototype, "assignSequenceNoToForm", null);
|
|
160
|
-
__decorate([
|
|
161
|
-
logMethod
|
|
162
|
-
], KwikIDRendererService.prototype, "filterAllFormsData", null);
|
|
163
|
-
__decorate([
|
|
164
|
-
logMethod
|
|
165
|
-
], KwikIDRendererService.prototype, "updateFormsList", null);
|
|
166
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
167
|
-
type: Injectable,
|
|
168
|
-
args: [{
|
|
169
|
-
providedIn: "root"
|
|
170
|
-
}]
|
|
171
|
-
}], ctorParameters: function () { return []; }, propDecorators: { setFormsList: [], setFormsListCompleted: [], setAllFormsData: [], setActiveFormConfig: [], setActiveFormFields: [], setActiveFormData: [], findActiveFormConfig: [], findCompletedFormsList: [], markFormInFormsListAsCompleted: [], markFormInFormsListAsDisabled: [], assignSequenceNoToForm: [], filterAllFormsData: [], updateFormsList: [] } });
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL3JlbmRlcmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxvQkFBb0IsR0FDckIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7QUFLL0UsTUFBTSxPQUFPLHFCQUFxQjtJQTBDaEM7UUF6Q0EsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFpQnJCLGlCQUFZLEdBQVEsRUFBRSxDQUFDO0lBd0JSLENBQUM7SUF4Q2hCLGVBQWUsQ0FBQyxZQUFxQjtRQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUNuQyxDQUFDO0lBSUQsWUFBWSxDQUFDLFNBQWdCO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFJRCxxQkFBcUIsQ0FBQyxrQkFBeUI7UUFDN0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO0lBQy9DLENBQUM7SUFJRCxlQUFlLENBQUMsWUFBbUI7UUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbkMsQ0FBQztJQUlELG1CQUFtQixDQUFDLGdCQUFxQjtRQUN2QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7SUFDM0MsQ0FBQztJQUlELG1CQUFtQixDQUFDLGdCQUF1QjtRQUN6QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7SUFDM0MsQ0FBQztJQUlELGlCQUFpQixDQUFDLGNBQW1CO1FBQ25DLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO0lB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N0Isc0JBQXNCLE1BVXRCLGtCQUFrQixNQWdCbEIsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gIGxvZ01ldGhvZCxcclxuICBjaGVja09iamVjdEtleUV4aXN0cyxcclxufSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcclxuaW1wb3J0IHsgc2V0VmFsdWVUb09iamVjdCB9IGZyb20gXCIuL2Zvcm0tdmlldy9oZWxwZXJzL2Zvcm0tdmlldy5jb21tb24uaGVscGVyXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogXCJyb290XCJcclxufSlcclxuZXhwb3J0IGNsYXNzIEt3aWtJRFJlbmRlcmVyU2VydmljZSB7XHJcbiAgaXNNb2JpbGVWaWV3ID0gZmFsc2U7XHJcbiAgc2V0SXNNb2JpbGVWaWV3KGlzTW9iaWxlVmlldzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5pc01vYmlsZVZpZXcgPSBpc01vYmlsZVZpZXc7XHJcbiAgfVxyXG5cclxuICBmb3Jtc0xpc3Q6IGFueVtdO1xyXG4gIEBsb2dNZXRob2RcclxuICBzZXRGb3Jtc0xpc3QoZm9ybXNMaXN0OiBhbnlbXSkge1xyXG4gICAgdGhpcy5mb3Jtc0xpc3QgPSBmb3Jtc0xpc3Q7XHJcbiAgfVxyXG5cclxuICBmb3Jtc0xpc3RDb21wbGV0ZWQ6IHN0cmluZ1tdO1xyXG4gIEBsb2dNZXRob2RcclxuICBzZXRGb3Jtc0xpc3RDb21wbGV0ZWQoZm9ybXNMaXN0Q29tcGxldGVkOiBhbnlbXSkge1xyXG4gICAgdGhpcy5mb3Jtc0xpc3RDb21wbGV0ZWQgPSBmb3Jtc0xpc3RDb21wbGV0ZWQ7XHJcbiAgfVxyXG5cclxuICBhbGxGb3Jtc0RhdGE6IGFueSA9IHt9O1xyXG4gIEBsb2dNZXRob2RcclxuICBzZXRBbGxGb3Jtc0RhdGEoYWxsRm9ybXNEYXRhOiBhbnlbXSkge1xyXG4gICAgdGhpcy5hbGxGb3Jtc0RhdGEgPSBhbGxGb3Jtc0RhdGE7XHJcbiAgfVxyXG5cclxuICBhY3RpdmVGb3JtQ29uZmlnOiBhbnk7XHJcbiAgQGxvZ01ldGhvZFxyXG4gIHNldEFjdGl2ZUZvcm1Db25maWcoYWN0aXZlRm9ybUNvbmZpZzogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZUZvcm1Db25maWcgPSBhY3RpdmVGb3JtQ29uZmlnO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZlRm9ybUZpZWxkczogYW55W107XHJcbiAgQGxvZ01ldGhvZFxyXG4gIHNldEFjdGl2ZUZvcm1GaWVsZHMoYWN0aXZlRm9ybUZpZWxkczogYW55W10pIHtcclxuICAgIHRoaXMuYWN0aXZlRm9ybUZpZWxkcyA9IGFjdGl2ZUZvcm1GaWVsZHM7XHJcbiAgfVxyXG5cclxuICBhY3RpdmVGb3JtRGF0YTogYW55O1xyXG4gIEBsb2dNZXRob2RcclxuICBzZXRBY3RpdmVGb3JtRGF0YShhY3RpdmVGb3JtRGF0YTogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZUZvcm1EYXRhID0gYWN0aXZlRm9ybURhdGE7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIGFzeW5jIGZldGNoRm9ybUNvbmZpZyh1cmw6IHN0cmluZykge1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIHsgbWV0aG9kOiBcIkdFVFwiIH0pO1xyXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgQGxvZ01ldGhvZFxyXG4gIGZpbmRBY3RpdmVGb3JtQ29uZmlnKGZvcm1zTGlzdDogYW55W10pOiBhbnkge1xyXG4gICAgY29uc3QgYWN0aXZlRm9ybUNvbmZpZyA9IGZvcm1zTGlzdC5maW5kKChmb3JtKSA9PiB7XHJcbiAgICAgIHJldHVybiBmb3JtLnN0YXR1cyA9PT0gXCJlZGl0YWJsZVwiICYmICFmb3JtLmRpc2FibGVkO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gYWN0aXZlRm9ybUNvbmZpZztcclxuICB9XHJcblxyXG4gIEBsb2dNZXRob2RcclxuICBmaW5kQ29tcGxldGVkRm9ybXNMaXN0KGFsbEZvcm1zRGF0YTogYW55KTogc3RyaW5nW10ge1xyXG4gICAgbGV0IGZvcm1zTGlzdENvbXBsZXRlZDogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBPYmplY3Qua2V5cyhhbGxGb3Jtc0RhdGEpLm1hcCgoZm9ybUtleSkgPT4ge1xyXG4gICAgICBmb3Jtc0xpc3RDb21wbGV0ZWQucHVzaChmb3JtS2V5KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmb3Jtc0xpc3RDb21wbGV0ZWQ7XHJcbiAgfVxyXG5cclxuICBAbG9nTWV0aG9kXHJcbiAgbWFya0Zvcm1JbkZvcm1zTGlzdEFzQ29tcGxldGVkKFxyXG4gICAgZm9ybXNMaXN0OiBhbnlbXSxcclxuICAgIGZvcm1zTGlzdENvbXBsZXRlZDogc3RyaW5nW11cclxuICApOiBhbnlbXSB7XHJcbiAgICBmb3IgKGxldCBmb3JtIG9mIGZvcm1zTGlzdCkge1xyXG4gICAgICBpZiAoZm9ybXNMaXN0Q29tcGxldGVkLmluY2x1ZGVzKGZvcm0ua2V5KSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGZvcm1zTGlzdENvbXBsZXRlZC5pbmNsdWRlcyhmb3JtLmtleSkpO1xyXG5cclxuICAgICAgICBmb3JtID0gc2V0VmFsdWVUb09iamVjdChmb3JtLCBcInN0YXR1c1wiLCBcImNvbXBsZXRlZFwiKTtcclxuICAgICAgICBmb3JtID0gc2V0VmFsdWVUb09iamVjdChmb3JtLCBcImRpc2FibGVkXCIsIGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmb3Jtc0xpc3Q7XHJcbiAgfVxyXG5cclxuICBAbG9nTWV0aG9kXHJcbiAgbWFya0Zvcm1JbkZvcm1zTGlzdEFzRGlzYWJsZWQoXHJcbiAgICBmb3Jtc0xpc3Q6IGFueVtdLFxyXG4gICAgZm9ybXNMaXN0Q29tcGxldGVkOiBzdHJpbmdbXVxyXG4gICk6IGFueVtdIHtcclxuICAgIGZvciAobGV0IGZvcm0gb2YgZm9ybXNMaXN0KSB7XHJcbiAgICAgIGlmIChmb3JtLnN0YXR1cyAhPT0gXCJjb21wbGV0ZWRcIikge1xyXG4gICAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtLCBcImRlcGVuZGVudE9uXCIpKSB7XHJcbiAgICAgICAgICBjb25zdCBpc0RlcGVuZGVudCA9IGZvcm0uZGVwZW5kZW50T24uZXZlcnkoKHI6IHN0cmluZykgPT5cclxuICAgICAgICAgICAgZm9ybXNMaXN0Q29tcGxldGVkLmluY2x1ZGVzKHIpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKGlzRGVwZW5kZW50KSB7XHJcbiAgICAgICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0KGZvcm0sIFwic3RhdHVzXCIsIFwiZWRpdGFibGVcIik7XHJcbiAgICAgICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0KGZvcm0sIFwiZGlzYWJsZWRcIiwgZmFsc2UpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZm9ybSA9IHNldFZhbHVlVG9PYmplY3QoZm9ybSwgXCJzdGF0dXNcIiwgXCJsb2NrZWRcIik7XHJcbiAgICAgICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0KGZvcm0sIFwiZGlzYWJsZWRcIiwgdHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0KGZvcm0sIFwiZGVwZW5kZW50T25cIiwgW10pO1xyXG4gICAgICAgICAgZm9ybSA9IHNldFZhbHVlVG9PYmplY3QoZm9ybSwgXCJzdGF0dXNcIiwgXCJlZGl0YWJsZVwiKTtcclxuICAgICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0KGZvcm0sIFwiZGlzYWJsZWRcIiwgZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmb3Jtc0xpc3Q7XHJcbiAgfVxyXG5cclxuICBAbG9nTWV0aG9kXHJcbiAgYXNzaWduU2VxdWVuY2VOb1RvRm9ybShmb3Jtc0xpc3Q6IGFueVtdKTogYW55W10ge1xyXG4gICAgbGV0IHNlcXVlbmNlTm8gPSAxO1xyXG4gICAgZm9yIChsZXQgZm9ybSBvZiBmb3Jtc0xpc3QpIHtcclxuICAgICAgZm9ybS5zZXF1ZW5jZU5vID0gc2VxdWVuY2VObysrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmb3Jtc0xpc3Q7XHJcbiAgfVxyXG5cclxuICBAbG9nTWV0aG9kXHJcbiAgZmlsdGVyQWxsRm9ybXNEYXRhKGFsbEZvcm1zRGF0YTogYW55LCBmb3Jtc0xpc3Q6IGFueVtdKTogYW55IHtcclxuICAgIGxldCBjdXJyZW50VXNlckZvcm1BbGxGb3Jtc0RhdGE6IGFueSA9IHt9O1xyXG5cclxuICAgIGZvciAobGV0IGZvcm0gb2YgZm9ybXNMaXN0KSB7XHJcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhhbGxGb3Jtc0RhdGEsIGZvcm0ua2V5KSkge1xyXG4gICAgICAgIGN1cnJlbnRVc2VyRm9ybUFsbEZvcm1zRGF0YSA9IHtcclxuICAgICAgICAgIC4uLmN1cnJlbnRVc2VyRm9ybUFsbEZvcm1zRGF0YSxcclxuICAgICAgICAgIFtmb3JtLmtleV06IGFsbEZvcm1zRGF0YVtmb3JtLmtleV1cclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGN1cnJlbnRVc2VyRm9ybUFsbEZvcm1zRGF0YTtcclxuICB9XHJcblxyXG4gIEBsb2dNZXRob2RcclxuICB1cGRhdGVGb3Jtc0xpc3QoKSB7XHJcbiAgICBsZXQgZm9ybXNMaXN0OiBhbnlbXSA9IHRoaXMuZm9ybXNMaXN0O1xyXG4gICAgbGV0IGZvcm1zTGlzdENvbXBsZXRlZDogc3RyaW5nW107XHJcbiAgICBsZXQgYWN0aXZlRm9ybUNvbmZpZzogYW55O1xyXG5cclxuICAgIGZvcm1zTGlzdCA9IHRoaXMuYXNzaWduU2VxdWVuY2VOb1RvRm9ybShmb3Jtc0xpc3QpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQmVsb3cgY29kZSBpZGVudGlmaWVzIHRoZSBhbGxGb3Jtc0RhdGEgcmVxdWlyZWQgZm9yIHRoZSBjdXJyZW50IFVzZXIgRm9ybS5cclxuICAgICAqIFdoeT8gQmVjYXVzZSBhbGxGb3Jtc0RhdGEgd2lsbCBhY3R1YWxseSBjb250YWluIHRoZSB3aG9sZSBqb3VybmV5J3MgYWxsXHJcbiAgICAgKiBwb3NzaWJsZSBVc2VyIEZvcm0gc3RlcHMuIFNvLCBpdCBpcyBpbXBvcnRhbnQgdG8gc2V0IHRoZSBmb3JtIGRhdGEgd2hpY2hcclxuICAgICAqIHRoaXMgcGFydGljdWxhciBVc2VyIEZvcm0gb25seSBoYXMgdG8gTE9DQUwgTUVUSE9EIFZhcmlhYmxlLlxyXG4gICAgICovXHJcbiAgICBjb25zdCBjdXJyZW50VXNlckZvcm1BbGxGb3Jtc0RhdGEgPSB0aGlzLmZpbHRlckFsbEZvcm1zRGF0YShcclxuICAgICAgdGhpcy5hbGxGb3Jtc0RhdGEsXHJcbiAgICAgIGZvcm1zTGlzdFxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGZvcm1zTGlzdCkpKTtcclxuXHJcbiAgICBmb3Jtc0xpc3RDb21wbGV0ZWQgPSB0aGlzLmZpbmRDb21wbGV0ZWRGb3Jtc0xpc3QoXHJcbiAgICAgIGN1cnJlbnRVc2VyRm9ybUFsbEZvcm1zRGF0YVxyXG4gICAgKTtcclxuXHJcbiAgICBmb3Jtc0xpc3QgPSB0aGlzLm1hcmtGb3JtSW5Gb3Jtc0xpc3RBc0NvbXBsZXRlZChcclxuICAgICAgZm9ybXNMaXN0LFxyXG4gICAgICBmb3Jtc0xpc3RDb21wbGV0ZWRcclxuICAgICk7XHJcblxyXG4gICAgZm9ybXNMaXN0ID0gdGhpcy5tYXJrRm9ybUluRm9ybXNMaXN0QXNEaXNhYmxlZChcclxuICAgICAgZm9ybXNMaXN0LFxyXG4gICAgICBmb3Jtc0xpc3RDb21wbGV0ZWRcclxuICAgICk7XHJcblxyXG4gICAgaWYgKGZvcm1zTGlzdC5sZW5ndGggIT09IGZvcm1zTGlzdENvbXBsZXRlZC5sZW5ndGgpIHtcclxuICAgICAgYWN0aXZlRm9ybUNvbmZpZyA9IHRoaXMuZmluZEFjdGl2ZUZvcm1Db25maWcoZm9ybXNMaXN0KTtcclxuXHJcbiAgICAgIHRoaXMuc2V0QWN0aXZlRm9ybUNvbmZpZyhhY3RpdmVGb3JtQ29uZmlnKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNldEZvcm1zTGlzdChmb3Jtc0xpc3QpO1xyXG4gICAgdGhpcy5zZXRGb3Jtc0xpc3RDb21wbGV0ZWQoZm9ybXNMaXN0Q29tcGxldGVkKTtcclxuICB9XHJcbn1cclxuIl19
|
|
1
|
+
import { __awaiter, __decorate } from "tslib";
|
|
2
|
+
import { Injectable } from "@angular/core";
|
|
3
|
+
import { logMethod, checkObjectKeyExists, } from "kwikid-toolkit";
|
|
4
|
+
import { setValueToObject } from "./form-view/helpers/form-view.common.helper";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class KwikIDRendererService {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.isMobileView = false;
|
|
9
|
+
this.allFormsData = {};
|
|
10
|
+
}
|
|
11
|
+
setIsMobileView(isMobileView) {
|
|
12
|
+
this.isMobileView = isMobileView;
|
|
13
|
+
}
|
|
14
|
+
setFormsList(formsList) {
|
|
15
|
+
this.formsList = formsList;
|
|
16
|
+
}
|
|
17
|
+
setFormsListCompleted(formsListCompleted) {
|
|
18
|
+
this.formsListCompleted = formsListCompleted;
|
|
19
|
+
}
|
|
20
|
+
setAllFormsData(allFormsData) {
|
|
21
|
+
this.allFormsData = allFormsData;
|
|
22
|
+
}
|
|
23
|
+
setActiveFormConfig(activeFormConfig) {
|
|
24
|
+
this.activeFormConfig = activeFormConfig;
|
|
25
|
+
}
|
|
26
|
+
setActiveFormFields(activeFormFields) {
|
|
27
|
+
this.activeFormFields = activeFormFields;
|
|
28
|
+
}
|
|
29
|
+
setActiveFormData(activeFormData) {
|
|
30
|
+
this.activeFormData = activeFormData;
|
|
31
|
+
}
|
|
32
|
+
fetchFormConfig(url) {
|
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
const response = yield fetch(url, { method: "GET" });
|
|
35
|
+
const data = yield response.json();
|
|
36
|
+
return data;
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
findActiveFormConfig(formsList) {
|
|
40
|
+
const activeFormConfig = formsList.find((form) => {
|
|
41
|
+
return form.status === "editable" && !form.disabled;
|
|
42
|
+
});
|
|
43
|
+
return activeFormConfig;
|
|
44
|
+
}
|
|
45
|
+
findCompletedFormsList(allFormsData) {
|
|
46
|
+
let formsListCompleted = [];
|
|
47
|
+
Object.keys(allFormsData).map((formKey) => {
|
|
48
|
+
formsListCompleted.push(formKey);
|
|
49
|
+
});
|
|
50
|
+
return formsListCompleted;
|
|
51
|
+
}
|
|
52
|
+
markFormInFormsListAsCompleted(formsList, formsListCompleted) {
|
|
53
|
+
for (let form of formsList) {
|
|
54
|
+
if (formsListCompleted.includes(form.key)) {
|
|
55
|
+
console.log(formsListCompleted.includes(form.key));
|
|
56
|
+
form = setValueToObject(form, "status", "completed");
|
|
57
|
+
form = setValueToObject(form, "disabled", false);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return formsList;
|
|
61
|
+
}
|
|
62
|
+
markFormInFormsListAsDisabled(formsList, formsListCompleted) {
|
|
63
|
+
for (let form of formsList) {
|
|
64
|
+
if (form.status !== "completed") {
|
|
65
|
+
if (checkObjectKeyExists(form, "dependentOn")) {
|
|
66
|
+
const isDependent = form.dependentOn.every((r) => formsListCompleted.includes(r));
|
|
67
|
+
if (isDependent) {
|
|
68
|
+
form = setValueToObject(form, "status", "editable");
|
|
69
|
+
form = setValueToObject(form, "disabled", false);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
form = setValueToObject(form, "status", "locked");
|
|
73
|
+
form = setValueToObject(form, "disabled", true);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
form = setValueToObject(form, "dependentOn", []);
|
|
78
|
+
form = setValueToObject(form, "status", "editable");
|
|
79
|
+
form = setValueToObject(form, "disabled", false);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return formsList;
|
|
84
|
+
}
|
|
85
|
+
assignSequenceNoToForm(formsList) {
|
|
86
|
+
let sequenceNo = 1;
|
|
87
|
+
for (let form of formsList) {
|
|
88
|
+
form.sequenceNo = sequenceNo++;
|
|
89
|
+
}
|
|
90
|
+
return formsList;
|
|
91
|
+
}
|
|
92
|
+
filterAllFormsData(allFormsData, formsList) {
|
|
93
|
+
let currentUserFormAllFormsData = {};
|
|
94
|
+
for (let form of formsList) {
|
|
95
|
+
if (checkObjectKeyExists(allFormsData, form.key)) {
|
|
96
|
+
currentUserFormAllFormsData = Object.assign(Object.assign({}, currentUserFormAllFormsData), { [form.key]: allFormsData[form.key] });
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return currentUserFormAllFormsData;
|
|
100
|
+
}
|
|
101
|
+
updateFormsList() {
|
|
102
|
+
let formsList = this.formsList;
|
|
103
|
+
let formsListCompleted;
|
|
104
|
+
let activeFormConfig;
|
|
105
|
+
formsList = this.assignSequenceNoToForm(formsList);
|
|
106
|
+
/**
|
|
107
|
+
* Below code identifies the allFormsData required for the current User Form.
|
|
108
|
+
* Why? Because allFormsData will actually contain the whole journey's all
|
|
109
|
+
* possible User Form steps. So, it is important to set the form data which
|
|
110
|
+
* this particular User Form only has to LOCAL METHOD Variable.
|
|
111
|
+
*/
|
|
112
|
+
const currentUserFormAllFormsData = this.filterAllFormsData(this.allFormsData, formsList);
|
|
113
|
+
console.log(JSON.parse(JSON.stringify(formsList)));
|
|
114
|
+
formsListCompleted = this.findCompletedFormsList(currentUserFormAllFormsData);
|
|
115
|
+
formsList = this.markFormInFormsListAsCompleted(formsList, formsListCompleted);
|
|
116
|
+
formsList = this.markFormInFormsListAsDisabled(formsList, formsListCompleted);
|
|
117
|
+
if (formsList.length !== formsListCompleted.length) {
|
|
118
|
+
activeFormConfig = this.findActiveFormConfig(formsList);
|
|
119
|
+
this.setActiveFormConfig(activeFormConfig);
|
|
120
|
+
}
|
|
121
|
+
this.setFormsList(formsList);
|
|
122
|
+
this.setFormsListCompleted(formsListCompleted);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/** @nocollapse */ KwikIDRendererService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDRendererService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
126
|
+
/** @nocollapse */ KwikIDRendererService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDRendererService, providedIn: "root" });
|
|
127
|
+
__decorate([
|
|
128
|
+
logMethod
|
|
129
|
+
], KwikIDRendererService.prototype, "setFormsList", null);
|
|
130
|
+
__decorate([
|
|
131
|
+
logMethod
|
|
132
|
+
], KwikIDRendererService.prototype, "setFormsListCompleted", null);
|
|
133
|
+
__decorate([
|
|
134
|
+
logMethod
|
|
135
|
+
], KwikIDRendererService.prototype, "setAllFormsData", null);
|
|
136
|
+
__decorate([
|
|
137
|
+
logMethod
|
|
138
|
+
], KwikIDRendererService.prototype, "setActiveFormConfig", null);
|
|
139
|
+
__decorate([
|
|
140
|
+
logMethod
|
|
141
|
+
], KwikIDRendererService.prototype, "setActiveFormFields", null);
|
|
142
|
+
__decorate([
|
|
143
|
+
logMethod
|
|
144
|
+
], KwikIDRendererService.prototype, "setActiveFormData", null);
|
|
145
|
+
__decorate([
|
|
146
|
+
logMethod
|
|
147
|
+
], KwikIDRendererService.prototype, "findActiveFormConfig", null);
|
|
148
|
+
__decorate([
|
|
149
|
+
logMethod
|
|
150
|
+
], KwikIDRendererService.prototype, "findCompletedFormsList", null);
|
|
151
|
+
__decorate([
|
|
152
|
+
logMethod
|
|
153
|
+
], KwikIDRendererService.prototype, "markFormInFormsListAsCompleted", null);
|
|
154
|
+
__decorate([
|
|
155
|
+
logMethod
|
|
156
|
+
], KwikIDRendererService.prototype, "markFormInFormsListAsDisabled", null);
|
|
157
|
+
__decorate([
|
|
158
|
+
logMethod
|
|
159
|
+
], KwikIDRendererService.prototype, "assignSequenceNoToForm", null);
|
|
160
|
+
__decorate([
|
|
161
|
+
logMethod
|
|
162
|
+
], KwikIDRendererService.prototype, "filterAllFormsData", null);
|
|
163
|
+
__decorate([
|
|
164
|
+
logMethod
|
|
165
|
+
], KwikIDRendererService.prototype, "updateFormsList", null);
|
|
166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDRendererService, decorators: [{
|
|
167
|
+
type: Injectable,
|
|
168
|
+
args: [{
|
|
169
|
+
providedIn: "root"
|
|
170
|
+
}]
|
|
171
|
+
}], ctorParameters: function () { return []; }, propDecorators: { setFormsList: [], setFormsListCompleted: [], setAllFormsData: [], setActiveFormConfig: [], setActiveFormFields: [], setActiveFormData: [], findActiveFormConfig: [], findCompletedFormsList: [], markFormInFormsListAsCompleted: [], markFormInFormsListAsDisabled: [], assignSequenceNoToForm: [], filterAllFormsData: [], updateFormsList: [] } });
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL3JlbmRlcmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxvQkFBb0IsR0FDckIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7QUFLL0UsTUFBTSxPQUFPLHFCQUFxQjtJQTBDaEM7UUF6Q0EsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFpQnJCLGlCQUFZLEdBQVEsRUFBRSxDQUFDO0lBd0JSLENBQUM7SUF4Q2hCLGVBQWUsQ0FBQyxZQUFxQjtRQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUNuQyxDQUFDO0lBSUQsWUFBWSxDQUFDLFNBQWdCO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFJRCxxQkFBcUIsQ0FBQyxrQkFBeUI7UUFDN0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO0lBQy9DLENBQUM7SUFJRCxlQUFlLENBQUMsWUFBbUI7UUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbkMsQ0FBQztJQUlELG1CQUFtQixDQUFDLGdCQUFxQjtRQUN2QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7SUFDM0MsQ0FBQztJQUlELG1CQUFtQixDQUFDLGdCQUF1QjtRQUN6QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7SUFDM0MsQ0FBQztJQUlELGlCQUFpQixDQUFDLGNBQW1CO1FBQ25DLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO0lB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N0Isc0JBQXNCLE1BVXRCLGtCQUFrQixNQWdCbEIsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgbG9nTWV0aG9kLFxuICBjaGVja09iamVjdEtleUV4aXN0cyxcbn0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XG5pbXBvcnQgeyBzZXRWYWx1ZVRvT2JqZWN0IH0gZnJvbSBcIi4vZm9ybS12aWV3L2hlbHBlcnMvZm9ybS12aWV3LmNvbW1vbi5oZWxwZXJcIjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiBcInJvb3RcIlxufSlcbmV4cG9ydCBjbGFzcyBLd2lrSURSZW5kZXJlclNlcnZpY2Uge1xuICBpc01vYmlsZVZpZXcgPSBmYWxzZTtcbiAgc2V0SXNNb2JpbGVWaWV3KGlzTW9iaWxlVmlldzogYm9vbGVhbikge1xuICAgIHRoaXMuaXNNb2JpbGVWaWV3ID0gaXNNb2JpbGVWaWV3O1xuICB9XG5cbiAgZm9ybXNMaXN0OiBhbnlbXTtcbiAgQGxvZ01ldGhvZFxuICBzZXRGb3Jtc0xpc3QoZm9ybXNMaXN0OiBhbnlbXSkge1xuICAgIHRoaXMuZm9ybXNMaXN0ID0gZm9ybXNMaXN0O1xuICB9XG5cbiAgZm9ybXNMaXN0Q29tcGxldGVkOiBzdHJpbmdbXTtcbiAgQGxvZ01ldGhvZFxuICBzZXRGb3Jtc0xpc3RDb21wbGV0ZWQoZm9ybXNMaXN0Q29tcGxldGVkOiBhbnlbXSkge1xuICAgIHRoaXMuZm9ybXNMaXN0Q29tcGxldGVkID0gZm9ybXNMaXN0Q29tcGxldGVkO1xuICB9XG5cbiAgYWxsRm9ybXNEYXRhOiBhbnkgPSB7fTtcbiAgQGxvZ01ldGhvZFxuICBzZXRBbGxGb3Jtc0RhdGEoYWxsRm9ybXNEYXRhOiBhbnlbXSkge1xuICAgIHRoaXMuYWxsRm9ybXNEYXRhID0gYWxsRm9ybXNEYXRhO1xuICB9XG5cbiAgYWN0aXZlRm9ybUNvbmZpZzogYW55O1xuICBAbG9nTWV0aG9kXG4gIHNldEFjdGl2ZUZvcm1Db25maWcoYWN0aXZlRm9ybUNvbmZpZzogYW55KSB7XG4gICAgdGhpcy5hY3RpdmVGb3JtQ29uZmlnID0gYWN0aXZlRm9ybUNvbmZpZztcbiAgfVxuXG4gIGFjdGl2ZUZvcm1GaWVsZHM6IGFueVtdO1xuICBAbG9nTWV0aG9kXG4gIHNldEFjdGl2ZUZvcm1GaWVsZHMoYWN0aXZlRm9ybUZpZWxkczogYW55W10pIHtcbiAgICB0aGlzLmFjdGl2ZUZvcm1GaWVsZHMgPSBhY3RpdmVGb3JtRmllbGRzO1xuICB9XG5cbiAgYWN0aXZlRm9ybURhdGE6IGFueTtcbiAgQGxvZ01ldGhvZFxuICBzZXRBY3RpdmVGb3JtRGF0YShhY3RpdmVGb3JtRGF0YTogYW55KSB7XG4gICAgdGhpcy5hY3RpdmVGb3JtRGF0YSA9IGFjdGl2ZUZvcm1EYXRhO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIGFzeW5jIGZldGNoRm9ybUNvbmZpZyh1cmw6IHN0cmluZykge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7IG1ldGhvZDogXCJHRVRcIiB9KTtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBmaW5kQWN0aXZlRm9ybUNvbmZpZyhmb3Jtc0xpc3Q6IGFueVtdKTogYW55IHtcbiAgICBjb25zdCBhY3RpdmVGb3JtQ29uZmlnID0gZm9ybXNMaXN0LmZpbmQoKGZvcm0pID0+IHtcbiAgICAgIHJldHVybiBmb3JtLnN0YXR1cyA9PT0gXCJlZGl0YWJsZVwiICYmICFmb3JtLmRpc2FibGVkO1xuICAgIH0pO1xuICAgIHJldHVybiBhY3RpdmVGb3JtQ29uZmlnO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBmaW5kQ29tcGxldGVkRm9ybXNMaXN0KGFsbEZvcm1zRGF0YTogYW55KTogc3RyaW5nW10ge1xuICAgIGxldCBmb3Jtc0xpc3RDb21wbGV0ZWQ6IHN0cmluZ1tdID0gW107XG5cbiAgICBPYmplY3Qua2V5cyhhbGxGb3Jtc0RhdGEpLm1hcCgoZm9ybUtleSkgPT4ge1xuICAgICAgZm9ybXNMaXN0Q29tcGxldGVkLnB1c2goZm9ybUtleSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZm9ybXNMaXN0Q29tcGxldGVkO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBtYXJrRm9ybUluRm9ybXNMaXN0QXNDb21wbGV0ZWQoXG4gICAgZm9ybXNMaXN0OiBhbnlbXSxcbiAgICBmb3Jtc0xpc3RDb21wbGV0ZWQ6IHN0cmluZ1tdXG4gICk6IGFueVtdIHtcbiAgICBmb3IgKGxldCBmb3JtIG9mIGZvcm1zTGlzdCkge1xuICAgICAgaWYgKGZvcm1zTGlzdENvbXBsZXRlZC5pbmNsdWRlcyhmb3JtLmtleSkpIHtcbiAgICAgICAgY29uc29sZS5sb2coZm9ybXNMaXN0Q29tcGxldGVkLmluY2x1ZGVzKGZvcm0ua2V5KSk7XG5cbiAgICAgICAgZm9ybSA9IHNldFZhbHVlVG9PYmplY3QoZm9ybSwgXCJzdGF0dXNcIiwgXCJjb21wbGV0ZWRcIik7XG4gICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0KGZvcm0sIFwiZGlzYWJsZWRcIiwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmb3Jtc0xpc3Q7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIG1hcmtGb3JtSW5Gb3Jtc0xpc3RBc0Rpc2FibGVkKFxuICAgIGZvcm1zTGlzdDogYW55W10sXG4gICAgZm9ybXNMaXN0Q29tcGxldGVkOiBzdHJpbmdbXVxuICApOiBhbnlbXSB7XG4gICAgZm9yIChsZXQgZm9ybSBvZiBmb3Jtc0xpc3QpIHtcbiAgICAgIGlmIChmb3JtLnN0YXR1cyAhPT0gXCJjb21wbGV0ZWRcIikge1xuICAgICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybSwgXCJkZXBlbmRlbnRPblwiKSkge1xuICAgICAgICAgIGNvbnN0IGlzRGVwZW5kZW50ID0gZm9ybS5kZXBlbmRlbnRPbi5ldmVyeSgocjogc3RyaW5nKSA9PlxuICAgICAgICAgICAgZm9ybXNMaXN0Q29tcGxldGVkLmluY2x1ZGVzKHIpXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoaXNEZXBlbmRlbnQpIHtcbiAgICAgICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0KGZvcm0sIFwic3RhdHVzXCIsIFwiZWRpdGFibGVcIik7XG4gICAgICAgICAgICBmb3JtID0gc2V0VmFsdWVUb09iamVjdChmb3JtLCBcImRpc2FibGVkXCIsIGZhbHNlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9ybSA9IHNldFZhbHVlVG9PYmplY3QoZm9ybSwgXCJzdGF0dXNcIiwgXCJsb2NrZWRcIik7XG4gICAgICAgICAgICBmb3JtID0gc2V0VmFsdWVUb09iamVjdChmb3JtLCBcImRpc2FibGVkXCIsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3JtID0gc2V0VmFsdWVUb09iamVjdChmb3JtLCBcImRlcGVuZGVudE9uXCIsIFtdKTtcbiAgICAgICAgICBmb3JtID0gc2V0VmFsdWVUb09iamVjdChmb3JtLCBcInN0YXR1c1wiLCBcImVkaXRhYmxlXCIpO1xuICAgICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0KGZvcm0sIFwiZGlzYWJsZWRcIiwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1zTGlzdDtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgYXNzaWduU2VxdWVuY2VOb1RvRm9ybShmb3Jtc0xpc3Q6IGFueVtdKTogYW55W10ge1xuICAgIGxldCBzZXF1ZW5jZU5vID0gMTtcbiAgICBmb3IgKGxldCBmb3JtIG9mIGZvcm1zTGlzdCkge1xuICAgICAgZm9ybS5zZXF1ZW5jZU5vID0gc2VxdWVuY2VObysrO1xuICAgIH1cblxuICAgIHJldHVybiBmb3Jtc0xpc3Q7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGZpbHRlckFsbEZvcm1zRGF0YShhbGxGb3Jtc0RhdGE6IGFueSwgZm9ybXNMaXN0OiBhbnlbXSk6IGFueSB7XG4gICAgbGV0IGN1cnJlbnRVc2VyRm9ybUFsbEZvcm1zRGF0YTogYW55ID0ge307XG5cbiAgICBmb3IgKGxldCBmb3JtIG9mIGZvcm1zTGlzdCkge1xuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGFsbEZvcm1zRGF0YSwgZm9ybS5rZXkpKSB7XG4gICAgICAgIGN1cnJlbnRVc2VyRm9ybUFsbEZvcm1zRGF0YSA9IHtcbiAgICAgICAgICAuLi5jdXJyZW50VXNlckZvcm1BbGxGb3Jtc0RhdGEsXG4gICAgICAgICAgW2Zvcm0ua2V5XTogYWxsRm9ybXNEYXRhW2Zvcm0ua2V5XVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50VXNlckZvcm1BbGxGb3Jtc0RhdGE7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIHVwZGF0ZUZvcm1zTGlzdCgpIHtcbiAgICBsZXQgZm9ybXNMaXN0OiBhbnlbXSA9IHRoaXMuZm9ybXNMaXN0O1xuICAgIGxldCBmb3Jtc0xpc3RDb21wbGV0ZWQ6IHN0cmluZ1tdO1xuICAgIGxldCBhY3RpdmVGb3JtQ29uZmlnOiBhbnk7XG5cbiAgICBmb3Jtc0xpc3QgPSB0aGlzLmFzc2lnblNlcXVlbmNlTm9Ub0Zvcm0oZm9ybXNMaXN0KTtcblxuICAgIC8qKlxuICAgICAqIEJlbG93IGNvZGUgaWRlbnRpZmllcyB0aGUgYWxsRm9ybXNEYXRhIHJlcXVpcmVkIGZvciB0aGUgY3VycmVudCBVc2VyIEZvcm0uXG4gICAgICogV2h5PyBCZWNhdXNlIGFsbEZvcm1zRGF0YSB3aWxsIGFjdHVhbGx5IGNvbnRhaW4gdGhlIHdob2xlIGpvdXJuZXkncyBhbGxcbiAgICAgKiBwb3NzaWJsZSBVc2VyIEZvcm0gc3RlcHMuIFNvLCBpdCBpcyBpbXBvcnRhbnQgdG8gc2V0IHRoZSBmb3JtIGRhdGEgd2hpY2hcbiAgICAgKiB0aGlzIHBhcnRpY3VsYXIgVXNlciBGb3JtIG9ubHkgaGFzIHRvIExPQ0FMIE1FVEhPRCBWYXJpYWJsZS5cbiAgICAgKi9cbiAgICBjb25zdCBjdXJyZW50VXNlckZvcm1BbGxGb3Jtc0RhdGEgPSB0aGlzLmZpbHRlckFsbEZvcm1zRGF0YShcbiAgICAgIHRoaXMuYWxsRm9ybXNEYXRhLFxuICAgICAgZm9ybXNMaXN0XG4gICAgKTtcblxuICAgIGNvbnNvbGUubG9nKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZm9ybXNMaXN0KSkpO1xuXG4gICAgZm9ybXNMaXN0Q29tcGxldGVkID0gdGhpcy5maW5kQ29tcGxldGVkRm9ybXNMaXN0KFxuICAgICAgY3VycmVudFVzZXJGb3JtQWxsRm9ybXNEYXRhXG4gICAgKTtcblxuICAgIGZvcm1zTGlzdCA9IHRoaXMubWFya0Zvcm1JbkZvcm1zTGlzdEFzQ29tcGxldGVkKFxuICAgICAgZm9ybXNMaXN0LFxuICAgICAgZm9ybXNMaXN0Q29tcGxldGVkXG4gICAgKTtcblxuICAgIGZvcm1zTGlzdCA9IHRoaXMubWFya0Zvcm1JbkZvcm1zTGlzdEFzRGlzYWJsZWQoXG4gICAgICBmb3Jtc0xpc3QsXG4gICAgICBmb3Jtc0xpc3RDb21wbGV0ZWRcbiAgICApO1xuXG4gICAgaWYgKGZvcm1zTGlzdC5sZW5ndGggIT09IGZvcm1zTGlzdENvbXBsZXRlZC5sZW5ndGgpIHtcbiAgICAgIGFjdGl2ZUZvcm1Db25maWcgPSB0aGlzLmZpbmRBY3RpdmVGb3JtQ29uZmlnKGZvcm1zTGlzdCk7XG5cbiAgICAgIHRoaXMuc2V0QWN0aXZlRm9ybUNvbmZpZyhhY3RpdmVGb3JtQ29uZmlnKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldEZvcm1zTGlzdChmb3Jtc0xpc3QpO1xuICAgIHRoaXMuc2V0Rm9ybXNMaXN0Q29tcGxldGVkKGZvcm1zTGlzdENvbXBsZXRlZCk7XG4gIH1cbn1cbiJdfQ==
|