@ngxs/form-plugin 3.7.4 → 3.7.5

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.
@@ -1,328 +1,335 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import { ChangeDetectorRef, Directive, Input } from '@angular/core';
6
- import { FormGroupDirective } from '@angular/forms';
7
- import { Actions, getValue, ofActionDispatched, Store } from '@ngxs/store';
8
- import { Subject } from 'rxjs';
9
- import { debounceTime, distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';
10
- import { ResetForm, UpdateForm, UpdateFormDirty, UpdateFormErrors, UpdateFormStatus, UpdateFormValue } from './actions';
11
- var FormDirective = /** @class */ (function () {
12
- function FormDirective(_actions$, _store, _formGroupDirective, _cd) {
13
- this._actions$ = _actions$;
14
- this._store = _store;
15
- this._formGroupDirective = _formGroupDirective;
16
- this._cd = _cd;
17
- this.path = (/** @type {?} */ (null));
18
- this.debounce = 100;
19
- this._clearDestroy = false;
20
- this._destroy$ = new Subject();
21
- this._updating = false;
22
- }
23
- Object.defineProperty(FormDirective.prototype, "clearDestroy", {
24
- get: /**
25
- * @return {?}
26
- */
27
- function () {
28
- return this._clearDestroy;
29
- },
30
- set: /**
31
- * @param {?} val
32
- * @return {?}
33
- */
34
- function (val) {
35
- this._clearDestroy = val != null && "" + val !== 'false';
36
- },
37
- enumerable: true,
38
- configurable: true
39
- });
40
- /**
41
- * @return {?}
42
- */
43
- FormDirective.prototype.ngOnInit = /**
44
- * @return {?}
45
- */
46
- function () {
47
- var _this = this;
48
- this._actions$
49
- .pipe(ofActionDispatched(ResetForm), filter((/**
50
- * @param {?} action
51
- * @return {?}
52
- */
53
- function (action) { return action.payload.path === _this.path; })), takeUntil(this._destroy$))
54
- .subscribe((/**
55
- * @param {?} __0
56
- * @return {?}
57
- */
58
- function (_a) {
59
- var value = _a.payload.value;
60
- _this.form.reset(value);
61
- _this.updateFormStateWithRawValue(true);
62
- _this._cd.markForCheck();
63
- }));
64
- this.getStateStream(this.path + ".model").subscribe((/**
65
- * @param {?} model
66
- * @return {?}
67
- */
68
- function (model) {
69
- if (_this._updating || !model) {
70
- return;
71
- }
72
- _this.form.patchValue(model);
73
- _this._cd.markForCheck();
74
- }));
75
- this.getStateStream(this.path + ".dirty").subscribe((/**
76
- * @param {?} dirty
77
- * @return {?}
78
- */
79
- function (dirty) {
80
- if (_this.form.dirty === dirty || typeof dirty !== 'boolean') {
81
- return;
82
- }
83
- if (dirty) {
84
- _this.form.markAsDirty();
85
- }
86
- else {
87
- _this.form.markAsPristine();
88
- }
89
- _this._cd.markForCheck();
90
- }));
91
- // On first state change, sync form model, status and dirty with state
92
- this._store
93
- .selectOnce((/**
94
- * @param {?} state
95
- * @return {?}
96
- */
97
- function (state) { return getValue(state, _this.path); }))
98
- .subscribe((/**
99
- * @return {?}
100
- */
101
- function () {
102
- _this._store.dispatch([
103
- new UpdateFormValue({
104
- path: _this.path,
105
- value: _this.form.getRawValue()
106
- }),
107
- new UpdateFormStatus({
108
- path: _this.path,
109
- status: _this.form.status
110
- }),
111
- new UpdateFormDirty({
112
- path: _this.path,
113
- dirty: _this.form.dirty
114
- })
115
- ]);
116
- }));
117
- this.getStateStream(this.path + ".disabled").subscribe((/**
118
- * @param {?} disabled
119
- * @return {?}
120
- */
121
- function (disabled) {
122
- if (_this.form.disabled === disabled || typeof disabled !== 'boolean') {
123
- return;
124
- }
125
- if (disabled) {
126
- _this.form.disable();
127
- }
128
- else {
129
- _this.form.enable();
130
- }
131
- _this._cd.markForCheck();
132
- }));
133
- (/** @type {?} */ (this._formGroupDirective.valueChanges)).pipe(this.debounceChange()).subscribe((/**
134
- * @return {?}
135
- */
136
- function () {
137
- _this.updateFormStateWithRawValue();
138
- }));
139
- (/** @type {?} */ (this._formGroupDirective
140
- .statusChanges)).pipe(distinctUntilChanged(), this.debounceChange())
141
- .subscribe((/**
142
- * @param {?} status
143
- * @return {?}
144
- */
145
- function (status) {
146
- _this._store.dispatch(new UpdateFormStatus({
147
- status: status,
148
- path: _this.path
149
- }));
150
- }));
151
- };
152
- /**
153
- * @param {?=} withFormStatus
154
- * @return {?}
155
- */
156
- FormDirective.prototype.updateFormStateWithRawValue = /**
157
- * @param {?=} withFormStatus
158
- * @return {?}
159
- */
160
- function (withFormStatus) {
161
- var _this = this;
162
- if (this._updating)
163
- return;
164
- /** @type {?} */
165
- var value = this._formGroupDirective.control.getRawValue();
166
- /** @type {?} */
167
- var actions = [
168
- new UpdateFormValue({
169
- path: this.path,
170
- value: value
171
- }),
172
- new UpdateFormDirty({
173
- path: this.path,
174
- dirty: this._formGroupDirective.dirty
175
- }),
176
- new UpdateFormErrors({
177
- path: this.path,
178
- errors: this._formGroupDirective.errors
179
- })
180
- ];
181
- if (withFormStatus) {
182
- actions.push(new UpdateFormStatus({
183
- path: this.path,
184
- status: this._formGroupDirective.status
185
- }));
186
- }
187
- this._updating = true;
188
- this._store.dispatch(actions).subscribe({
189
- error: (/**
190
- * @return {?}
191
- */
192
- function () { return (_this._updating = false); }),
193
- complete: (/**
194
- * @return {?}
195
- */
196
- function () { return (_this._updating = false); })
197
- });
198
- };
199
- /**
200
- * @return {?}
201
- */
202
- FormDirective.prototype.ngOnDestroy = /**
203
- * @return {?}
204
- */
205
- function () {
206
- this._destroy$.next();
207
- this._destroy$.complete();
208
- if (this.clearDestroy) {
209
- this._store.dispatch(new UpdateForm({
210
- path: this.path,
211
- value: null,
212
- dirty: null,
213
- status: null,
214
- errors: null
215
- }));
216
- }
217
- };
218
- /**
219
- * @private
220
- * @return {?}
221
- */
222
- FormDirective.prototype.debounceChange = /**
223
- * @private
224
- * @return {?}
225
- */
226
- function () {
227
- var _this = this;
228
- /** @type {?} */
229
- var skipDebounceTime = this._formGroupDirective.control.updateOn !== 'change' || this.debounce < 0;
230
- return skipDebounceTime
231
- ? (/**
232
- * @param {?} change
233
- * @return {?}
234
- */
235
- function (change) { return change.pipe(takeUntil(_this._destroy$)); })
236
- : (/**
237
- * @param {?} change
238
- * @return {?}
239
- */
240
- function (change) {
241
- return change.pipe(debounceTime(_this.debounce), takeUntil(_this._destroy$));
242
- });
243
- };
244
- Object.defineProperty(FormDirective.prototype, "form", {
245
- get: /**
246
- * @private
247
- * @return {?}
248
- */
249
- function () {
250
- return this._formGroupDirective.form;
251
- },
252
- enumerable: true,
253
- configurable: true
254
- });
255
- /**
256
- * @private
257
- * @param {?} path
258
- * @return {?}
259
- */
260
- FormDirective.prototype.getStateStream = /**
261
- * @private
262
- * @param {?} path
263
- * @return {?}
264
- */
265
- function (path) {
266
- return this._store.select((/**
267
- * @param {?} state
268
- * @return {?}
269
- */
270
- function (state) { return getValue(state, path); })).pipe(takeUntil(this._destroy$));
271
- };
272
- FormDirective.decorators = [
273
- { type: Directive, args: [{ selector: '[ngxsForm]' },] }
274
- ];
275
- /** @nocollapse */
276
- FormDirective.ctorParameters = function () { return [
277
- { type: Actions },
278
- { type: Store },
279
- { type: FormGroupDirective },
280
- { type: ChangeDetectorRef }
281
- ]; };
282
- FormDirective.propDecorators = {
283
- path: [{ type: Input, args: ['ngxsForm',] }],
284
- debounce: [{ type: Input, args: ['ngxsFormDebounce',] }],
285
- clearDestroy: [{ type: Input, args: ['ngxsFormClearOnDestroy',] }]
286
- };
287
- return FormDirective;
288
- }());
289
- export { FormDirective };
290
- if (false) {
291
- /** @type {?} */
292
- FormDirective.prototype.path;
293
- /** @type {?} */
294
- FormDirective.prototype.debounce;
295
- /** @type {?} */
296
- FormDirective.prototype._clearDestroy;
297
- /**
298
- * @type {?}
299
- * @private
300
- */
301
- FormDirective.prototype._destroy$;
302
- /**
303
- * @type {?}
304
- * @private
305
- */
306
- FormDirective.prototype._updating;
307
- /**
308
- * @type {?}
309
- * @private
310
- */
311
- FormDirective.prototype._actions$;
312
- /**
313
- * @type {?}
314
- * @private
315
- */
316
- FormDirective.prototype._store;
317
- /**
318
- * @type {?}
319
- * @private
320
- */
321
- FormDirective.prototype._formGroupDirective;
322
- /**
323
- * @type {?}
324
- * @private
325
- */
326
- FormDirective.prototype._cd;
327
- }
328
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMvZm9ybS1wbHVnaW4vIiwic291cmNlcyI6WyJzcmMvZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFhLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNoQixNQUFNLFdBQVcsQ0FBQztBQUVuQjtJQXNCRSx1QkFDVSxTQUFrQixFQUNsQixNQUFhLEVBQ2IsbUJBQXVDLEVBQ3ZDLEdBQXNCO1FBSHRCLGNBQVMsR0FBVCxTQUFTLENBQVM7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBTztRQUNiLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFDdkMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUF2QmhDLFNBQUksR0FBVyxtQkFBQSxJQUFJLEVBQUMsQ0FBQztRQUdyQixhQUFRLEdBQUcsR0FBRyxDQUFDO1FBV2Ysa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFTCxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUN6QyxjQUFTLEdBQUcsS0FBSyxDQUFDO0lBT3ZCLENBQUM7SUFuQkosc0JBQ0ksdUNBQVk7Ozs7UUFJaEI7WUFDRSxPQUFPLElBQUks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LFlBQVksRUFBRTs7OztnQkFaNUIsT0FBTztnQkFBZ0MsS0FBSztnQkFEakMsa0JBQWtCO2dCQUQ3QixpQkFBaUI7Ozt1QkFnQnZCLEtBQUssU0FBQyxVQUFVOzJCQUdoQixLQUFLLFNBQUMsa0JBQWtCOytCQUd4QixLQUFLLFNBQUMsd0JBQXdCOztJQWdMakMsb0JBQUM7Q0FBQSxBQXhMRCxJQXdMQztTQXZMWSxhQUFhOzs7SUFDeEIsNkJBQ3FCOztJQUVyQixpQ0FDZTs7SUFXZixzQ0FBc0I7Ozs7O0lBRXRCLGtDQUFpRDs7Ozs7SUFDakQsa0NBQTBCOzs7OztJQUd4QixrQ0FBMEI7Ozs7O0lBQzFCLCtCQUFxQjs7Ozs7SUFDckIsNENBQStDOzs7OztJQUMvQyw0QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtR3JvdXBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFjdGlvbnMsIGdldFZhbHVlLCBvZkFjdGlvbkRpc3BhdGNoZWQsIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gIFJlc2V0Rm9ybSxcclxuICBVcGRhdGVGb3JtLFxyXG4gIFVwZGF0ZUZvcm1EaXJ0eSxcclxuICBVcGRhdGVGb3JtRXJyb3JzLFxyXG4gIFVwZGF0ZUZvcm1TdGF0dXMsXHJcbiAgVXBkYXRlRm9ybVZhbHVlXHJcbn0gZnJvbSAnLi9hY3Rpb25zJztcclxuXHJcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tuZ3hzRm9ybV0nIH0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgnbmd4c0Zvcm0nKVxyXG4gIHBhdGg6IHN0cmluZyA9IG51bGwhO1xyXG5cclxuICBASW5wdXQoJ25neHNGb3JtRGVib3VuY2UnKVxyXG4gIGRlYm91bmNlID0gMTAwO1xyXG5cclxuICBASW5wdXQoJ25neHNGb3JtQ2xlYXJPbkRlc3Ryb3knKVxyXG4gIHNldCBjbGVhckRlc3Ryb3kodmFsOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9jbGVhckRlc3Ryb3kgPSB2YWwgIT0gbnVsbCAmJiBgJHt2YWx9YCAhPT0gJ2ZhbHNlJztcclxuICB9XHJcblxyXG4gIGdldCBjbGVhckRlc3Ryb3koKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2xlYXJEZXN0cm95O1xyXG4gIH1cclxuXHJcbiAgX2NsZWFyRGVzdHJveSA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBfdXBkYXRpbmcgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9hY3Rpb25zJDogQWN0aW9ucyxcclxuICAgIHByaXZhdGUgX3N0b3JlOiBTdG9yZSxcclxuICAgIHByaXZhdGUgX2Zvcm1Hcm91cERpcmVjdGl2ZTogRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG4gICAgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuX2FjdGlvbnMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG9mQWN0aW9uRGlzcGF0Y2hlZChSZXNldEZvcm0pLFxyXG4gICAgICAgIGZpbHRlcigoYWN0aW9uOiBSZXNldEZvcm0pID0+IGFjdGlvbi5wYXlsb2FkLnBhdGggPT09IHRoaXMucGF0aCksXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHsgcGF5bG9hZDogeyB2YWx1ZSB9IH06IFJlc2V0Rm9ybSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybS5yZXNldCh2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtU3RhdGVXaXRoUmF3VmFsdWUodHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZ2V0U3RhdGVTdHJlYW0oYCR7dGhpcy5wYXRofS5tb2RlbGApLnN1YnNjcmliZShtb2RlbCA9PiB7XHJcbiAgICAgIGlmICh0aGlzLl91cGRhdGluZyB8fCAhbW9kZWwpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKG1vZGVsKTtcclxuICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmdldFN0YXRlU3RyZWFtKGAke3RoaXMucGF0aH0uZGlydHlgKS5zdWJzY3JpYmUoZGlydHkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5mb3JtLmRpcnR5ID09PSBkaXJ0eSB8fCB0eXBlb2YgZGlydHkgIT09ICdib29sZWFuJykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGRpcnR5KSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gT24gZmlyc3Qgc3RhdGUgY2hhbmdlLCBzeW5jIGZvcm0gbW9kZWwsIHN0YXR1cyBhbmQgZGlydHkgd2l0aCBzdGF0ZVxyXG4gICAgdGhpcy5fc3RvcmVcclxuICAgICAgLnNlbGVjdE9uY2Uoc3RhdGUgPT4gZ2V0VmFsdWUoc3RhdGUsIHRoaXMucGF0aCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKFtcclxuICAgICAgICAgIG5ldyBVcGRhdGVGb3JtVmFsdWUoe1xyXG4gICAgICAgICAgICBwYXRoOiB0aGlzLnBhdGgsXHJcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKVxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBuZXcgVXBkYXRlRm9ybVN0YXR1cyh7XHJcbiAgICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCxcclxuICAgICAgICAgICAgc3RhdHVzOiB0aGlzLmZvcm0uc3RhdHVzXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIG5ldyBVcGRhdGVGb3JtRGlydHkoe1xyXG4gICAgICAgICAgICBwYXRoOiB0aGlzLnBhdGgsXHJcbiAgICAgICAgICAgIGRpcnR5OiB0aGlzLmZvcm0uZGlydHlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgXSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZ2V0U3RhdGVTdHJlYW0oYCR7dGhpcy5wYXRofS5kaXNhYmxlZGApLnN1YnNjcmliZShkaXNhYmxlZCA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmZvcm0uZGlzYWJsZWQgPT09IGRpc2FibGVkIHx8IHR5cGVvZiBkaXNhYmxlZCAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZGlzYWJsZWQpIHtcclxuICAgICAgICB0aGlzLmZvcm0uZGlzYWJsZSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZm9ybS5lbmFibGUoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9mb3JtR3JvdXBEaXJlY3RpdmUudmFsdWVDaGFuZ2VzIS5waXBlKHRoaXMuZGVib3VuY2VDaGFuZ2UoKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVGb3JtU3RhdGVXaXRoUmF3VmFsdWUoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX2Zvcm1Hcm91cERpcmVjdGl2ZVxyXG4gICAgICAuc3RhdHVzQ2hhbmdlcyEucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCB0aGlzLmRlYm91bmNlQ2hhbmdlKCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXR1czogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2goXHJcbiAgICAgICAgICBuZXcgVXBkYXRlRm9ybVN0YXR1cyh7XHJcbiAgICAgICAgICAgIHN0YXR1cyxcclxuICAgICAgICAgICAgcGF0aDogdGhpcy5wYXRoXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRm9ybVN0YXRlV2l0aFJhd1ZhbHVlKHdpdGhGb3JtU3RhdHVzPzogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuX3VwZGF0aW5nKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLl9mb3JtR3JvdXBEaXJlY3RpdmUuY29udHJvbC5nZXRSYXdWYWx1ZSgpO1xyXG5cclxuICAgIGNvbnN0IGFjdGlvbnM6IGFueVtdID0gW1xyXG4gICAgICBuZXcgVXBkYXRlRm9ybVZhbHVlKHtcclxuICAgICAgICBwYXRoOiB0aGlzLnBhdGgsXHJcbiAgICAgICAgdmFsdWVcclxuICAgICAgfSksXHJcbiAgICAgIG5ldyBVcGRhdGVGb3JtRGlydHkoe1xyXG4gICAgICAgIHBhdGg6IHRoaXMucGF0aCxcclxuICAgICAgICBkaXJ0eTogdGhpcy5fZm9ybUdyb3VwRGlyZWN0aXZlLmRpcnR5XHJcbiAgICAgIH0pLFxyXG4gICAgICBuZXcgVXBkYXRlRm9ybUVycm9ycyh7XHJcbiAgICAgICAgcGF0aDogdGhpcy5wYXRoLFxyXG4gICAgICAgIGVycm9yczogdGhpcy5fZm9ybUdyb3VwRGlyZWN0aXZlLmVycm9yc1xyXG4gICAgICB9KVxyXG4gICAgXTtcclxuXHJcbiAgICBpZiAod2l0aEZvcm1TdGF0dXMpIHtcclxuICAgICAgYWN0aW9ucy5wdXNoKFxyXG4gICAgICAgIG5ldyBVcGRhdGVGb3JtU3RhdHVzKHtcclxuICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCxcclxuICAgICAgICAgIHN0YXR1czogdGhpcy5fZm9ybUdyb3VwRGlyZWN0aXZlLnN0YXR1c1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fdXBkYXRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2goYWN0aW9ucykuc3Vic2NyaWJlKHtcclxuICAgICAgZXJyb3I6ICgpID0+ICh0aGlzLl91cGRhdGluZyA9IGZhbHNlKSxcclxuICAgICAgY29tcGxldGU6ICgpID0+ICh0aGlzLl91cGRhdGluZyA9IGZhbHNlKVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuXHJcbiAgICBpZiAodGhpcy5jbGVhckRlc3Ryb3kpIHtcclxuICAgICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2goXHJcbiAgICAgICAgbmV3IFVwZGF0ZUZvcm0oe1xyXG4gICAgICAgICAgcGF0aDogdGhpcy5wYXRoLFxyXG4gICAgICAgICAgdmFsdWU6IG51bGwsXHJcbiAgICAgICAgICBkaXJ0eTogbnVsbCxcclxuICAgICAgICAgIHN0YXR1czogbnVsbCxcclxuICAgICAgICAgIGVycm9yczogbnVsbFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRlYm91bmNlQ2hhbmdlKCkge1xyXG4gICAgY29uc3Qgc2tpcERlYm91bmNlVGltZSA9XHJcbiAgICAgIHRoaXMuX2Zvcm1Hcm91cERpcmVjdGl2ZS5jb250cm9sLnVwZGF0ZU9uICE9PSAnY2hhbmdlJyB8fCB0aGlzLmRlYm91bmNlIDwgMDtcclxuXHJcbiAgICByZXR1cm4gc2tpcERlYm91bmNlVGltZVxyXG4gICAgICA/IChjaGFuZ2U6IE9ic2VydmFibGU8YW55PikgPT4gY2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcclxuICAgICAgOiAoY2hhbmdlOiBPYnNlcnZhYmxlPGFueT4pID0+XHJcbiAgICAgICAgICBjaGFuZ2UucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZSksIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgZm9ybSgpOiBGb3JtR3JvdXAge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1Hcm91cERpcmVjdGl2ZS5mb3JtO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTdGF0ZVN0cmVhbShwYXRoOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLl9zdG9yZS5zZWxlY3Qoc3RhdGUgPT4gZ2V0VmFsdWUoc3RhdGUsIHBhdGgpKS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpO1xyXG4gIH1cclxufVxyXG4iXX0=
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import { ChangeDetectorRef, Directive, Input } from '@angular/core';
6
+ import { FormGroupDirective } from '@angular/forms';
7
+ import { Actions, getValue, ofActionDispatched, Store } from '@ngxs/store';
8
+ import { Subject } from 'rxjs';
9
+ import { debounceTime, distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';
10
+ import { ResetForm, UpdateForm, UpdateFormDirty, UpdateFormErrors, UpdateFormStatus, UpdateFormValue } from './actions';
11
+ var FormDirective = /** @class */ (function () {
12
+ function FormDirective(_actions$, _store, _formGroupDirective, _cd) {
13
+ this._actions$ = _actions$;
14
+ this._store = _store;
15
+ this._formGroupDirective = _formGroupDirective;
16
+ this._cd = _cd;
17
+ this.path = (/** @type {?} */ (null));
18
+ this.debounce = 100;
19
+ this._clearDestroy = false;
20
+ this._destroy$ = new Subject();
21
+ this._updating = false;
22
+ }
23
+ Object.defineProperty(FormDirective.prototype, "clearDestroy", {
24
+ get: /**
25
+ * @return {?}
26
+ */
27
+ function () {
28
+ return this._clearDestroy;
29
+ },
30
+ set: /**
31
+ * @param {?} val
32
+ * @return {?}
33
+ */
34
+ function (val) {
35
+ this._clearDestroy = val != null && "" + val !== 'false';
36
+ },
37
+ enumerable: true,
38
+ configurable: true
39
+ });
40
+ /**
41
+ * @return {?}
42
+ */
43
+ FormDirective.prototype.ngOnInit = /**
44
+ * @return {?}
45
+ */
46
+ function () {
47
+ var _this = this;
48
+ this._actions$
49
+ .pipe(ofActionDispatched(ResetForm), filter((/**
50
+ * @param {?} action
51
+ * @return {?}
52
+ */
53
+ function (action) { return action.payload.path === _this.path; })), takeUntil(this._destroy$))
54
+ .subscribe((/**
55
+ * @param {?} __0
56
+ * @return {?}
57
+ */
58
+ function (_a) {
59
+ var value = _a.payload.value;
60
+ _this.form.reset(value);
61
+ _this.updateFormStateWithRawValue(true);
62
+ _this._cd.markForCheck();
63
+ }));
64
+ this.getStateStream(this.path + ".model").subscribe((/**
65
+ * @param {?} model
66
+ * @return {?}
67
+ */
68
+ function (model) {
69
+ if (_this._updating || !model) {
70
+ return;
71
+ }
72
+ _this.form.patchValue(model);
73
+ _this._cd.markForCheck();
74
+ }));
75
+ this.getStateStream(this.path + ".dirty").subscribe((/**
76
+ * @param {?} dirty
77
+ * @return {?}
78
+ */
79
+ function (dirty) {
80
+ if (_this.form.dirty === dirty || typeof dirty !== 'boolean') {
81
+ return;
82
+ }
83
+ if (dirty) {
84
+ _this.form.markAsDirty();
85
+ }
86
+ else {
87
+ _this.form.markAsPristine();
88
+ }
89
+ _this._cd.markForCheck();
90
+ }));
91
+ // On first state change, sync form model, status and dirty with state
92
+ this._store
93
+ .selectOnce((/**
94
+ * @param {?} state
95
+ * @return {?}
96
+ */
97
+ function (state) { return getValue(state, _this.path); }))
98
+ .subscribe((/**
99
+ * @return {?}
100
+ */
101
+ function () {
102
+ _this._store.dispatch([
103
+ new UpdateFormValue({
104
+ path: _this.path,
105
+ value: _this.form.getRawValue()
106
+ }),
107
+ new UpdateFormStatus({
108
+ path: _this.path,
109
+ status: _this.form.status
110
+ }),
111
+ new UpdateFormDirty({
112
+ path: _this.path,
113
+ dirty: _this.form.dirty
114
+ })
115
+ ]);
116
+ }));
117
+ this.getStateStream(this.path + ".disabled").subscribe((/**
118
+ * @param {?} disabled
119
+ * @return {?}
120
+ */
121
+ function (disabled) {
122
+ if (_this.form.disabled === disabled || typeof disabled !== 'boolean') {
123
+ return;
124
+ }
125
+ if (disabled) {
126
+ _this.form.disable();
127
+ }
128
+ else {
129
+ _this.form.enable();
130
+ }
131
+ _this._cd.markForCheck();
132
+ }));
133
+ (/** @type {?} */ (this._formGroupDirective
134
+ .valueChanges)).pipe(distinctUntilChanged((/**
135
+ * @param {?} a
136
+ * @param {?} b
137
+ * @return {?}
138
+ */
139
+ function (a, b) { return JSON.stringify(a) === JSON.stringify(b); })), this.debounceChange())
140
+ .subscribe((/**
141
+ * @return {?}
142
+ */
143
+ function () {
144
+ _this.updateFormStateWithRawValue();
145
+ }));
146
+ (/** @type {?} */ (this._formGroupDirective
147
+ .statusChanges)).pipe(distinctUntilChanged(), this.debounceChange())
148
+ .subscribe((/**
149
+ * @param {?} status
150
+ * @return {?}
151
+ */
152
+ function (status) {
153
+ _this._store.dispatch(new UpdateFormStatus({
154
+ status: status,
155
+ path: _this.path
156
+ }));
157
+ }));
158
+ };
159
+ /**
160
+ * @param {?=} withFormStatus
161
+ * @return {?}
162
+ */
163
+ FormDirective.prototype.updateFormStateWithRawValue = /**
164
+ * @param {?=} withFormStatus
165
+ * @return {?}
166
+ */
167
+ function (withFormStatus) {
168
+ var _this = this;
169
+ if (this._updating)
170
+ return;
171
+ /** @type {?} */
172
+ var value = this._formGroupDirective.control.getRawValue();
173
+ /** @type {?} */
174
+ var actions = [
175
+ new UpdateFormValue({
176
+ path: this.path,
177
+ value: value
178
+ }),
179
+ new UpdateFormDirty({
180
+ path: this.path,
181
+ dirty: this._formGroupDirective.dirty
182
+ }),
183
+ new UpdateFormErrors({
184
+ path: this.path,
185
+ errors: this._formGroupDirective.errors
186
+ })
187
+ ];
188
+ if (withFormStatus) {
189
+ actions.push(new UpdateFormStatus({
190
+ path: this.path,
191
+ status: this._formGroupDirective.status
192
+ }));
193
+ }
194
+ this._updating = true;
195
+ this._store.dispatch(actions).subscribe({
196
+ error: (/**
197
+ * @return {?}
198
+ */
199
+ function () { return (_this._updating = false); }),
200
+ complete: (/**
201
+ * @return {?}
202
+ */
203
+ function () { return (_this._updating = false); })
204
+ });
205
+ };
206
+ /**
207
+ * @return {?}
208
+ */
209
+ FormDirective.prototype.ngOnDestroy = /**
210
+ * @return {?}
211
+ */
212
+ function () {
213
+ this._destroy$.next();
214
+ this._destroy$.complete();
215
+ if (this.clearDestroy) {
216
+ this._store.dispatch(new UpdateForm({
217
+ path: this.path,
218
+ value: null,
219
+ dirty: null,
220
+ status: null,
221
+ errors: null
222
+ }));
223
+ }
224
+ };
225
+ /**
226
+ * @private
227
+ * @return {?}
228
+ */
229
+ FormDirective.prototype.debounceChange = /**
230
+ * @private
231
+ * @return {?}
232
+ */
233
+ function () {
234
+ var _this = this;
235
+ /** @type {?} */
236
+ var skipDebounceTime = this._formGroupDirective.control.updateOn !== 'change' || this.debounce < 0;
237
+ return skipDebounceTime
238
+ ? (/**
239
+ * @param {?} change
240
+ * @return {?}
241
+ */
242
+ function (change) { return change.pipe(takeUntil(_this._destroy$)); })
243
+ : (/**
244
+ * @param {?} change
245
+ * @return {?}
246
+ */
247
+ function (change) {
248
+ return change.pipe(debounceTime(_this.debounce), takeUntil(_this._destroy$));
249
+ });
250
+ };
251
+ Object.defineProperty(FormDirective.prototype, "form", {
252
+ get: /**
253
+ * @private
254
+ * @return {?}
255
+ */
256
+ function () {
257
+ return this._formGroupDirective.form;
258
+ },
259
+ enumerable: true,
260
+ configurable: true
261
+ });
262
+ /**
263
+ * @private
264
+ * @param {?} path
265
+ * @return {?}
266
+ */
267
+ FormDirective.prototype.getStateStream = /**
268
+ * @private
269
+ * @param {?} path
270
+ * @return {?}
271
+ */
272
+ function (path) {
273
+ return this._store.select((/**
274
+ * @param {?} state
275
+ * @return {?}
276
+ */
277
+ function (state) { return getValue(state, path); })).pipe(takeUntil(this._destroy$));
278
+ };
279
+ FormDirective.decorators = [
280
+ { type: Directive, args: [{ selector: '[ngxsForm]' },] }
281
+ ];
282
+ /** @nocollapse */
283
+ FormDirective.ctorParameters = function () { return [
284
+ { type: Actions },
285
+ { type: Store },
286
+ { type: FormGroupDirective },
287
+ { type: ChangeDetectorRef }
288
+ ]; };
289
+ FormDirective.propDecorators = {
290
+ path: [{ type: Input, args: ['ngxsForm',] }],
291
+ debounce: [{ type: Input, args: ['ngxsFormDebounce',] }],
292
+ clearDestroy: [{ type: Input, args: ['ngxsFormClearOnDestroy',] }]
293
+ };
294
+ return FormDirective;
295
+ }());
296
+ export { FormDirective };
297
+ if (false) {
298
+ /** @type {?} */
299
+ FormDirective.prototype.path;
300
+ /** @type {?} */
301
+ FormDirective.prototype.debounce;
302
+ /** @type {?} */
303
+ FormDirective.prototype._clearDestroy;
304
+ /**
305
+ * @type {?}
306
+ * @private
307
+ */
308
+ FormDirective.prototype._destroy$;
309
+ /**
310
+ * @type {?}
311
+ * @private
312
+ */
313
+ FormDirective.prototype._updating;
314
+ /**
315
+ * @type {?}
316
+ * @private
317
+ */
318
+ FormDirective.prototype._actions$;
319
+ /**
320
+ * @type {?}
321
+ * @private
322
+ */
323
+ FormDirective.prototype._store;
324
+ /**
325
+ * @type {?}
326
+ * @private
327
+ */
328
+ FormDirective.prototype._formGroupDirective;
329
+ /**
330
+ * @type {?}
331
+ * @private
332
+ */
333
+ FormDirective.prototype._cd;
334
+ }
335
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMvZm9ybS1wbHVnaW4vIiwic291cmNlcyI6WyJzcmMvZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFhLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNoQixNQUFNLFdBQVcsQ0FBQztBQUVuQjtJQXNCRSx1QkFDVSxTQUFrQixFQUNsQixNQUFhLEVBQ2IsbUJBQXVDLEVBQ3ZDLEdBQXNCO1FBSHRCLGNBQVMsR0FBVCxTQUFTLENBQVM7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBTztRQUNiLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFDdkMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUF2QmhDLFNBQUksR0FBVyxtQkFBQSxJQUFJLEVBQUMsQ0FBQztRQUdyQixhQUFRLEdBQUcsR0FBRyxDQUFDO1FBV2Ysa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFTCxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUN6QyxjQUFTLEdBQUcsS0FBSyxDQUFDO0lBT3ZCLENBQUM7SUFuQkosc0JBQ0ksdUNBQVk7Ozs7UUFJaEI7WUFDRSxPQUFPLElBQUks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LEtBQUssRUFBRSxJQUFJLENBQUMsRUFBckIsQ0FBcUIsRUFBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDNUYsQ0FBQzs7Z0JBNUxGLFNBQVMsU0FBQyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUU7Ozs7Z0JBWjVCLE9BQU87Z0JBQWdDLEtBQUs7Z0JBRGpDLGtCQUFrQjtnQkFEN0IsaUJBQWlCOzs7dUJBZ0J2QixLQUFLLFNBQUMsVUFBVTsyQkFHaEIsS0FBSyxTQUFDLGtCQUFrQjsrQkFHeEIsS0FBSyxTQUFDLHdCQUF3Qjs7SUFxTGpDLG9CQUFDO0NBQUEsQUE3TEQsSUE2TEM7U0E1TFksYUFBYTs7O0lBQ3hCLDZCQUNxQjs7SUFFckIsaUNBQ2U7O0lBV2Ysc0NBQXNCOzs7OztJQUV0QixrQ0FBaUQ7Ozs7O0lBQ2pELGtDQUEwQjs7Ozs7SUFHeEIsa0NBQTBCOzs7OztJQUMxQiwrQkFBcUI7Ozs7O0lBQ3JCLDRDQUErQzs7Ozs7SUFDL0MsNEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGlvbnMsIGdldFZhbHVlLCBvZkFjdGlvbkRpc3BhdGNoZWQsIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBSZXNldEZvcm0sXG4gIFVwZGF0ZUZvcm0sXG4gIFVwZGF0ZUZvcm1EaXJ0eSxcbiAgVXBkYXRlRm9ybUVycm9ycyxcbiAgVXBkYXRlRm9ybVN0YXR1cyxcbiAgVXBkYXRlRm9ybVZhbHVlXG59IGZyb20gJy4vYWN0aW9ucyc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tuZ3hzRm9ybV0nIH0pXG5leHBvcnQgY2xhc3MgRm9ybURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCduZ3hzRm9ybScpXG4gIHBhdGg6IHN0cmluZyA9IG51bGwhO1xuXG4gIEBJbnB1dCgnbmd4c0Zvcm1EZWJvdW5jZScpXG4gIGRlYm91bmNlID0gMTAwO1xuXG4gIEBJbnB1dCgnbmd4c0Zvcm1DbGVhck9uRGVzdHJveScpXG4gIHNldCBjbGVhckRlc3Ryb3kodmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5fY2xlYXJEZXN0cm95ID0gdmFsICE9IG51bGwgJiYgYCR7dmFsfWAgIT09ICdmYWxzZSc7XG4gIH1cblxuICBnZXQgY2xlYXJEZXN0cm95KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9jbGVhckRlc3Ryb3k7XG4gIH1cblxuICBfY2xlYXJEZXN0cm95ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF91cGRhdGluZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2FjdGlvbnMkOiBBY3Rpb25zLFxuICAgIHByaXZhdGUgX3N0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIF9mb3JtR3JvdXBEaXJlY3RpdmU6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX2FjdGlvbnMkXG4gICAgICAucGlwZShcbiAgICAgICAgb2ZBY3Rpb25EaXNwYXRjaGVkKFJlc2V0Rm9ybSksXG4gICAgICAgIGZpbHRlcigoYWN0aW9uOiBSZXNldEZvcm0pID0+IGFjdGlvbi5wYXlsb2FkLnBhdGggPT09IHRoaXMucGF0aCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHsgcGF5bG9hZDogeyB2YWx1ZSB9IH06IFJlc2V0Rm9ybSkgPT4ge1xuICAgICAgICB0aGlzLmZvcm0ucmVzZXQodmFsdWUpO1xuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1TdGF0ZVdpdGhSYXdWYWx1ZSh0cnVlKTtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZ2V0U3RhdGVTdHJlYW0oYCR7dGhpcy5wYXRofS5tb2RlbGApLnN1YnNjcmliZShtb2RlbCA9PiB7XG4gICAgICBpZiAodGhpcy5fdXBkYXRpbmcgfHwgIW1vZGVsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUobW9kZWwpO1xuICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmdldFN0YXRlU3RyZWFtKGAke3RoaXMucGF0aH0uZGlydHlgKS5zdWJzY3JpYmUoZGlydHkgPT4ge1xuICAgICAgaWYgKHRoaXMuZm9ybS5kaXJ0eSA9PT0gZGlydHkgfHwgdHlwZW9mIGRpcnR5ICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgdGhpcy5mb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICAvLyBPbiBmaXJzdCBzdGF0ZSBjaGFuZ2UsIHN5bmMgZm9ybSBtb2RlbCwgc3RhdHVzIGFuZCBkaXJ0eSB3aXRoIHN0YXRlXG4gICAgdGhpcy5fc3RvcmVcbiAgICAgIC5zZWxlY3RPbmNlKHN0YXRlID0+IGdldFZhbHVlKHN0YXRlLCB0aGlzLnBhdGgpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKFtcbiAgICAgICAgICBuZXcgVXBkYXRlRm9ybVZhbHVlKHtcbiAgICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBVcGRhdGVGb3JtU3RhdHVzKHtcbiAgICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgICAgIHN0YXR1czogdGhpcy5mb3JtLnN0YXR1c1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBVcGRhdGVGb3JtRGlydHkoe1xuICAgICAgICAgICAgcGF0aDogdGhpcy5wYXRoLFxuICAgICAgICAgICAgZGlydHk6IHRoaXMuZm9ybS5kaXJ0eVxuICAgICAgICAgIH0pXG4gICAgICAgIF0pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmdldFN0YXRlU3RyZWFtKGAke3RoaXMucGF0aH0uZGlzYWJsZWRgKS5zdWJzY3JpYmUoZGlzYWJsZWQgPT4ge1xuICAgICAgaWYgKHRoaXMuZm9ybS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQgfHwgdHlwZW9mIGRpc2FibGVkICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5mb3JtLmRpc2FibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9ybS5lbmFibGUoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9mb3JtR3JvdXBEaXJlY3RpdmVcbiAgICAgIC52YWx1ZUNoYW5nZXMhLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBKU09OLnN0cmluZ2lmeShhKSA9PT0gSlNPTi5zdHJpbmdpZnkoYikpLFxuICAgICAgICB0aGlzLmRlYm91bmNlQ2hhbmdlKClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1TdGF0ZVdpdGhSYXdWYWx1ZSgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9mb3JtR3JvdXBEaXJlY3RpdmVcbiAgICAgIC5zdGF0dXNDaGFuZ2VzIS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRoaXMuZGVib3VuY2VDaGFuZ2UoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXR1czogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIG5ldyBVcGRhdGVGb3JtU3RhdHVzKHtcbiAgICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICAgIHBhdGg6IHRoaXMucGF0aFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZUZvcm1TdGF0ZVdpdGhSYXdWYWx1ZSh3aXRoRm9ybVN0YXR1cz86IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5fdXBkYXRpbmcpIHJldHVybjtcblxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fZm9ybUdyb3VwRGlyZWN0aXZlLmNvbnRyb2wuZ2V0UmF3VmFsdWUoKTtcblxuICAgIGNvbnN0IGFjdGlvbnM6IGFueVtdID0gW1xuICAgICAgbmV3IFVwZGF0ZUZvcm1WYWx1ZSh7XG4gICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgdmFsdWVcbiAgICAgIH0pLFxuICAgICAgbmV3IFVwZGF0ZUZvcm1EaXJ0eSh7XG4gICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgZGlydHk6IHRoaXMuX2Zvcm1Hcm91cERpcmVjdGl2ZS5kaXJ0eVxuICAgICAgfSksXG4gICAgICBuZXcgVXBkYXRlRm9ybUVycm9ycyh7XG4gICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgZXJyb3JzOiB0aGlzLl9mb3JtR3JvdXBEaXJlY3RpdmUuZXJyb3JzXG4gICAgICB9KVxuICAgIF07XG5cbiAgICBpZiAod2l0aEZvcm1TdGF0dXMpIHtcbiAgICAgIGFjdGlvbnMucHVzaChcbiAgICAgICAgbmV3IFVwZGF0ZUZvcm1TdGF0dXMoe1xuICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgICBzdGF0dXM6IHRoaXMuX2Zvcm1Hcm91cERpcmVjdGl2ZS5zdGF0dXNcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRpbmcgPSB0cnVlO1xuICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKGFjdGlvbnMpLnN1YnNjcmliZSh7XG4gICAgICBlcnJvcjogKCkgPT4gKHRoaXMuX3VwZGF0aW5nID0gZmFsc2UpLFxuICAgICAgY29tcGxldGU6ICgpID0+ICh0aGlzLl91cGRhdGluZyA9IGZhbHNlKVxuICAgIH0pO1xuICB9XG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuXG4gICAgaWYgKHRoaXMuY2xlYXJEZXN0cm95KSB7XG4gICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgbmV3IFVwZGF0ZUZvcm0oe1xuICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICBkaXJ0eTogbnVsbCxcbiAgICAgICAgICBzdGF0dXM6IG51bGwsXG4gICAgICAgICAgZXJyb3JzOiBudWxsXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVib3VuY2VDaGFuZ2UoKSB7XG4gICAgY29uc3Qgc2tpcERlYm91bmNlVGltZSA9XG4gICAgICB0aGlzLl9mb3JtR3JvdXBEaXJlY3RpdmUuY29udHJvbC51cGRhdGVPbiAhPT0gJ2NoYW5nZScgfHwgdGhpcy5kZWJvdW5jZSA8IDA7XG5cbiAgICByZXR1cm4gc2tpcERlYm91bmNlVGltZVxuICAgICAgPyAoY2hhbmdlOiBPYnNlcnZhYmxlPGFueT4pID0+IGNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXG4gICAgICA6IChjaGFuZ2U6IE9ic2VydmFibGU8YW55PikgPT5cbiAgICAgICAgICBjaGFuZ2UucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZSksIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZm9ybSgpOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLl9mb3JtR3JvdXBEaXJlY3RpdmUuZm9ybTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3RhdGVTdHJlYW0ocGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3JlLnNlbGVjdChzdGF0ZSA9PiBnZXRWYWx1ZShzdGF0ZSwgcGF0aCkpLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSk7XG4gIH1cbn1cbiJdfQ==