@ngxs/form-plugin 3.7.3-dev.master-10b0883 → 3.7.4

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,328 @@
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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LFlBQVksRUFBRTs7OztnQkFaNUIsT0FBTztnQkFBZ0MsS0FBSztnQkFEakMsa0JBQWtCO2dCQUQ3QixpQkFBaUI7Ozt1QkFnQnZCLEtBQUssU0FBQyxVQUFVOzJCQUdoQixLQUFLLFNBQUMsa0JBQWtCOytCQUd4QixLQUFLLFNBQUMsd0JBQXdCOztJQWdMakMsb0JBQUM7Q0FBQSxBQXhMRCxJQXdMQztTQXZMWSxhQUFhOzs7SUFDeEIsNkJBQ3FCOztJQUVyQixpQ0FDZTs7SUFXZixzQ0FBc0I7Ozs7O0lBRXRCLGtDQUFpRDs7Ozs7SUFDakQsa0NBQTBCOzs7OztJQUd4QixrQ0FBMEI7Ozs7O0lBQzFCLCtCQUFxQjs7Ozs7SUFDckIsNENBQStDOzs7OztJQUMvQyw0QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aW9ucywgZ2V0VmFsdWUsIG9mQWN0aW9uRGlzcGF0Y2hlZCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIFJlc2V0Rm9ybSxcbiAgVXBkYXRlRm9ybSxcbiAgVXBkYXRlRm9ybURpcnR5LFxuICBVcGRhdGVGb3JtRXJyb3JzLFxuICBVcGRhdGVGb3JtU3RhdHVzLFxuICBVcGRhdGVGb3JtVmFsdWVcbn0gZnJvbSAnLi9hY3Rpb25zJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW25neHNGb3JtXScgfSlcbmV4cG9ydCBjbGFzcyBGb3JtRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoJ25neHNGb3JtJylcbiAgcGF0aDogc3RyaW5nID0gbnVsbCE7XG5cbiAgQElucHV0KCduZ3hzRm9ybURlYm91bmNlJylcbiAgZGVib3VuY2UgPSAxMDA7XG5cbiAgQElucHV0KCduZ3hzRm9ybUNsZWFyT25EZXN0cm95JylcbiAgc2V0IGNsZWFyRGVzdHJveSh2YWw6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9jbGVhckRlc3Ryb3kgPSB2YWwgIT0gbnVsbCAmJiBgJHt2YWx9YCAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIGdldCBjbGVhckRlc3Ryb3koKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NsZWFyRGVzdHJveTtcbiAgfVxuXG4gIF9jbGVhckRlc3Ryb3kgPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX3VwZGF0aW5nID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgcHJpdmF0ZSBfc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgX2Zvcm1Hcm91cERpcmVjdGl2ZTogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fYWN0aW9ucyRcbiAgICAgIC5waXBlKFxuICAgICAgICBvZkFjdGlvbkRpc3BhdGNoZWQoUmVzZXRGb3JtKSxcbiAgICAgICAgZmlsdGVyKChhY3Rpb246IFJlc2V0Rm9ybSkgPT4gYWN0aW9uLnBheWxvYWQucGF0aCA9PT0gdGhpcy5wYXRoKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoeyBwYXlsb2FkOiB7IHZhbHVlIH0gfTogUmVzZXRGb3JtKSA9PiB7XG4gICAgICAgIHRoaXMuZm9ybS5yZXNldCh2YWx1ZSk7XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybVN0YXRlV2l0aFJhd1ZhbHVlKHRydWUpO1xuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5nZXRTdGF0ZVN0cmVhbShgJHt0aGlzLnBhdGh9Lm1vZGVsYCkuc3Vic2NyaWJlKG1vZGVsID0+IHtcbiAgICAgIGlmICh0aGlzLl91cGRhdGluZyB8fCAhbW9kZWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShtb2RlbCk7XG4gICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZ2V0U3RhdGVTdHJlYW0oYCR7dGhpcy5wYXRofS5kaXJ0eWApLnN1YnNjcmliZShkaXJ0eSA9PiB7XG4gICAgICBpZiAodGhpcy5mb3JtLmRpcnR5ID09PSBkaXJ0eSB8fCB0eXBlb2YgZGlydHkgIT09ICdib29sZWFuJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChkaXJ0eSkge1xuICAgICAgICB0aGlzLmZvcm0ubWFya0FzRGlydHkoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIC8vIE9uIGZpcnN0IHN0YXRlIGNoYW5nZSwgc3luYyBmb3JtIG1vZGVsLCBzdGF0dXMgYW5kIGRpcnR5IHdpdGggc3RhdGVcbiAgICB0aGlzLl9zdG9yZVxuICAgICAgLnNlbGVjdE9uY2Uoc3RhdGUgPT4gZ2V0VmFsdWUoc3RhdGUsIHRoaXMucGF0aCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2goW1xuICAgICAgICAgIG5ldyBVcGRhdGVGb3JtVmFsdWUoe1xuICAgICAgICAgICAgcGF0aDogdGhpcy5wYXRoLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbmV3IFVwZGF0ZUZvcm1TdGF0dXMoe1xuICAgICAgICAgICAgcGF0aDogdGhpcy5wYXRoLFxuICAgICAgICAgICAgc3RhdHVzOiB0aGlzLmZvcm0uc3RhdHVzXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbmV3IFVwZGF0ZUZvcm1EaXJ0eSh7XG4gICAgICAgICAgICBwYXRoOiB0aGlzLnBhdGgsXG4gICAgICAgICAgICBkaXJ0eTogdGhpcy5mb3JtLmRpcnR5XG4gICAgICAgICAgfSlcbiAgICAgICAgXSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZ2V0U3RhdGVTdHJlYW0oYCR7dGhpcy5wYXRofS5kaXNhYmxlZGApLnN1YnNjcmliZShkaXNhYmxlZCA9PiB7XG4gICAgICBpZiAodGhpcy5mb3JtLmRpc2FibGVkID09PSBkaXNhYmxlZCB8fCB0eXBlb2YgZGlzYWJsZWQgIT09ICdib29sZWFuJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICB0aGlzLmZvcm0uZGlzYWJsZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mb3JtLmVuYWJsZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2Zvcm1Hcm91cERpcmVjdGl2ZS52YWx1ZUNoYW5nZXMhLnBpcGUodGhpcy5kZWJvdW5jZUNoYW5nZSgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVGb3JtU3RhdGVXaXRoUmF3VmFsdWUoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2Zvcm1Hcm91cERpcmVjdGl2ZVxuICAgICAgLnN0YXR1c0NoYW5nZXMhLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgdGhpcy5kZWJvdW5jZUNoYW5nZSgpKVxuICAgICAgLnN1YnNjcmliZSgoc3RhdHVzOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgbmV3IFVwZGF0ZUZvcm1TdGF0dXMoe1xuICAgICAgICAgICAgc3RhdHVzLFxuICAgICAgICAgICAgcGF0aDogdGhpcy5wYXRoXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlRm9ybVN0YXRlV2l0aFJhd1ZhbHVlKHdpdGhGb3JtU3RhdHVzPzogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLl91cGRhdGluZykgcmV0dXJuO1xuXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLl9mb3JtR3JvdXBEaXJlY3RpdmUuY29udHJvbC5nZXRSYXdWYWx1ZSgpO1xuXG4gICAgY29uc3QgYWN0aW9uczogYW55W10gPSBbXG4gICAgICBuZXcgVXBkYXRlRm9ybVZhbHVlKHtcbiAgICAgICAgcGF0aDogdGhpcy5wYXRoLFxuICAgICAgICB2YWx1ZVxuICAgICAgfSksXG4gICAgICBuZXcgVXBkYXRlRm9ybURpcnR5KHtcbiAgICAgICAgcGF0aDogdGhpcy5wYXRoLFxuICAgICAgICBkaXJ0eTogdGhpcy5fZm9ybUdyb3VwRGlyZWN0aXZlLmRpcnR5XG4gICAgICB9KSxcbiAgICAgIG5ldyBVcGRhdGVGb3JtRXJyb3JzKHtcbiAgICAgICAgcGF0aDogdGhpcy5wYXRoLFxuICAgICAgICBlcnJvcnM6IHRoaXMuX2Zvcm1Hcm91cERpcmVjdGl2ZS5lcnJvcnNcbiAgICAgIH0pXG4gICAgXTtcblxuICAgIGlmICh3aXRoRm9ybVN0YXR1cykge1xuICAgICAgYWN0aW9ucy5wdXNoKFxuICAgICAgICBuZXcgVXBkYXRlRm9ybVN0YXR1cyh7XG4gICAgICAgICAgcGF0aDogdGhpcy5wYXRoLFxuICAgICAgICAgIHN0YXR1czogdGhpcy5fZm9ybUdyb3VwRGlyZWN0aXZlLnN0YXR1c1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGluZyA9IHRydWU7XG4gICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2goYWN0aW9ucykuc3Vic2NyaWJlKHtcbiAgICAgIGVycm9yOiAoKSA9PiAodGhpcy5fdXBkYXRpbmcgPSBmYWxzZSksXG4gICAgICBjb21wbGV0ZTogKCkgPT4gKHRoaXMuX3VwZGF0aW5nID0gZmFsc2UpXG4gICAgfSk7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG5cbiAgICBpZiAodGhpcy5jbGVhckRlc3Ryb3kpIHtcbiAgICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKFxuICAgICAgICBuZXcgVXBkYXRlRm9ybSh7XG4gICAgICAgICAgcGF0aDogdGhpcy5wYXRoLFxuICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgIGRpcnR5OiBudWxsLFxuICAgICAgICAgIHN0YXR1czogbnVsbCxcbiAgICAgICAgICBlcnJvcnM6IG51bGxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZWJvdW5jZUNoYW5nZSgpIHtcbiAgICBjb25zdCBza2lwRGVib3VuY2VUaW1lID1cbiAgICAgIHRoaXMuX2Zvcm1Hcm91cERpcmVjdGl2ZS5jb250cm9sLnVwZGF0ZU9uICE9PSAnY2hhbmdlJyB8fCB0aGlzLmRlYm91bmNlIDwgMDtcblxuICAgIHJldHVybiBza2lwRGVib3VuY2VUaW1lXG4gICAgICA/IChjaGFuZ2U6IE9ic2VydmFibGU8YW55PikgPT4gY2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcbiAgICAgIDogKGNoYW5nZTogT2JzZXJ2YWJsZTxhbnk+KSA9PlxuICAgICAgICAgIGNoYW5nZS5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBmb3JtKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1Hcm91cERpcmVjdGl2ZS5mb3JtO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdGF0ZVN0cmVhbShwYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RvcmUuc2VsZWN0KHN0YXRlID0+IGdldFZhbHVlKHN0YXRlLCBwYXRoKSkucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKTtcbiAgfVxufVxuIl19
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=