@firestitch/form 18.0.0 → 18.0.1
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/directives/validators/control.directive.d.ts +12 -9
- package/app/directives/validators/required.directive.d.ts +1 -1
- package/app/directives/validators/validate.directive.d.ts +2 -2
- package/app/validators/validators.d.ts +1 -1
- package/esm2022/app/components/form-template/form-template.component.mjs +1 -1
- package/esm2022/app/components/form-template/index.mjs +1 -1
- package/esm2022/app/components/form-template-outlet/form-template-outlet.component.mjs +1 -1
- package/esm2022/app/components/form-template-outlet/index.mjs +1 -1
- package/esm2022/app/directives/form/form.directive.mjs +4 -4
- package/esm2022/app/directives/validators/control.directive.mjs +64 -63
- package/esm2022/app/directives/validators/function.directive.mjs +2 -2
- package/esm2022/app/directives/validators/required.directive.mjs +3 -3
- package/esm2022/app/directives/validators/validate.directive.mjs +6 -6
- package/esm2022/app/validators/validators.mjs +2 -2
- package/fesm2022/firestitch-form.mjs +73 -72
- package/fesm2022/firestitch-form.mjs.map +1 -1
- package/package.json +1 -1
- package/styles.scss +0 -4
|
@@ -10,11 +10,11 @@ import * as i1 from "@angular/forms";
|
|
|
10
10
|
import * as i2 from "../form/form.directive";
|
|
11
11
|
export class FsControlDirective {
|
|
12
12
|
_elementRef;
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
_renderer2;
|
|
14
|
+
_injector;
|
|
15
15
|
_validateMessages;
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
_ngControl;
|
|
17
|
+
_formDirective;
|
|
18
18
|
wrapperSelector;
|
|
19
19
|
messageSelector;
|
|
20
20
|
hintSelector;
|
|
@@ -32,15 +32,15 @@ export class FsControlDirective {
|
|
|
32
32
|
errors = [];
|
|
33
33
|
_control;
|
|
34
34
|
_destroy$ = new Subject();
|
|
35
|
-
constructor(_elementRef,
|
|
35
|
+
constructor(_elementRef, _renderer2, _injector, _validateMessages, _ngControl, _formDirective) {
|
|
36
36
|
this._elementRef = _elementRef;
|
|
37
|
-
this.
|
|
38
|
-
this.
|
|
37
|
+
this._renderer2 = _renderer2;
|
|
38
|
+
this._injector = _injector;
|
|
39
39
|
this._validateMessages = _validateMessages;
|
|
40
|
-
this.
|
|
41
|
-
this.
|
|
42
|
-
if (
|
|
43
|
-
this._control =
|
|
40
|
+
this._ngControl = _ngControl;
|
|
41
|
+
this._formDirective = _formDirective;
|
|
42
|
+
if (_ngControl) {
|
|
43
|
+
this._control = _ngControl.control;
|
|
44
44
|
}
|
|
45
45
|
else {
|
|
46
46
|
console.error('The element does not have a valid ngModel', this._elementRef.nativeElement);
|
|
@@ -63,8 +63,8 @@ export class FsControlDirective {
|
|
|
63
63
|
if (this.messageSelector) {
|
|
64
64
|
return this.messageSelector;
|
|
65
65
|
}
|
|
66
|
-
else if (this.
|
|
67
|
-
return this.
|
|
66
|
+
else if (this._formDirective?.messageSelector) {
|
|
67
|
+
return this._formDirective.messageSelector;
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
getHintWrapperSelector() {
|
|
@@ -74,8 +74,8 @@ export class FsControlDirective {
|
|
|
74
74
|
if (this.hintSelector) {
|
|
75
75
|
return this.hintSelector;
|
|
76
76
|
}
|
|
77
|
-
else if (this.
|
|
78
|
-
return this.
|
|
77
|
+
else if (this._formDirective?.hintSelector) {
|
|
78
|
+
return this._formDirective.hintSelector;
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
getWrapperSelector() {
|
|
@@ -85,8 +85,8 @@ export class FsControlDirective {
|
|
|
85
85
|
if (this.wrapperSelector) {
|
|
86
86
|
return this.wrapperSelector;
|
|
87
87
|
}
|
|
88
|
-
else if (this.
|
|
89
|
-
return this.
|
|
88
|
+
else if (this._formDirective?.wrapperSelector) {
|
|
89
|
+
return this._formDirective.wrapperSelector;
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
getlabelSelector() {
|
|
@@ -96,12 +96,12 @@ export class FsControlDirective {
|
|
|
96
96
|
if (this.labelSelector) {
|
|
97
97
|
return this.labelSelector;
|
|
98
98
|
}
|
|
99
|
-
else if (this.
|
|
100
|
-
return this.
|
|
99
|
+
else if (this._formDirective?.labelSelector) {
|
|
100
|
+
return this._formDirective.labelSelector;
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
getWrapperElement() {
|
|
104
|
-
const wrapper = this.
|
|
104
|
+
const wrapper = this._getWrapper(this._elementRef.nativeElement);
|
|
105
105
|
if (wrapper) {
|
|
106
106
|
return wrapper;
|
|
107
107
|
}
|
|
@@ -116,14 +116,16 @@ export class FsControlDirective {
|
|
|
116
116
|
</div>
|
|
117
117
|
</mat-form-field>
|
|
118
118
|
*/
|
|
119
|
+
get _shouldErrorBeRendered() {
|
|
120
|
+
return this._ngControl.invalid
|
|
121
|
+
&& (this._ngControl.dirty || this._formDirective?.ngForm?.submitted);
|
|
122
|
+
}
|
|
119
123
|
render() {
|
|
120
|
-
if (this.
|
|
121
|
-
const renderer = this.
|
|
124
|
+
if (this._ngControl) {
|
|
125
|
+
const renderer = this._renderer2;
|
|
122
126
|
const wrapper = this.getWrapperElement();
|
|
123
|
-
const error = this.
|
|
124
|
-
|
|
125
|
-
&& (this.ngControl.dirty || this.formDirective?.ngForm?.submitted);
|
|
126
|
-
if (shouldErrorBeRendered && error) {
|
|
127
|
+
const error = this._ngControl.dirty ? this._getError(this._ngControl) : null;
|
|
128
|
+
if (this._shouldErrorBeRendered && error) {
|
|
127
129
|
wrapper.classList.add('ng-invalid', 'ng-dirty');
|
|
128
130
|
}
|
|
129
131
|
else {
|
|
@@ -134,43 +136,42 @@ export class FsControlDirective {
|
|
|
134
136
|
}
|
|
135
137
|
const messageWrapper = wrapper.querySelector(this.getMessageSelector());
|
|
136
138
|
if (!messageWrapper) {
|
|
137
|
-
return console
|
|
138
|
-
|
|
139
|
-
if (this.getlabelSelector()) {
|
|
140
|
-
const labelWrapper = wrapper.querySelector(this.getlabelSelector());
|
|
141
|
-
if (labelWrapper) {
|
|
142
|
-
if (this.appendLabelClass) {
|
|
143
|
-
this.renderer2.addClass(labelWrapper, this.appendLabelClass);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
139
|
+
return console
|
|
140
|
+
.warn(`Failed to locate ${this.getMessageSelector()}`, this._elementRef.nativeElement);
|
|
146
141
|
}
|
|
147
142
|
if (this.appendMessageClass) {
|
|
148
143
|
renderer.addClass(messageWrapper, this.appendMessageClass);
|
|
149
144
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
145
|
+
this._renderHint(error, messageWrapper);
|
|
146
|
+
this._renderError(wrapper, messageWrapper, error);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
_renderHint(error, messageWrapper) {
|
|
150
|
+
if (this.getHintWrapperSelector()) {
|
|
151
|
+
const hints = messageWrapper.querySelectorAll('.mat-mdc-form-field-hint');
|
|
152
|
+
hints.forEach((hint) => {
|
|
153
|
+
this._renderer2.setStyle(hint, 'display', error ? 'none' : 'block');
|
|
154
|
+
if (this.appendHintClass) {
|
|
155
|
+
this._renderer2.addClass(hint, this.appendHintClass);
|
|
157
156
|
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
renderer.addClass(errorWrapper, this.appendErrorClass);
|
|
169
|
-
renderer.addClass(errorWrapper, `${this.appendErrorClass}-${error.name}`);
|
|
170
|
-
const errorText = renderer.createText(error.message);
|
|
171
|
-
renderer.appendChild(errorWrapper, errorText);
|
|
172
|
-
messageWrapper.appendChild(errorWrapper);
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
_renderError(wrapper, messageWrapper, error) {
|
|
161
|
+
let errorWrapper = wrapper.querySelector('.fs-form-error-target');
|
|
162
|
+
if (errorWrapper) {
|
|
163
|
+
errorWrapper.remove();
|
|
164
|
+
}
|
|
165
|
+
if (!this._shouldErrorBeRendered || !error) {
|
|
166
|
+
return;
|
|
173
167
|
}
|
|
168
|
+
errorWrapper = this._renderer2.createElement('div');
|
|
169
|
+
this._renderer2.addClass(errorWrapper, 'fs-form-error-target');
|
|
170
|
+
this._renderer2.addClass(errorWrapper, this.appendErrorClass);
|
|
171
|
+
this._renderer2.addClass(errorWrapper, `${this.appendErrorClass}-${error.name}`);
|
|
172
|
+
const errorText = this._renderer2.createText(error.message);
|
|
173
|
+
this._renderer2.appendChild(errorWrapper, errorText);
|
|
174
|
+
messageWrapper.querySelector(this.getHintWrapperSelector()).prepend(errorWrapper);
|
|
174
175
|
}
|
|
175
176
|
_subscribeToStatusChagnes() {
|
|
176
177
|
if (this._control) {
|
|
@@ -179,30 +180,30 @@ export class FsControlDirective {
|
|
|
179
180
|
.subscribe(this.render.bind(this));
|
|
180
181
|
}
|
|
181
182
|
}
|
|
182
|
-
|
|
183
|
+
_getWrapper(node, count = 0) {
|
|
183
184
|
if (!node || count > 10) {
|
|
184
185
|
return null;
|
|
185
186
|
}
|
|
186
187
|
if (node.parentNode && node.parentNode.querySelector(this.getWrapperSelector())) {
|
|
187
188
|
return node;
|
|
188
189
|
}
|
|
189
|
-
return this.
|
|
190
|
+
return this._getWrapper(node.parentNode, ++count);
|
|
190
191
|
}
|
|
191
|
-
|
|
192
|
+
_parseErrorMessage(message, args) {
|
|
192
193
|
values(args)
|
|
193
194
|
.forEach((name) => {
|
|
194
195
|
message = message.replace(/\$\(\d\)/, name);
|
|
195
196
|
});
|
|
196
197
|
return message;
|
|
197
198
|
}
|
|
198
|
-
|
|
199
|
+
_getError(controlRef) {
|
|
199
200
|
const name = keys(controlRef.control.errors)[0];
|
|
200
201
|
if (!name) {
|
|
201
202
|
return null;
|
|
202
203
|
}
|
|
203
204
|
let message = controlRef.control.errors[name];
|
|
204
205
|
if (this._validateMessages[name]) {
|
|
205
|
-
message = this.
|
|
206
|
+
message = this._parseErrorMessage(this._validateMessages[name], message);
|
|
206
207
|
}
|
|
207
208
|
return { name: name, message: message };
|
|
208
209
|
}
|
|
@@ -266,4 +267,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
266
267
|
}], validateMessages: [{
|
|
267
268
|
type: Input
|
|
268
269
|
}] } });
|
|
269
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9jb250cm9sLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFHTCxRQUFRLEVBQ1IsU0FBUyxFQUNULElBQUksR0FDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLFNBQVMsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV6QyxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLGlCQUFpQixHQUNsQixNQUFNLDRDQUE0QyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQWV6RCxNQUFNLE9BQU8sa0JBQWtCO0lBMEJqQjtJQUNBO0lBQ0E7SUFDbUM7SUFDdkI7SUFDeUI7SUE3QmpDLGVBQWUsQ0FBaUI7SUFDaEMsZUFBZSxDQUFpQjtJQUNoQyxZQUFZLENBQWlCO0lBQzdCLGFBQWEsQ0FBaUI7SUFDOUIsa0JBQWtCLEdBQUcsaUJBQWlCLENBQUM7SUFDdkMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO0lBQ25DLGdCQUFnQixHQUFHLGVBQWUsQ0FBQztJQUNuQyxlQUFlLEdBQUcsY0FBYyxDQUFDO0lBRWpELElBQ1csZ0JBQWdCLENBQUMsUUFBZ0M7UUFDMUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHO1lBQ3ZCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQjtZQUN6QixHQUFHLFFBQVE7U0FD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RSxpQkFBaUI7b0JBQzNCLFNBQVMsRUFBRTt3QkFDVCx5QkFBeUI7cUJBQzFCO2lCQUNGOzswQkE4QkksSUFBSTs7MEJBQUksTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUNoQyxRQUFROzswQkFDUixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7eUNBN0JyQixlQUFlO3NCQUE5QixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLGtCQUFrQjtzQkFBakMsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBR0ssZ0JBQWdCO3NCQUQxQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBSZW5kZXJlcjIsXG4gIFNlbGYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBOZ0NvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsga2V5cywgdmFsdWVzIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuaW1wb3J0IHtcbiAgVkFMSURBVEVfTUVTU0FHRV9QUk9WSURFUixcbiAgVkFMSURBVEVfTUVTU0FHRVMsXG59IGZyb20gJy4uLy4uL3Byb3ZpZGVycy92YWxpZGF0ZS1tZXNzYWdlcy5wcm92aWRlcic7XG5pbXBvcnQgeyBGc0Zvcm1EaXJlY3RpdmUgfSBmcm9tICcuLi9mb3JtL2Zvcm0uZGlyZWN0aXZlJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIEZzQ29udHJvbERpcmVjdGl2ZSB7XG4gIHZhbGlkYXRlPyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbDtcbiAgdmFsaWRhdGVBc3luYz8oY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogUHJvbWlzZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gfCBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPjtcbn1cblxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZnNGb3JtQ29udHJvbF0nLFxuICBwcm92aWRlcnM6IFtcbiAgICBWQUxJREFURV9NRVNTQUdFX1BST1ZJREVSLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGc0NvbnRyb2xEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgcHVibGljIHdyYXBwZXJTZWxlY3Rvcjogc3RyaW5nIHwgZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBtZXNzYWdlU2VsZWN0b3I6IHN0cmluZyB8IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgaGludFNlbGVjdG9yOiBzdHJpbmcgfCBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGxhYmVsU2VsZWN0b3I6IHN0cmluZyB8IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgYXBwZW5kTWVzc2FnZUNsYXNzID0gJ2ZzLWZvcm0tbWVzc2FnZSc7XG4gIEBJbnB1dCgpIHB1YmxpYyBhcHBlbmRMYWJlbENsYXNzID0gJ2ZzLWZvcm0tbGFiZWwnO1xuICBASW5wdXQoKSBwdWJsaWMgYXBwZW5kRXJyb3JDbGFzcyA9ICdmcy1mb3JtLWVycm9yJztcbiAgQElucHV0KCkgcHVibGljIGFwcGVuZEhpbnRDbGFzcyA9ICdmcy1mb3JtLWhpbnQnO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdmFsaWRhdGVNZXNzYWdlcyhtZXNzYWdlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xuICAgIHRoaXMuX3ZhbGlkYXRlTWVzc2FnZXMgPSB7XG4gICAgICAuLi50aGlzLl92YWxpZGF0ZU1lc3NhZ2VzLFxuICAgICAgLi4ubWVzc2FnZXMsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBlcnJvcnMgPSBbXTtcblxuICBwcm90ZWN0ZWQgX2NvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByb3RlY3RlZCByZW5kZXJlcjI6IFJlbmRlcmVyMixcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBTZWxmKCkgQEluamVjdChWQUxJREFURV9NRVNTQUdFUykgcHJvdGVjdGVkIF92YWxpZGF0ZU1lc3NhZ2VzLFxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZzRm9ybURpcmVjdGl2ZSkgcHJvdGVjdGVkIGZvcm1EaXJlY3RpdmU6IEZzRm9ybURpcmVjdGl2ZSxcbiAgKSB7XG5cbiAgICBpZiAobmdDb250cm9sKSB7XG4gICAgICB0aGlzLl9jb250cm9sID0gbmdDb250cm9sLmNvbnRyb2w7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSB2YWxpZCBuZ01vZGVsJywgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fc2V0dXBWYWxpZGF0b3JzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLl9zdWJzY3JpYmVUb1N0YXR1c0NoYWduZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNZXNzYWdlU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5tZXNzYWdlU2VsZWN0b3IgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubWVzc2FnZVNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5tZXNzYWdlU2VsZWN0b3I7XG5cbiAgICB9IGVsc2UgaWYgKHRoaXMuZm9ybURpcmVjdGl2ZT8ubWVzc2FnZVNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtRGlyZWN0aXZlLm1lc3NhZ2VTZWxlY3RvcjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0SGludFdyYXBwZXJTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmhpbnRTZWxlY3RvciA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oaW50U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLmhpbnRTZWxlY3RvcjtcblxuICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtRGlyZWN0aXZlPy5oaW50U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1EaXJlY3RpdmUuaGludFNlbGVjdG9yO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRXcmFwcGVyU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy53cmFwcGVyU2VsZWN0b3IgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMud3JhcHBlclNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy53cmFwcGVyU2VsZWN0b3I7XG5cbiAgICB9IGVsc2UgaWYgKHRoaXMuZm9ybURpcmVjdGl2ZT8ud3JhcHBlclNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtRGlyZWN0aXZlLndyYXBwZXJTZWxlY3RvcjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0bGFiZWxTZWxlY3RvcigpOiBzdHJpbmcge1xuXG4gICAgaWYgKHRoaXMubGFiZWxTZWxlY3RvciA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sYWJlbFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYWJlbFNlbGVjdG9yO1xuXG4gICAgfSBlbHNlIGlmICh0aGlzLmZvcm1EaXJlY3RpdmU/LmxhYmVsU2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1EaXJlY3RpdmUubGFiZWxTZWxlY3RvcjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0V3JhcHBlckVsZW1lbnQoKSB7XG5cbiAgICBjb25zdCB3cmFwcGVyID0gdGhpcy5nZXRXcmFwcGVyKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG5cbiAgICBpZiAod3JhcHBlcikge1xuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIC8qXG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWF0LWZvcm0tZmllbGRcIj4gIDwtLSBGaWVsZCBXcmFwcGVyIENsYXNzLiBMb29rIGZvciBwYXJlbnRzIGZyb20gdGhlIG5hdGl2ZSBlbGVtZW50IHdpdGggdGhlIG1hdGNoaW5nIHdyYXBwZXJTZWxlY3Rvci4gSWYgbm90IGZvdW5kIGRlZmF1bHRzIHRvIG5hdGl2ZSBlbGVtZW50LlxuICAgICAgPGlucHV0PlxuICAgICAgPGRpdiBjbGFzcz1cImZzLWZvcm0tbWVzc2FnZVwiPiA8LS0gTWVzc2FnZSBTZWxlY3Rvci4gTG9vayBmb3IgdGhlIGVsZW1lbnQgd2l0aCBjbGFzcyAuZnMtZm9ybS1tZXNzYWdlIG9yIG1lc3NhZ2VTZWxlY3RvclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtZm9ybS1tZXNzYWdlXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcy1mb3JtLWhpbnRcIj48L2Rpdj4gPC0tIEhpbnQgU2VsZWN0b3IuIExvb2sgZm9yIHRoZSBlbGVtZW50IHdpdGggY2xhc3MgLmZzLWZvcm0taGludCBvciBoaW50U2VsZWN0b3JcbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICovXG4gIHByb3RlY3RlZCByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICBjb25zdCByZW5kZXJlciA9IHRoaXMucmVuZGVyZXIyO1xuICAgICAgY29uc3Qgd3JhcHBlciA9IHRoaXMuZ2V0V3JhcHBlckVsZW1lbnQoKTtcbiAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5uZ0NvbnRyb2wuZGlydHkgPyB0aGlzLmdldEVycm9yKHRoaXMubmdDb250cm9sKSA6IG51bGw7XG4gICAgICBjb25zdCBzaG91bGRFcnJvckJlUmVuZGVyZWQgPSB0aGlzLm5nQ29udHJvbC5pbnZhbGlkXG4gICAgICAgICYmICh0aGlzLm5nQ29udHJvbC5kaXJ0eSB8fCB0aGlzLmZvcm1EaXJlY3RpdmU/Lm5nRm9ybT8uc3VibWl0dGVkKTtcblxuICAgICAgaWYgKHNob3VsZEVycm9yQmVSZW5kZXJlZCAmJiBlcnJvcikge1xuICAgICAgICB3cmFwcGVyLmNsYXNzTGlzdC5hZGQoJ25nLWludmFsaWQnLCAnbmctZGlydHknKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdyYXBwZXIuY2xhc3NMaXN0LnJlbW92ZSgnbmctaW52YWxpZCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuZ2V0TWVzc2FnZVNlbGVjdG9yKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXNzYWdlV3JhcHBlciA9IHdyYXBwZXIucXVlcnlTZWxlY3Rvcih0aGlzLmdldE1lc3NhZ2VTZWxlY3RvcigpKTtcblxuICAgICAgaWYgKCFtZXNzYWdlV3JhcHBlcikge1xuICAgICAgICByZXR1cm4gY29uc29sZS53YXJuKGBGYWlsZWQgdG8gbG9jYXRlICR7ICB0aGlzLmdldE1lc3NhZ2VTZWxlY3RvcigpfWAsIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmdldGxhYmVsU2VsZWN0b3IoKSkge1xuICAgICAgICBjb25zdCBsYWJlbFdyYXBwZXIgPSB3cmFwcGVyLnF1ZXJ5U2VsZWN0b3IodGhpcy5nZXRsYWJlbFNlbGVjdG9yKCkpO1xuXG4gICAgICAgIGlmIChsYWJlbFdyYXBwZXIpIHtcbiAgICAgICAgICBpZiAodGhpcy5hcHBlbmRMYWJlbENsYXNzKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyMi5hZGRDbGFzcyhsYWJlbFdyYXBwZXIsIHRoaXMuYXBwZW5kTGFiZWxDbGFzcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmFwcGVuZE1lc3NhZ2VDbGFzcykge1xuICAgICAgICByZW5kZXJlci5hZGRDbGFzcyhtZXNzYWdlV3JhcHBlciwgdGhpcy5hcHBlbmRNZXNzYWdlQ2xhc3MpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5nZXRIaW50V3JhcHBlclNlbGVjdG9yKCkpIHtcbiAgICAgICAgY29uc3QgaGludCA9IG1lc3NhZ2VXcmFwcGVyLnF1ZXJ5U2VsZWN0b3IodGhpcy5nZXRIaW50V3JhcHBlclNlbGVjdG9yKCkpO1xuXG4gICAgICAgIGlmIChoaW50KSB7XG4gICAgICAgICAgcmVuZGVyZXIuc2V0U3R5bGUoaGludCwgJ2Rpc3BsYXknLCBlcnJvciA/ICdub25lJyA6ICdibG9jaycpO1xuXG4gICAgICAgICAgaWYgKHRoaXMuYXBwZW5kSGludENsYXNzKSB7XG4gICAgICAgICAgICByZW5kZXJlci5hZGRDbGFzcyhoaW50LCB0aGlzLmFwcGVuZEhpbnRDbGFzcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxldCBlcnJvcldyYXBwZXIgPSB3cmFwcGVyLnF1ZXJ5U2VsZWN0b3IoJy5mcy1mb3JtLWVycm9yLXRhcmdldCcpO1xuICAgICAgaWYgKGVycm9yV3JhcHBlcikge1xuICAgICAgICBlcnJvcldyYXBwZXIucmVtb3ZlKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghc2hvdWxkRXJyb3JCZVJlbmRlcmVkIHx8ICFlcnJvcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGVycm9yV3JhcHBlciA9IHJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgcmVuZGVyZXIuYWRkQ2xhc3MoZXJyb3JXcmFwcGVyLCAnZnMtZm9ybS1lcnJvci10YXJnZXQnKTtcbiAgICAgIHJlbmRlcmVyLmFkZENsYXNzKGVycm9yV3JhcHBlciwgdGhpcy5hcHBlbmRFcnJvckNsYXNzKTtcbiAgICAgIHJlbmRlcmVyLmFkZENsYXNzKGVycm9yV3JhcHBlciwgYCR7dGhpcy5hcHBlbmRFcnJvckNsYXNzICB9LSR7ICBlcnJvci5uYW1lfWApO1xuXG4gICAgICBjb25zdCBlcnJvclRleHQgPSByZW5kZXJlci5jcmVhdGVUZXh0KGVycm9yLm1lc3NhZ2UpO1xuXG4gICAgICByZW5kZXJlci5hcHBlbmRDaGlsZChlcnJvcldyYXBwZXIsIGVycm9yVGV4dCk7XG4gICAgICBtZXNzYWdlV3JhcHBlci5hcHBlbmRDaGlsZChlcnJvcldyYXBwZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfc3Vic2NyaWJlVG9TdGF0dXNDaGFnbmVzKCk6dm9pZCB7XG4gICAgaWYgKHRoaXMuX2NvbnRyb2wpIHtcbiAgICAgIHRoaXMuX2NvbnRyb2wuc3RhdHVzQ2hhbmdlc1xuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUodGhpcy5yZW5kZXIuYmluZCh0aGlzKSk7XG4gICAgfVxuICB9XG5cblxuICBwcm90ZWN0ZWQgZ2V0V3JhcHBlcihub2RlLCBjb3VudCA9IDApIHtcbiAgICBpZiAoIW5vZGUgfHwgY291bnQgPiAxMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUucGFyZW50Tm9kZSAmJiBub2RlLnBhcmVudE5vZGUucXVlcnlTZWxlY3Rvcih0aGlzLmdldFdyYXBwZXJTZWxlY3RvcigpKSkge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0V3JhcHBlcihub2RlLnBhcmVudE5vZGUsICsrY291bnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlRXJyb3JNZXNzYWdlKG1lc3NhZ2UsIGFyZ3MpOiBzdHJpbmcge1xuICAgIHZhbHVlcyhhcmdzKVxuICAgICAgLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvXFwkXFwoXFxkXFwpLywgbmFtZSk7XG4gICAgICB9KTtcblxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEVycm9yKGNvbnRyb2xSZWYpOiB7IG5hbWU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nIH0ge1xuXG4gICAgY29uc3QgbmFtZSA9IGtleXMoY29udHJvbFJlZi5jb250cm9sLmVycm9ycylbMF07XG5cbiAgICBpZiAoIW5hbWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBtZXNzYWdlID0gY29udHJvbFJlZi5jb250cm9sLmVycm9yc1tuYW1lXTtcblxuICAgIGlmICh0aGlzLl92YWxpZGF0ZU1lc3NhZ2VzW25hbWVdKSB7XG4gICAgICBtZXNzYWdlID0gdGhpcy5wYXJzZUVycm9yTWVzc2FnZSh0aGlzLl92YWxpZGF0ZU1lc3NhZ2VzW25hbWVdLCBtZXNzYWdlKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBuYW1lOiBuYW1lLCBtZXNzYWdlOiBtZXNzYWdlIH07XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cFZhbGlkYXRvcnMoKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuX2NvbnRyb2w7XG5cbiAgICBpZiAodGhpcy52YWxpZGF0ZSkge1xuICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IGNvbnRyb2wudmFsaWRhdG9yXG4gICAgICAgID8gW2NvbnRyb2wudmFsaWRhdG9yLCB0aGlzLnZhbGlkYXRlLmJpbmQodGhpcyldXG4gICAgICAgIDogdGhpcy52YWxpZGF0ZS5iaW5kKHRoaXMpO1xuXG4gICAgICBjb250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmFsaWRhdGVBc3luYykge1xuICAgICAgY29uc3QgYXN5bmNWYWxpZGF0b3JzID0gY29udHJvbC5hc3luY1ZhbGlkYXRvclxuICAgICAgICA/IFtjb250cm9sLmFzeW5jVmFsaWRhdG9yLCB0aGlzLnZhbGlkYXRlQXN5bmMuYmluZCh0aGlzKV1cbiAgICAgICAgOiB0aGlzLnZhbGlkYXRlQXN5bmMuYmluZCh0aGlzKTtcblxuICAgICAgY29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnMoYXN5bmNWYWxpZGF0b3JzKTtcbiAgICB9XG5cbiAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG59XG4iXX0=
|
|
270
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9jb250cm9sLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFHTCxRQUFRLEVBQ1IsU0FBUyxFQUNULElBQUksR0FDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLFNBQVMsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV6QyxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLGlCQUFpQixHQUNsQixNQUFNLDRDQUE0QyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQWV6RCxNQUFNLE9BQU8sa0JBQWtCO0lBMEJqQjtJQUNBO0lBQ0E7SUFDbUM7SUFDdkI7SUFDeUI7SUE3QmpDLGVBQWUsQ0FBaUI7SUFDaEMsZUFBZSxDQUFpQjtJQUNoQyxZQUFZLENBQWlCO0lBQzdCLGFBQWEsQ0FBaUI7SUFDOUIsa0JBQWtCLEdBQUcsaUJBQWlCLENBQUM7SUFDdkMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO0lBQ25DLGdCQUFnQixHQUFHLGVBQWUsQ0FBQztJQUNuQyxlQUFlLEdBQUcsY0FBYyxDQUFDO0lBRWpELElBQ1csZ0JBQWdCLENBQUMsUUFBZ0M7UUFDMUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHO1lBQ3ZCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQjtZQUN6QixHQUFHLFFBQVE7U0FD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MkZBL0IxQixrQkFBa0IsNFhBSmxCO1lBQ1QseUJBQXlCO1NBQzFCOzsyRkFFVSxrQkFBa0I7a0JBTjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsU0FBUyxFQUFFO3dCQUNULHlCQUF5QjtxQkFDMUI7aUJBQ0Y7OzBCQThCSSxJQUFJOzswQkFBSSxNQUFNOzJCQUFDLGlCQUFpQjs7MEJBQ2hDLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZTt5Q0E3QnJCLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1Usa0JBQWtCO3NCQUFqQyxLQUFLO2dCQUNVLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFHSyxnQkFBZ0I7c0JBRDFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFJlbmRlcmVyMixcbiAgU2VsZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIE5nQ29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBrZXlzLCB2YWx1ZXMgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQge1xuICBWQUxJREFURV9NRVNTQUdFX1BST1ZJREVSLFxuICBWQUxJREFURV9NRVNTQUdFUyxcbn0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL3ZhbGlkYXRlLW1lc3NhZ2VzLnByb3ZpZGVyJztcbmltcG9ydCB7IEZzRm9ybURpcmVjdGl2ZSB9IGZyb20gJy4uL2Zvcm0vZm9ybS5kaXJlY3RpdmUnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRnNDb250cm9sRGlyZWN0aXZlIHtcbiAgdmFsaWRhdGU/KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsO1xuICB2YWxpZGF0ZUFzeW5jPyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBQcm9taXNlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiB8IE9ic2VydmFibGU8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+O1xufVxuXG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tmc0Zvcm1Db250cm9sXScsXG4gIHByb3ZpZGVyczogW1xuICAgIFZBTElEQVRFX01FU1NBR0VfUFJPVklERVIsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzQ29udHJvbERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBwdWJsaWMgd3JhcHBlclNlbGVjdG9yOiBzdHJpbmcgfCBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIG1lc3NhZ2VTZWxlY3Rvcjogc3RyaW5nIHwgZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBoaW50U2VsZWN0b3I6IHN0cmluZyB8IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgbGFiZWxTZWxlY3Rvcjogc3RyaW5nIHwgZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBhcHBlbmRNZXNzYWdlQ2xhc3MgPSAnZnMtZm9ybS1tZXNzYWdlJztcbiAgQElucHV0KCkgcHVibGljIGFwcGVuZExhYmVsQ2xhc3MgPSAnZnMtZm9ybS1sYWJlbCc7XG4gIEBJbnB1dCgpIHB1YmxpYyBhcHBlbmRFcnJvckNsYXNzID0gJ2ZzLWZvcm0tZXJyb3InO1xuICBASW5wdXQoKSBwdWJsaWMgYXBwZW5kSGludENsYXNzID0gJ2ZzLWZvcm0taGludCc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB2YWxpZGF0ZU1lc3NhZ2VzKG1lc3NhZ2VzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XG4gICAgdGhpcy5fdmFsaWRhdGVNZXNzYWdlcyA9IHtcbiAgICAgIC4uLnRoaXMuX3ZhbGlkYXRlTWVzc2FnZXMsXG4gICAgICAuLi5tZXNzYWdlcyxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGVycm9ycyA9IFtdO1xuXG4gIHByb3RlY3RlZCBfY29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJvdGVjdGVkIF9yZW5kZXJlcjI6IFJlbmRlcmVyMixcbiAgICBwcm90ZWN0ZWQgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICBAU2VsZigpIEBJbmplY3QoVkFMSURBVEVfTUVTU0FHRVMpIHByb3RlY3RlZCBfdmFsaWRhdGVNZXNzYWdlcyxcbiAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgX25nQ29udHJvbDogTmdDb250cm9sLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRnNGb3JtRGlyZWN0aXZlKSBwcm90ZWN0ZWQgX2Zvcm1EaXJlY3RpdmU6IEZzRm9ybURpcmVjdGl2ZSxcbiAgKSB7XG5cbiAgICBpZiAoX25nQ29udHJvbCkge1xuICAgICAgdGhpcy5fY29udHJvbCA9IF9uZ0NvbnRyb2wuY29udHJvbDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignVGhlIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIG5nTW9kZWwnLCB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl9zZXR1cFZhbGlkYXRvcnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuX3N1YnNjcmliZVRvU3RhdHVzQ2hhZ25lcygpO1xuICB9XG5cbiAgcHVibGljIGdldE1lc3NhZ2VTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLm1lc3NhZ2VTZWxlY3RvciA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tZXNzYWdlU2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VTZWxlY3RvcjtcblxuICAgIH0gZWxzZSBpZiAodGhpcy5fZm9ybURpcmVjdGl2ZT8ubWVzc2FnZVNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZm9ybURpcmVjdGl2ZS5tZXNzYWdlU2VsZWN0b3I7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEhpbnRXcmFwcGVyU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5oaW50U2VsZWN0b3IgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGludFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5oaW50U2VsZWN0b3I7XG5cbiAgICB9IGVsc2UgaWYgKHRoaXMuX2Zvcm1EaXJlY3RpdmU/LmhpbnRTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1EaXJlY3RpdmUuaGludFNlbGVjdG9yO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRXcmFwcGVyU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy53cmFwcGVyU2VsZWN0b3IgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMud3JhcHBlclNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy53cmFwcGVyU2VsZWN0b3I7XG5cbiAgICB9IGVsc2UgaWYgKHRoaXMuX2Zvcm1EaXJlY3RpdmU/LndyYXBwZXJTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1EaXJlY3RpdmUud3JhcHBlclNlbGVjdG9yO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRsYWJlbFNlbGVjdG9yKCk6IHN0cmluZyB7XG5cbiAgICBpZiAodGhpcy5sYWJlbFNlbGVjdG9yID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxhYmVsU2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhYmVsU2VsZWN0b3I7XG5cbiAgICB9IGVsc2UgaWYgKHRoaXMuX2Zvcm1EaXJlY3RpdmU/LmxhYmVsU2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLl9mb3JtRGlyZWN0aXZlLmxhYmVsU2VsZWN0b3I7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFdyYXBwZXJFbGVtZW50KCkge1xuICAgIGNvbnN0IHdyYXBwZXIgPSB0aGlzLl9nZXRXcmFwcGVyKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG5cbiAgICBpZiAod3JhcHBlcikge1xuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIC8qXG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWF0LWZvcm0tZmllbGRcIj4gIDwtLSBGaWVsZCBXcmFwcGVyIENsYXNzLiBMb29rIGZvciBwYXJlbnRzIGZyb20gdGhlIG5hdGl2ZSBlbGVtZW50IHdpdGggdGhlIG1hdGNoaW5nIHdyYXBwZXJTZWxlY3Rvci4gSWYgbm90IGZvdW5kIGRlZmF1bHRzIHRvIG5hdGl2ZSBlbGVtZW50LlxuICAgICAgPGlucHV0PlxuICAgICAgPGRpdiBjbGFzcz1cImZzLWZvcm0tbWVzc2FnZVwiPiA8LS0gTWVzc2FnZSBTZWxlY3Rvci4gTG9vayBmb3IgdGhlIGVsZW1lbnQgd2l0aCBjbGFzcyAuZnMtZm9ybS1tZXNzYWdlIG9yIG1lc3NhZ2VTZWxlY3RvclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtZm9ybS1tZXNzYWdlXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcy1mb3JtLWhpbnRcIj48L2Rpdj4gPC0tIEhpbnQgU2VsZWN0b3IuIExvb2sgZm9yIHRoZSBlbGVtZW50IHdpdGggY2xhc3MgLmZzLWZvcm0taGludCBvciBoaW50U2VsZWN0b3JcbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICovXG5cbiAgcHJpdmF0ZSBnZXQgX3Nob3VsZEVycm9yQmVSZW5kZXJlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbmdDb250cm9sLmludmFsaWRcbiAgICAgICYmICh0aGlzLl9uZ0NvbnRyb2wuZGlydHkgfHwgdGhpcy5fZm9ybURpcmVjdGl2ZT8ubmdGb3JtPy5zdWJtaXR0ZWQpO1xuICB9XG5cbiAgcHVibGljIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5fbmdDb250cm9sKSB7XG4gICAgICBjb25zdCByZW5kZXJlciA9IHRoaXMuX3JlbmRlcmVyMjtcbiAgICAgIGNvbnN0IHdyYXBwZXIgPSB0aGlzLmdldFdyYXBwZXJFbGVtZW50KCk7XG4gICAgICBjb25zdCBlcnJvciA9IHRoaXMuX25nQ29udHJvbC5kaXJ0eSA/IHRoaXMuX2dldEVycm9yKHRoaXMuX25nQ29udHJvbCkgOiBudWxsO1xuXG4gICAgICBpZiAodGhpcy5fc2hvdWxkRXJyb3JCZVJlbmRlcmVkICYmIGVycm9yKSB7XG4gICAgICAgIHdyYXBwZXIuY2xhc3NMaXN0LmFkZCgnbmctaW52YWxpZCcsICduZy1kaXJ0eScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd3JhcHBlci5jbGFzc0xpc3QucmVtb3ZlKCduZy1pbnZhbGlkJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5nZXRNZXNzYWdlU2VsZWN0b3IoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1lc3NhZ2VXcmFwcGVyID0gd3JhcHBlci5xdWVyeVNlbGVjdG9yKHRoaXMuZ2V0TWVzc2FnZVNlbGVjdG9yKCkpO1xuICAgXG4gICAgICBpZiAoIW1lc3NhZ2VXcmFwcGVyKSB7XG4gICAgICAgIHJldHVybiBjb25zb2xlXG4gICAgICAgICAgLndhcm4oYEZhaWxlZCB0byBsb2NhdGUgJHsgIHRoaXMuZ2V0TWVzc2FnZVNlbGVjdG9yKCl9YCwgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuYXBwZW5kTWVzc2FnZUNsYXNzKSB7XG4gICAgICAgIHJlbmRlcmVyLmFkZENsYXNzKG1lc3NhZ2VXcmFwcGVyLCB0aGlzLmFwcGVuZE1lc3NhZ2VDbGFzcyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3JlbmRlckhpbnQoZXJyb3IsIG1lc3NhZ2VXcmFwcGVyKTtcbiAgICAgIHRoaXMuX3JlbmRlckVycm9yKHdyYXBwZXIsIG1lc3NhZ2VXcmFwcGVyLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIF9yZW5kZXJIaW50KGVycm9yLCBtZXNzYWdlV3JhcHBlcikge1xuICAgIGlmICh0aGlzLmdldEhpbnRXcmFwcGVyU2VsZWN0b3IoKSkge1xuICAgICAgY29uc3QgaGludHMgPSBtZXNzYWdlV3JhcHBlci5xdWVyeVNlbGVjdG9yQWxsKCcubWF0LW1kYy1mb3JtLWZpZWxkLWhpbnQnKTtcblxuICAgICAgaGludHMuZm9yRWFjaCgoaGludCkgPT4ge1xuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUoaGludCwgJ2Rpc3BsYXknLCBlcnJvciA/ICdub25lJyA6ICdibG9jaycpO1xuXG4gICAgICAgIGlmICh0aGlzLmFwcGVuZEhpbnRDbGFzcykge1xuICAgICAgICAgIHRoaXMuX3JlbmRlcmVyMi5hZGRDbGFzcyhoaW50LCB0aGlzLmFwcGVuZEhpbnRDbGFzcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfcmVuZGVyRXJyb3Iod3JhcHBlciwgbWVzc2FnZVdyYXBwZXIsIGVycm9yKSB7XG4gICAgbGV0IGVycm9yV3JhcHBlciA9IHdyYXBwZXIucXVlcnlTZWxlY3RvcignLmZzLWZvcm0tZXJyb3ItdGFyZ2V0Jyk7XG4gICAgaWYgKGVycm9yV3JhcHBlcikge1xuICAgICAgZXJyb3JXcmFwcGVyLnJlbW92ZSgpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fc2hvdWxkRXJyb3JCZVJlbmRlcmVkIHx8ICFlcnJvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGVycm9yV3JhcHBlciA9IHRoaXMuX3JlbmRlcmVyMi5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLl9yZW5kZXJlcjIuYWRkQ2xhc3MoZXJyb3JXcmFwcGVyLCAnZnMtZm9ybS1lcnJvci10YXJnZXQnKTtcbiAgICB0aGlzLl9yZW5kZXJlcjIuYWRkQ2xhc3MoZXJyb3JXcmFwcGVyLCB0aGlzLmFwcGVuZEVycm9yQ2xhc3MpO1xuICAgIHRoaXMuX3JlbmRlcmVyMi5hZGRDbGFzcyhlcnJvcldyYXBwZXIsIGAke3RoaXMuYXBwZW5kRXJyb3JDbGFzcyAgfS0keyAgZXJyb3IubmFtZX1gKTtcblxuICAgIGNvbnN0IGVycm9yVGV4dCA9IHRoaXMuX3JlbmRlcmVyMi5jcmVhdGVUZXh0KGVycm9yLm1lc3NhZ2UpO1xuXG4gICAgdGhpcy5fcmVuZGVyZXIyLmFwcGVuZENoaWxkKGVycm9yV3JhcHBlciwgZXJyb3JUZXh0KTtcbiAgICBtZXNzYWdlV3JhcHBlci5xdWVyeVNlbGVjdG9yKHRoaXMuZ2V0SGludFdyYXBwZXJTZWxlY3RvcigpKS5wcmVwZW5kKGVycm9yV3JhcHBlcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgX3N1YnNjcmliZVRvU3RhdHVzQ2hhZ25lcygpOnZvaWQge1xuICAgIGlmICh0aGlzLl9jb250cm9sKSB7XG4gICAgICB0aGlzLl9jb250cm9sLnN0YXR1c0NoYW5nZXNcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKHRoaXMucmVuZGVyLmJpbmQodGhpcykpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfZ2V0V3JhcHBlcihub2RlLCBjb3VudCA9IDApIHtcbiAgICBpZiAoIW5vZGUgfHwgY291bnQgPiAxMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUucGFyZW50Tm9kZSAmJiBub2RlLnBhcmVudE5vZGUucXVlcnlTZWxlY3Rvcih0aGlzLmdldFdyYXBwZXJTZWxlY3RvcigpKSkge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2dldFdyYXBwZXIobm9kZS5wYXJlbnROb2RlLCArK2NvdW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfcGFyc2VFcnJvck1lc3NhZ2UobWVzc2FnZSwgYXJncyk6IHN0cmluZyB7XG4gICAgdmFsdWVzKGFyZ3MpXG4gICAgICAuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKC9cXCRcXChcXGRcXCkvLCBuYW1lKTtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2dldEVycm9yKGNvbnRyb2xSZWYpOiB7IG5hbWU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nIH0ge1xuXG4gICAgY29uc3QgbmFtZSA9IGtleXMoY29udHJvbFJlZi5jb250cm9sLmVycm9ycylbMF07XG5cbiAgICBpZiAoIW5hbWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBtZXNzYWdlID0gY29udHJvbFJlZi5jb250cm9sLmVycm9yc1tuYW1lXTtcblxuICAgIGlmICh0aGlzLl92YWxpZGF0ZU1lc3NhZ2VzW25hbWVdKSB7XG4gICAgICBtZXNzYWdlID0gdGhpcy5fcGFyc2VFcnJvck1lc3NhZ2UodGhpcy5fdmFsaWRhdGVNZXNzYWdlc1tuYW1lXSwgbWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbmFtZTogbmFtZSwgbWVzc2FnZTogbWVzc2FnZSB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBWYWxpZGF0b3JzKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLl9jb250cm9sO1xuXG4gICAgaWYgKHRoaXMudmFsaWRhdGUpIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBjb250cm9sLnZhbGlkYXRvclxuICAgICAgICA/IFtjb250cm9sLnZhbGlkYXRvciwgdGhpcy52YWxpZGF0ZS5iaW5kKHRoaXMpXVxuICAgICAgICA6IHRoaXMudmFsaWRhdGUuYmluZCh0aGlzKTtcblxuICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnZhbGlkYXRlQXN5bmMpIHtcbiAgICAgIGNvbnN0IGFzeW5jVmFsaWRhdG9ycyA9IGNvbnRyb2wuYXN5bmNWYWxpZGF0b3JcbiAgICAgICAgPyBbY29udHJvbC5hc3luY1ZhbGlkYXRvciwgdGhpcy52YWxpZGF0ZUFzeW5jLmJpbmQodGhpcyldXG4gICAgICAgIDogdGhpcy52YWxpZGF0ZUFzeW5jLmJpbmQodGhpcyk7XG5cbiAgICAgIGNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKGFzeW5jVmFsaWRhdG9ycyk7XG4gICAgfVxuXG4gICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxufVxuIl19
|
|
@@ -12,7 +12,7 @@ export class FsFormFunctionDirective extends FsControlDirective {
|
|
|
12
12
|
this._control.updateValueAndValidity();
|
|
13
13
|
}
|
|
14
14
|
validateAsync(control) {
|
|
15
|
-
if (this.validateOnSubmit && !this.
|
|
15
|
+
if (this.validateOnSubmit && !this._formDirective.validating) {
|
|
16
16
|
return of(null);
|
|
17
17
|
}
|
|
18
18
|
return FsValidators.func(this._control, this.fsFormFunction, this.fsFormFunctionData);
|
|
@@ -37,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
37
37
|
}], validateOnSubmit: [{
|
|
38
38
|
type: Input
|
|
39
39
|
}] } });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvZnVuY3Rpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRzVELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdEMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQVN6RCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsa0JBQWtCO0lBR3RELGNBQWMsQ0FBQztJQUdmLGtCQUFrQixDQUFDO0lBR25CLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUV6QixXQUFXO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRU0sYUFBYSxDQUFDLE9BQXdCO1FBQzNDLElBQUcsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM1RCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixDQUFDO1FBRUQsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN4RixDQUFDO3VHQXJCVSx1QkFBdUI7MkZBQXZCLHVCQUF1Qix5S0FKdkI7WUFDVCx5QkFBeUI7U0FDMUI7OzJGQUVVLHVCQUF1QjtrQkFObkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixTQUFTLEVBQUU7d0JBQ1QseUJBQXlCO3FCQUMxQjtpQkFDRjs4QkFJUSxjQUFjO3NCQURwQixLQUFLO2dCQUlDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFJQyxnQkFBZ0I7c0JBRHRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRnNBc3luY1ZhbGlkYXRvciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYXN5bmMtdmFsaWRhdG9yJztcbmltcG9ydCB7IFZBTElEQVRFX01FU1NBR0VfUFJPVklERVIgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvdmFsaWRhdGUtbWVzc2FnZXMucHJvdmlkZXInO1xuaW1wb3J0IHsgRnNWYWxpZGF0b3JzIH0gZnJvbSAnLi4vLi4vdmFsaWRhdG9ycy92YWxpZGF0b3JzJztcblxuaW1wb3J0IHsgRnNDb250cm9sRGlyZWN0aXZlIH0gZnJvbSAnLi9jb250cm9sLmRpcmVjdGl2ZSc7XG5cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZzRm9ybUZ1bmN0aW9uXScsXG4gIHByb3ZpZGVyczogW1xuICAgIFZBTElEQVRFX01FU1NBR0VfUFJPVklERVIsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzRm9ybUZ1bmN0aW9uRGlyZWN0aXZlIGV4dGVuZHMgRnNDb250cm9sRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBGc0FzeW5jVmFsaWRhdG9yIHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZnNGb3JtRnVuY3Rpb247XG5cbiAgQElucHV0KClcbiAgcHVibGljIGZzRm9ybUZ1bmN0aW9uRGF0YTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdmFsaWRhdGVPblN1Ym1pdCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIHB1YmxpYyB2YWxpZGF0ZUFzeW5jKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+IHwgT2JzZXJ2YWJsZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4ge1xuICAgIGlmKHRoaXMudmFsaWRhdGVPblN1Ym1pdCAmJiAhdGhpcy5fZm9ybURpcmVjdGl2ZS52YWxpZGF0aW5nKSB7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBGc1ZhbGlkYXRvcnMuZnVuYyh0aGlzLl9jb250cm9sLCB0aGlzLmZzRm9ybUZ1bmN0aW9uLCB0aGlzLmZzRm9ybUZ1bmN0aW9uRGF0YSk7XG4gIH1cblxufVxuIl19
|
|
@@ -31,10 +31,10 @@ export class FsFormRequiredDirective extends FsControlDirective {
|
|
|
31
31
|
// Adding class fs-form-label-requried adds the * to the label
|
|
32
32
|
if (labelWrapper) {
|
|
33
33
|
if (this.required) {
|
|
34
|
-
this.
|
|
34
|
+
this._renderer2.addClass(labelWrapper, 'fs-form-label-required');
|
|
35
35
|
}
|
|
36
36
|
else {
|
|
37
|
-
this.
|
|
37
|
+
this._renderer2.removeClass(labelWrapper, 'fs-form-label-required');
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
}
|
|
@@ -63,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
63
63
|
type: Input,
|
|
64
64
|
args: ['fsFormRequiredMessage']
|
|
65
65
|
}] } });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvcmVxdWlyZWQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBcUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRXZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQVN6RCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsa0JBQWtCO0lBQ3RELFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFeEIsSUFDVyxpQkFBaUIsQ0FBQyxLQUFLO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUNXLFdBQVcsQ0FBQyxLQUFLO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUNXLGlCQUFpQixDQUFDLEtBQWE7UUFDeEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDMUMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFTSxRQUFRLENBQUMsT0FBd0I7UUFDdEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFFZCxDQUFDO0lBRU0sTUFBTTtRQUNYLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRXpDLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUM7WUFDdkMsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBRXBFLDhEQUE4RDtZQUM5RCxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNqQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLHdCQUF3QixDQUFDLENBQUM7Z0JBQ25FLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztnQkFDdEUsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2pCLENBQUM7dUdBaERVLHVCQUF1QjsyRkFBdkIsdUJBQXVCLG9QQUp2QjtZQUNULHlCQUF5QjtTQUMxQjs7MkZBRVUsdUJBQXVCO2tCQU5uQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQ0FBc0M7b0JBQ2hELFNBQVMsRUFBRTt3QkFDVCx5QkFBeUI7cUJBQzFCO2lCQUNGOzhCQUtZLGlCQUFpQjtzQkFEM0IsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBTVosV0FBVztzQkFEckIsS0FBSzt1QkFBQyxVQUFVO2dCQU1OLGlCQUFpQjtzQkFEM0IsS0FBSzt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgaXNFbmFibGVkIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pcy1lbmFibGVkJztcbmltcG9ydCB7IEZzVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy92YWxpZGF0b3InO1xuaW1wb3J0IHsgVkFMSURBVEVfTUVTU0FHRV9QUk9WSURFUiB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy92YWxpZGF0ZS1tZXNzYWdlcy5wcm92aWRlcic7XG5cbmltcG9ydCB7IEZzQ29udHJvbERpcmVjdGl2ZSB9IGZyb20gJy4vY29udHJvbC5kaXJlY3RpdmUnO1xuXG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tmc0Zvcm1SZXF1aXJlZF0sW25nTW9kZWxdW3JlcXVpcmVkXScsXG4gIHByb3ZpZGVyczogW1xuICAgIFZBTElEQVRFX01FU1NBR0VfUFJPVklERVIsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzRm9ybVJlcXVpcmVkRGlyZWN0aXZlIGV4dGVuZHMgRnNDb250cm9sRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBGc1ZhbGlkYXRvciB7XG4gIHB1YmxpYyByZXF1aXJlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnZnNGb3JtUmVxdWlyZWQnKVxuICBwdWJsaWMgc2V0IHNldEZzRm9ybVJlcXVpcmVkKHZhbHVlKSB7XG4gICAgdGhpcy5yZXF1aXJlZCA9IGlzRW5hYmxlZCh2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoJ3JlcXVpcmVkJylcbiAgcHVibGljIHNldCBzZXRSZXF1aXJlZCh2YWx1ZSkge1xuICAgIHRoaXMucmVxdWlyZWQgPSBpc0VuYWJsZWQodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KCdmc0Zvcm1SZXF1aXJlZE1lc3NhZ2UnKVxuICBwdWJsaWMgc2V0IHZhbGlkYXRpb25NZXNzYWdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl92YWxpZGF0ZU1lc3NhZ2VzLnJlcXVpcmVkID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5fY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gVmFsaWRhdG9ycy5yZXF1aXJlZCh0aGlzLl9jb250cm9sKTtcbiAgICB9XG4gXG4gICAgcmV0dXJuIG51bGw7XG4gICAgXG4gIH1cblxuICBwdWJsaWMgcmVuZGVyKCkge1xuICAgIGNvbnN0IHdyYXBwZXIgPSB0aGlzLmdldFdyYXBwZXJFbGVtZW50KCk7XG5cbiAgICBpZiAod3JhcHBlciAmJiB0aGlzLmdldGxhYmVsU2VsZWN0b3IoKSkge1xuICAgICAgY29uc3QgbGFiZWxXcmFwcGVyID0gd3JhcHBlci5xdWVyeVNlbGVjdG9yKHRoaXMuZ2V0bGFiZWxTZWxlY3RvcigpKTtcblxuICAgICAgLy8gQWRkaW5nIGNsYXNzIGZzLWZvcm0tbGFiZWwtcmVxdXJpZWQgYWRkcyB0aGUgKiB0byB0aGUgbGFiZWxcbiAgICAgIGlmIChsYWJlbFdyYXBwZXIpIHtcbiAgICAgICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcbiAgICAgICAgICB0aGlzLl9yZW5kZXJlcjIuYWRkQ2xhc3MobGFiZWxXcmFwcGVyLCAnZnMtZm9ybS1sYWJlbC1yZXF1aXJlZCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX3JlbmRlcmVyMi5yZW1vdmVDbGFzcyhsYWJlbFdyYXBwZXIsICdmcy1mb3JtLWxhYmVsLXJlcXVpcmVkJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBzdXBlci5yZW5kZXIoKTtcbiAgfVxufVxuIl19
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Directive, Input } from '@angular/core';
|
|
2
2
|
import { of } from 'rxjs';
|
|
3
|
-
import { FsControlDirective } from './control.directive';
|
|
4
|
-
import { FsValidators } from '../../validators/validators';
|
|
5
3
|
import { VALIDATE_MESSAGE_PROVIDER } from '../../providers/validate-messages.provider';
|
|
4
|
+
import { FsValidators } from '../../validators/validators';
|
|
5
|
+
import { FsControlDirective } from './control.directive';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export class FsFormValidateDirective extends FsControlDirective {
|
|
8
8
|
validateFn;
|
|
@@ -12,14 +12,14 @@ export class FsFormValidateDirective extends FsControlDirective {
|
|
|
12
12
|
this._control.updateValueAndValidity();
|
|
13
13
|
}
|
|
14
14
|
validateAsync(control) {
|
|
15
|
-
if (this.validateOnSubmit && !this.
|
|
15
|
+
if (this.validateOnSubmit && !this._formDirective.validating) {
|
|
16
16
|
return of(null);
|
|
17
17
|
}
|
|
18
18
|
return FsValidators.func(this._control, this.validateFn, this.validateFnData);
|
|
19
19
|
}
|
|
20
20
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsFormValidateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
21
21
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: FsFormValidateDirective, selector: "[validate]", inputs: { validateFn: ["validate", "validateFn"], validateFnData: ["validateData", "validateFnData"], validateOnSubmit: "validateOnSubmit" }, providers: [
|
|
22
|
-
VALIDATE_MESSAGE_PROVIDER
|
|
22
|
+
VALIDATE_MESSAGE_PROVIDER,
|
|
23
23
|
], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
|
|
24
24
|
}
|
|
25
25
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsFormValidateDirective, decorators: [{
|
|
@@ -27,7 +27,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
27
27
|
args: [{
|
|
28
28
|
selector: '[validate]',
|
|
29
29
|
providers: [
|
|
30
|
-
VALIDATE_MESSAGE_PROVIDER
|
|
30
|
+
VALIDATE_MESSAGE_PROVIDER,
|
|
31
31
|
],
|
|
32
32
|
}]
|
|
33
33
|
}], propDecorators: { validateFn: [{
|
|
@@ -39,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
39
39
|
}], validateOnSubmit: [{
|
|
40
40
|
type: Input
|
|
41
41
|
}] } });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvdmFsaWRhdGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRzVELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdEMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQVN6RCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsa0JBQWtCO0lBR3RELFVBQVUsQ0FBeUY7SUFHbkcsY0FBYyxDQUFDO0lBR2YsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBRXpCLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFTSxhQUFhLENBQUMsT0FBd0I7UUFDM0MsSUFBRyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzVELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUM7UUFFRCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNoRixDQUFDO3VHQXJCVSx1QkFBdUI7MkZBQXZCLHVCQUF1QixtTEFKdkI7WUFDVCx5QkFBeUI7U0FDMUI7OzJGQUVVLHVCQUF1QjtrQkFObkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsU0FBUyxFQUFFO3dCQUNULHlCQUF5QjtxQkFDMUI7aUJBQ0Y7OEJBSVEsVUFBVTtzQkFEaEIsS0FBSzt1QkFBQyxVQUFVO2dCQUlWLGNBQWM7c0JBRHBCLEtBQUs7dUJBQUMsY0FBYztnQkFJZCxnQkFBZ0I7c0JBRHRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRnNBc3luY1ZhbGlkYXRvciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYXN5bmMtdmFsaWRhdG9yJztcbmltcG9ydCB7IFZBTElEQVRFX01FU1NBR0VfUFJPVklERVIgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvdmFsaWRhdGUtbWVzc2FnZXMucHJvdmlkZXInO1xuaW1wb3J0IHsgRnNWYWxpZGF0b3JzIH0gZnJvbSAnLi4vLi4vdmFsaWRhdG9ycy92YWxpZGF0b3JzJztcblxuaW1wb3J0IHsgRnNDb250cm9sRGlyZWN0aXZlIH0gZnJvbSAnLi9jb250cm9sLmRpcmVjdGl2ZSc7XG5cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3ZhbGlkYXRlXScsXG4gIHByb3ZpZGVyczogW1xuICAgIFZBTElEQVRFX01FU1NBR0VfUFJPVklERVIsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzRm9ybVZhbGlkYXRlRGlyZWN0aXZlIGV4dGVuZHMgRnNDb250cm9sRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBGc0FzeW5jVmFsaWRhdG9yIHtcblxuICBASW5wdXQoJ3ZhbGlkYXRlJylcbiAgcHVibGljIHZhbGlkYXRlRm46IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTx1bmtub3duPiB8IFByb21pc2U8dW5rbm93bj4gfCB2b2lkO1xuXG4gIEBJbnB1dCgndmFsaWRhdGVEYXRhJylcbiAgcHVibGljIHZhbGlkYXRlRm5EYXRhO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB2YWxpZGF0ZU9uU3VibWl0ID0gZmFsc2U7XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuX2NvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgcHVibGljIHZhbGlkYXRlQXN5bmMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogUHJvbWlzZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gfCBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiB7XG4gICAgaWYodGhpcy52YWxpZGF0ZU9uU3VibWl0ICYmICF0aGlzLl9mb3JtRGlyZWN0aXZlLnZhbGlkYXRpbmcpIHtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gRnNWYWxpZGF0b3JzLmZ1bmModGhpcy5fY29udHJvbCwgdGhpcy52YWxpZGF0ZUZuLCB0aGlzLnZhbGlkYXRlRm5EYXRhKTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -71,7 +71,7 @@ export class FsValidators {
|
|
|
71
71
|
}
|
|
72
72
|
catch (err) {
|
|
73
73
|
const error = err instanceof Error ? err.message : err;
|
|
74
|
-
stream$ = throwError(error);
|
|
74
|
+
stream$ = throwError(() => error);
|
|
75
75
|
}
|
|
76
76
|
if (!stream$) {
|
|
77
77
|
if (result instanceof Promise) {
|
|
@@ -90,4 +90,4 @@ export class FsValidators {
|
|
|
90
90
|
}), take(1));
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvdmFsaWRhdG9ycy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFM0UsT0FBTyxFQUFjLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHckMsTUFBTSxPQUFPLFlBQVk7SUFFaEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUF3QjtRQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0MsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUF3QjtRQUMzQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUVsQyxNQUFNLGdCQUFnQixHQUFHLEtBQUs7YUFDM0IsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVoQyxPQUFPLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFB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Q3ZDLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsTUFBTSxLQUFLLEdBQUcsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBRXZELE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLElBQUksTUFBTSxZQUFZLE9BQU8sRUFBRSxDQUFDO2dCQUM5QixPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pCLENBQUM7aUJBQU0sSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDaEMsT0FBTyxHQUFHLE1BQU0sQ0FBQztZQUNuQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sT0FBTzthQUNYLElBQUksQ0FDSCxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQ1gsVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDakIsT0FBTyxFQUFFLENBQUMsRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsRUFDRixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1IsQ0FBQztJQUNOLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgZW1haWwsIGlzRW1wdHksIGlzTnVtZXJpYywgcGhvbmUsIHVybCB9IGZyb20gJ0BmaXJlc3RpdGNoL2NvbW1vbic7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb20sIGlzT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcFRvLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBpc1ZhbGlkIH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5cbmV4cG9ydCBjbGFzcyBGc1ZhbGlkYXRvcnMge1xuXG4gIHB1YmxpYyBzdGF0aWMgZW1haWwoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICghY29udHJvbC52YWx1ZSB8fCBlbWFpbChjb250cm9sLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgZW1haWw6IHRydWUgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZW1haWxzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCBtb2RlbCA9IGNvbnRyb2wudmFsdWUgfHwgJyc7XG5cbiAgICBjb25zdCBoYXNJbnZhbGlkRW1haWxzID0gbW9kZWxcbiAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAuc29tZSgocGFydCkgPT4gIWVtYWlsKHBhcnQpKTtcblxuICAgIHJldHVybiBoYXNJbnZhbGlkRW1haWxzID8geyBlbWFpbDogdHJ1ZSB9IDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgbnVtZXJpYyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKGlzRW1wdHkoY29udHJvbC52YWx1ZSkgfHwgaXNOdW1lcmljKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gXG4gICAgcmV0dXJuIHsgbnVtZXJpYzogdHJ1ZSB9O1xuICAgIFxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpbnRlZ2VyKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgU3RyaW5nKGNvbnRyb2wudmFsdWUpID09PSAnJyB8fCAoY29udHJvbC52YWx1ZSAlIDEgPT09IDApKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gXG4gICAgcmV0dXJuIHsgaW50ZWdlcjogdHJ1ZSB9O1xuICAgIFxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwaG9uZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IHBob25lKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4geyBwaG9uZTogdHJ1ZSB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyB1cmwoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBwcm90b2NvbFJlcXVpcmVkID0gZmFsc2UpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoIXVybChjb250cm9sLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIHsgdXJsOiB0cnVlIH07XG4gICAgfVxuXG4gICAgaWYgKHByb3RvY29sUmVxdWlyZWQpIHtcbiAgICAgIGNvbnN0IHBhdHRlcm4gPSBuZXcgUmVnRXhwKC9eaHR0cChzKT86XFwvXFwvL2dtKTtcblxuICAgICAgaWYgKCFTdHJpbmcoY29udHJvbC52YWx1ZSkubWF0Y2gocGF0dGVybikpIHtcbiAgICAgICAgcmV0dXJuIHsgdXJsUHJvdG9jb2w6IHRydWUgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZGF0ZVJhbmdlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChpc09iamVjdChjb250cm9sLnZhbHVlKSkge1xuXG4gICAgICBjb25zdCBzdGFydCA9IGNvbnRyb2wudmFsdWUuc3RhcnQ7XG4gICAgICBjb25zdCBlbmQgPSBjb250cm9sLnZhbHVlLmVuZDtcblxuICAgICAgaWYgKCghc3RhcnQgJiYgIWVuZCkgfHwgKGlzVmFsaWQoc3RhcnQpICYmIGlzVmFsaWQoZW5kKSkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgZGF0ZVJhbmdlOiB0cnVlIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZ1bmMoXG4gICAgY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBcbiAgICBmb3JtRnVuY3Rpb246IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTx1bmtub3duPiB8IFByb21pc2U8dW5rbm93bj4gfCB2b2lkLCBkYXRhOiBhbnksXG4gICk6IE9ic2VydmFibGU8dW5rbm93bj4ge1xuICAgIGxldCByZXN1bHQ6IHVua25vd247XG4gICAgbGV0IHN0cmVhbSQ6IE9ic2VydmFibGU8dW5rbm93bj47XG5cbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gZm9ybUZ1bmN0aW9uKGNvbnRyb2wsIGRhdGEpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc3QgZXJyb3IgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogZXJyO1xuXG4gICAgICBzdHJlYW0kID0gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgfVxuXG4gICAgaWYgKCFzdHJlYW0kKSB7XG4gICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICBzdHJlYW0kID0gZnJvbShyZXN1bHQpO1xuICAgICAgfSBlbHNlIGlmIChpc09ic2VydmFibGUocmVzdWx0KSkge1xuICAgICAgICBzdHJlYW0kID0gcmVzdWx0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RyZWFtJCA9IG9mKG51bGwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdHJlYW0kXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwVG8obnVsbCksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgIHJldHVybiBvZih7IHZhbGlkYXRpb25FcnJvcjogZXJyIH0pO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==
|