@firestitch/form 15.0.0 → 17.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/components/form-dialog-actions/form-dialog-actions.component.d.ts +1 -1
- package/app/components/form-template/form-template.component.d.ts +1 -1
- package/app/components/form-template-outlet/form-template-outlet.component.d.ts +1 -1
- package/app/directives/button.directive.d.ts +1 -1
- package/app/directives/form/form.directive.d.ts +1 -1
- package/app/directives/form-dialog-close.directive.d.ts +1 -1
- package/app/directives/validators/compare.directive.d.ts +1 -1
- package/app/directives/validators/control.directive.d.ts +1 -1
- package/app/directives/validators/daterange.directive.d.ts +1 -1
- package/app/directives/validators/email.directive.d.ts +1 -1
- package/app/directives/validators/emails.directive.d.ts +1 -1
- package/app/directives/validators/function.directive.d.ts +1 -1
- package/app/directives/validators/greater-equal.directive.d.ts +1 -1
- package/app/directives/validators/greater.directive.d.ts +1 -1
- package/app/directives/validators/integer.directive.d.ts +1 -1
- package/app/directives/validators/lesser-equal.directive.d.ts +1 -1
- package/app/directives/validators/lesser.directive.d.ts +1 -1
- package/app/directives/validators/max.directive.d.ts +1 -1
- package/app/directives/validators/maxlength.directive.d.ts +1 -1
- package/app/directives/validators/min.directive.d.ts +1 -1
- package/app/directives/validators/minlength.directive.d.ts +1 -1
- package/app/directives/validators/numeric.directive.d.ts +1 -1
- package/app/directives/validators/pattern.directive.d.ts +1 -1
- package/app/directives/validators/phone.directive.d.ts +1 -1
- package/app/directives/validators/required.directive.d.ts +1 -1
- package/app/directives/validators/url.directive.d.ts +1 -1
- package/app/directives/validators/validate.directive.d.ts +1 -1
- package/app/guards/form-deactivate.guard.d.ts +2 -2
- package/esm2022/app/components/confirm-unsaved/confirm-unsaved.component.mjs +51 -0
- package/esm2022/app/components/form-dialog-actions/form-dialog-actions.component.mjs +79 -0
- package/esm2022/app/components/form-template/form-template.component.mjs +34 -0
- package/{esm2020 → esm2022}/app/components/form-template/index.mjs +1 -1
- package/esm2022/app/components/form-template-outlet/form-template-outlet.component.mjs +32 -0
- package/{esm2020 → esm2022}/app/components/form-template-outlet/index.mjs +1 -1
- package/esm2022/app/directives/button.directive.mjs +172 -0
- package/esm2022/app/directives/form/form.directive.mjs +703 -0
- package/esm2022/app/directives/form-dialog-close.directive.mjs +57 -0
- package/esm2022/app/directives/form-template.directive.mjs +21 -0
- package/{esm2020 → esm2022}/app/directives/submit-button.directive.mjs +4 -4
- package/esm2022/app/directives/validators/compare.directive.mjs +48 -0
- package/esm2022/app/directives/validators/control.directive.mjs +269 -0
- package/esm2022/app/directives/validators/daterange.directive.mjs +42 -0
- package/esm2022/app/directives/validators/email.directive.mjs +42 -0
- package/esm2022/app/directives/validators/emails.directive.mjs +42 -0
- package/esm2022/app/directives/validators/function.directive.mjs +40 -0
- package/esm2022/app/directives/validators/greater-equal.directive.mjs +41 -0
- package/esm2022/app/directives/validators/greater.directive.mjs +41 -0
- package/esm2022/app/directives/validators/integer.directive.mjs +40 -0
- package/esm2022/app/directives/validators/lesser-equal.directive.mjs +41 -0
- package/esm2022/app/directives/validators/lesser.directive.mjs +41 -0
- package/esm2022/app/directives/validators/max.directive.mjs +37 -0
- package/esm2022/app/directives/validators/maxlength.directive.mjs +36 -0
- package/esm2022/app/directives/validators/min.directive.mjs +37 -0
- package/esm2022/app/directives/validators/minlength.directive.mjs +36 -0
- package/esm2022/app/directives/validators/no-fs-validators.directive.mjs +53 -0
- package/esm2022/app/directives/validators/numeric.directive.mjs +42 -0
- package/esm2022/app/directives/validators/pattern.directive.mjs +36 -0
- package/esm2022/app/directives/validators/phone.directive.mjs +42 -0
- package/esm2022/app/directives/validators/required.directive.mjs +66 -0
- package/esm2022/app/directives/validators/url.directive.mjs +43 -0
- package/esm2022/app/directives/validators/validate.directive.mjs +42 -0
- package/esm2022/app/fs-form.module.mjs +209 -0
- package/esm2022/app/guards/form-deactivate.guard.mjs +44 -0
- package/{esm2020 → esm2022}/app/helpers/get-active-route.mjs +1 -1
- package/esm2022/app/helpers/get-form-errors.mjs +25 -0
- package/esm2022/app/services/fsform.service.mjs +94 -0
- package/esm2022/app/validators/validators.mjs +93 -0
- package/{fesm2020 → fesm2022}/firestitch-form.mjs +383 -319
- package/fesm2022/firestitch-form.mjs.map +1 -0
- package/package.json +5 -11
- package/esm2020/app/components/confirm-unsaved/confirm-unsaved.component.mjs +0 -44
- package/esm2020/app/components/form-dialog-actions/form-dialog-actions.component.mjs +0 -75
- package/esm2020/app/components/form-template/form-template.component.mjs +0 -31
- package/esm2020/app/components/form-template-outlet/form-template-outlet.component.mjs +0 -30
- package/esm2020/app/directives/button.directive.mjs +0 -166
- package/esm2020/app/directives/form/form.directive.mjs +0 -689
- package/esm2020/app/directives/form-dialog-close.directive.mjs +0 -54
- package/esm2020/app/directives/form-template.directive.mjs +0 -20
- package/esm2020/app/directives/validators/compare.directive.mjs +0 -47
- package/esm2020/app/directives/validators/control.directive.mjs +0 -258
- package/esm2020/app/directives/validators/daterange.directive.mjs +0 -41
- package/esm2020/app/directives/validators/email.directive.mjs +0 -41
- package/esm2020/app/directives/validators/emails.directive.mjs +0 -41
- package/esm2020/app/directives/validators/function.directive.mjs +0 -41
- package/esm2020/app/directives/validators/greater-equal.directive.mjs +0 -40
- package/esm2020/app/directives/validators/greater.directive.mjs +0 -40
- package/esm2020/app/directives/validators/integer.directive.mjs +0 -39
- package/esm2020/app/directives/validators/lesser-equal.directive.mjs +0 -40
- package/esm2020/app/directives/validators/lesser.directive.mjs +0 -40
- package/esm2020/app/directives/validators/max.directive.mjs +0 -36
- package/esm2020/app/directives/validators/maxlength.directive.mjs +0 -35
- package/esm2020/app/directives/validators/min.directive.mjs +0 -36
- package/esm2020/app/directives/validators/minlength.directive.mjs +0 -35
- package/esm2020/app/directives/validators/no-fs-validators.directive.mjs +0 -53
- package/esm2020/app/directives/validators/numeric.directive.mjs +0 -41
- package/esm2020/app/directives/validators/pattern.directive.mjs +0 -35
- package/esm2020/app/directives/validators/phone.directive.mjs +0 -41
- package/esm2020/app/directives/validators/required.directive.mjs +0 -69
- package/esm2020/app/directives/validators/url.directive.mjs +0 -45
- package/esm2020/app/directives/validators/validate.directive.mjs +0 -43
- package/esm2020/app/fs-form.module.mjs +0 -209
- package/esm2020/app/guards/form-deactivate.guard.mjs +0 -42
- package/esm2020/app/helpers/get-form-errors.mjs +0 -25
- package/esm2020/app/services/fsform.service.mjs +0 -92
- package/esm2020/app/validators/validators.mjs +0 -93
- package/fesm2015/firestitch-form.mjs +0 -2579
- package/fesm2015/firestitch-form.mjs.map +0 -1
- package/fesm2020/firestitch-form.mjs.map +0 -1
- /package/{esm2020 → esm2022}/app/components/confirm-unsaved/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/components/form-dialog-actions/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/consts/error-messages.const.mjs +0 -0
- /package/{esm2020 → esm2022}/app/directives/form/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/directives/validators/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/enums/confirm-result.mjs +0 -0
- /package/{esm2020 → esm2022}/app/enums/form-status.mjs +0 -0
- /package/{esm2020 → esm2022}/app/enums/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/helpers/confirm-result-continue.mjs +0 -0
- /package/{esm2020 → esm2022}/app/helpers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/helpers/is-enabled.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/async-validator.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/confirm-config.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/confirm-tab-group.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/submit-event.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/submitted-event.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/validator.mjs +0 -0
- /package/{esm2020 → esm2022}/app/providers/validate-messages.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/firestitch-form.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { email, isEmpty, isNumeric, phone, url } from '@firestitch/common';
|
|
2
|
-
import { from, isObservable, of, throwError } from 'rxjs';
|
|
3
|
-
import { catchError, mapTo, take } from 'rxjs/operators';
|
|
4
|
-
import { isValid } from 'date-fns';
|
|
5
|
-
import { isObject } from 'lodash-es';
|
|
6
|
-
export class FsValidators {
|
|
7
|
-
static email(control) {
|
|
8
|
-
if (!control.value || email(control.value)) {
|
|
9
|
-
return null;
|
|
10
|
-
}
|
|
11
|
-
return { email: true };
|
|
12
|
-
}
|
|
13
|
-
static emails(control) {
|
|
14
|
-
const model = control.value || '';
|
|
15
|
-
const hasInvalidEmails = model
|
|
16
|
-
.split(',')
|
|
17
|
-
.some((part) => !email(part));
|
|
18
|
-
return hasInvalidEmails ? { email: true } : null;
|
|
19
|
-
}
|
|
20
|
-
static numeric(control) {
|
|
21
|
-
if (isEmpty(control.value) || isNumeric(control.value)) {
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
return { numeric: true };
|
|
25
|
-
}
|
|
26
|
-
static integer(control) {
|
|
27
|
-
if (!control.value || String(control.value) === '' || (control.value % 1 === 0)) {
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
return { integer: true };
|
|
31
|
-
}
|
|
32
|
-
static phone(control) {
|
|
33
|
-
if (!control.value || phone(control.value)) {
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
return { phone: true };
|
|
37
|
-
}
|
|
38
|
-
static url(control, protocolRequired = false) {
|
|
39
|
-
if (!control.value) {
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
if (!url(control.value)) {
|
|
43
|
-
return { url: true };
|
|
44
|
-
}
|
|
45
|
-
if (protocolRequired) {
|
|
46
|
-
const pattern = new RegExp(/^http(s)?:\/\//gm);
|
|
47
|
-
if (!String(control.value).match(pattern)) {
|
|
48
|
-
return { urlProtocol: true };
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
static dateRange(control) {
|
|
54
|
-
if (!control.value) {
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
if (isObject(control.value)) {
|
|
58
|
-
const start = control.value.start;
|
|
59
|
-
const end = control.value.end;
|
|
60
|
-
if ((!start && !end) || (isValid(start) && isValid(end))) {
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return { dateRange: true };
|
|
65
|
-
}
|
|
66
|
-
static func(control, formFunction, data) {
|
|
67
|
-
let result;
|
|
68
|
-
let stream$;
|
|
69
|
-
try {
|
|
70
|
-
result = formFunction(control, data);
|
|
71
|
-
}
|
|
72
|
-
catch (err) {
|
|
73
|
-
const error = err instanceof Error ? err.message : err;
|
|
74
|
-
stream$ = throwError(error);
|
|
75
|
-
}
|
|
76
|
-
if (!stream$) {
|
|
77
|
-
if (result instanceof Promise) {
|
|
78
|
-
stream$ = from(result);
|
|
79
|
-
}
|
|
80
|
-
else if (isObservable(result)) {
|
|
81
|
-
stream$ = result;
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
stream$ = of(null);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return stream$
|
|
88
|
-
.pipe(mapTo(null), catchError((err) => {
|
|
89
|
-
return of({ validationError: err });
|
|
90
|
-
}), take(1));
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvdmFsaWRhdG9ycy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFM0UsT0FBTyxFQUFjLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHckMsTUFBTSxPQUFPLFlBQVk7SUFFaEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUF3QjtRQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzFDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQXdCO1FBQzNDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBRWxDLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSzthQUMzQixLQUFLLENBQUMsR0FBRyxDQUFDO2FBQ1YsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRWhDLE9BQU8sZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFB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RCxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdCO1FBRUQsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLElBQUksTUFBTSxZQUFZLE9BQU8sRUFBRTtnQkFDN0IsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN4QjtpQkFBTSxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDL0IsT0FBTyxHQUFHLE1BQU0sQ0FBQzthQUNsQjtpQkFBTTtnQkFDTCxPQUFPLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3BCO1NBQ0Y7UUFFRCxPQUFPLE9BQU87YUFDWCxJQUFJLENBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUNYLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLE9BQU8sRUFBRSxDQUFDLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLEVBQ0YsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSLENBQUM7SUFDTixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IGVtYWlsLCBpc0VtcHR5LCBpc051bWVyaWMsIHBob25lLCB1cmwgfSBmcm9tICdAZmlyZXN0aXRjaC9jb21tb24nO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tLCBpc09ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXBUbywgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgaXNWYWxpZCB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSAnbG9kYXNoLWVzJztcblxuXG5leHBvcnQgY2xhc3MgRnNWYWxpZGF0b3JzIHtcblxuICBwdWJsaWMgc3RhdGljIGVtYWlsKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgZW1haWwoY29udHJvbC52YWx1ZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7IGVtYWlsOiB0cnVlIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGVtYWlscyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgbW9kZWwgPSBjb250cm9sLnZhbHVlIHx8ICcnO1xuXG4gICAgY29uc3QgaGFzSW52YWxpZEVtYWlscyA9IG1vZGVsXG4gICAgICAuc3BsaXQoJywnKVxuICAgICAgLnNvbWUoKHBhcnQpID0+ICFlbWFpbChwYXJ0KSk7XG5cbiAgICByZXR1cm4gaGFzSW52YWxpZEVtYWlscyA/IHsgZW1haWw6IHRydWUgfSA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIG51bWVyaWMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmIChpc0VtcHR5KGNvbnRyb2wudmFsdWUpIHx8IGlzTnVtZXJpYyhjb250cm9sLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuIFxuICAgIHJldHVybiB7IG51bWVyaWM6IHRydWUgfTtcbiAgICBcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaW50ZWdlcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IFN0cmluZyhjb250cm9sLnZhbHVlKSA9PT0gJycgfHwgKGNvbnRyb2wudmFsdWUgJSAxID09PSAwKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuIFxuICAgIHJldHVybiB7IGludGVnZXI6IHRydWUgfTtcbiAgICBcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcGhvbmUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICghY29udHJvbC52YWx1ZSB8fCBwaG9uZShjb250cm9sLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgcGhvbmU6IHRydWUgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdXJsKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcHJvdG9jb2xSZXF1aXJlZCA9IGZhbHNlKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICghY29udHJvbC52YWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKCF1cmwoY29udHJvbC52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7IHVybDogdHJ1ZSB9O1xuICAgIH1cblxuICAgIGlmIChwcm90b2NvbFJlcXVpcmVkKSB7XG4gICAgICBjb25zdCBwYXR0ZXJuID0gbmV3IFJlZ0V4cCgvXmh0dHAocyk/OlxcL1xcLy9nbSk7XG5cbiAgICAgIGlmICghU3RyaW5nKGNvbnRyb2wudmFsdWUpLm1hdGNoKHBhdHRlcm4pKSB7XG4gICAgICAgIHJldHVybiB7IHVybFByb3RvY29sOiB0cnVlIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGRhdGVSYW5nZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoaXNPYmplY3QoY29udHJvbC52YWx1ZSkpIHtcblxuICAgICAgY29uc3Qgc3RhcnQgPSBjb250cm9sLnZhbHVlLnN0YXJ0O1xuICAgICAgY29uc3QgZW5kID0gY29udHJvbC52YWx1ZS5lbmQ7XG5cbiAgICAgIGlmICgoIXN0YXJ0ICYmICFlbmQpIHx8IChpc1ZhbGlkKHN0YXJ0KSAmJiBpc1ZhbGlkKGVuZCkpKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IGRhdGVSYW5nZTogdHJ1ZSB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBmdW5jKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgZm9ybUZ1bmN0aW9uLCBkYXRhOiBhbnkpIHtcbiAgICBsZXQgcmVzdWx0OiB1bmtub3duO1xuICAgIGxldCBzdHJlYW0kOiBPYnNlcnZhYmxlPHVua25vd24+O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGZvcm1GdW5jdGlvbihjb250cm9sLCBkYXRhKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IGVycjtcblxuICAgICAgc3RyZWFtJCA9IHRocm93RXJyb3IoZXJyb3IpO1xuICAgIH1cblxuICAgIGlmICghc3RyZWFtJCkge1xuICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgc3RyZWFtJCA9IGZyb20ocmVzdWx0KTtcbiAgICAgIH0gZWxzZSBpZiAoaXNPYnNlcnZhYmxlKHJlc3VsdCkpIHtcbiAgICAgICAgc3RyZWFtJCA9IHJlc3VsdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0cmVhbSQgPSBvZihudWxsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3RyZWFtJFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcFRvKG51bGwpLFxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICByZXR1cm4gb2YoeyB2YWxpZGF0aW9uRXJyb3I6IGVyciB9KTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2UoMSksXG4gICAgICApO1xuICB9XG59XG4iXX0=
|