@ngxs/form-plugin 3.8.2-dev.master-e0981de → 3.8.2-dev.master-f242756
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/esm2022/src/actions.mjs +61 -0
- package/esm2022/src/directive.mjs +176 -0
- package/{esm2020 → esm2022}/src/form.module.mjs +5 -5
- package/{esm2020 → esm2022}/src/form.plugin.mjs +4 -4
- package/{fesm2020 → fesm2022}/ngxs-form-plugin.mjs +32 -32
- package/{fesm2015 → fesm2022}/ngxs-form-plugin.mjs.map +1 -1
- package/package.json +5 -11
- package/src/directive.d.ts +1 -1
- package/esm2020/src/actions.mjs +0 -61
- package/esm2020/src/directive.mjs +0 -176
- package/fesm2015/ngxs-form-plugin.mjs +0 -331
- package/fesm2020/ngxs-form-plugin.mjs.map +0 -1
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/ngxs-form-plugin.mjs +0 -0
- /package/{esm2020 → esm2022}/src/public_api.mjs +0 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export class UpdateFormStatus {
|
|
2
|
+
static { this.type = '[Forms] Update Form Status'; }
|
|
3
|
+
constructor(payload) {
|
|
4
|
+
this.payload = payload;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export class UpdateFormValue {
|
|
8
|
+
static { this.type = '[Forms] Update Form Value'; }
|
|
9
|
+
constructor(payload) {
|
|
10
|
+
this.payload = payload;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class UpdateForm {
|
|
14
|
+
static { this.type = '[Forms] Update Form'; }
|
|
15
|
+
constructor(payload) {
|
|
16
|
+
this.payload = payload;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export class UpdateFormDirty {
|
|
20
|
+
static { this.type = '[Forms] Update Form Dirty'; }
|
|
21
|
+
constructor(payload) {
|
|
22
|
+
this.payload = payload;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export class SetFormDirty {
|
|
26
|
+
static { this.type = '[Forms] Set Form Dirty'; }
|
|
27
|
+
constructor(payload) {
|
|
28
|
+
this.payload = payload;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export class SetFormPristine {
|
|
32
|
+
static { this.type = '[Forms] Set Form Pristine'; }
|
|
33
|
+
constructor(payload) {
|
|
34
|
+
this.payload = payload;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export class UpdateFormErrors {
|
|
38
|
+
static { this.type = '[Forms] Update Form Errors'; }
|
|
39
|
+
constructor(payload) {
|
|
40
|
+
this.payload = payload;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export class SetFormDisabled {
|
|
44
|
+
static { this.type = '[Forms] Set Form Disabled'; }
|
|
45
|
+
constructor(payload) {
|
|
46
|
+
this.payload = payload;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export class SetFormEnabled {
|
|
50
|
+
static { this.type = '[Forms] Set Form Enabled'; }
|
|
51
|
+
constructor(payload) {
|
|
52
|
+
this.payload = payload;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export class ResetForm {
|
|
56
|
+
static { this.type = '[Forms] Reset Form'; }
|
|
57
|
+
constructor(payload) {
|
|
58
|
+
this.payload = payload;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2Zvcm0tcGx1Z2luL3NyYy9hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxnQkFBZ0I7YUFDWCxTQUFJLEdBQUcsNEJBQTRCLENBQUM7SUFFcEQsWUFDUyxPQUdOO1FBSE0sWUFBTyxHQUFQLE9BQU8sQ0FHYjtJQUNBLENBQUM7O0FBR04sTUFBTSxPQUFPLGVBQWU7YUFDVixTQUFJLEdBQUcsMkJBQTJCLENBQUM7SUFFbkQsWUFBbUIsT0FBNEQ7UUFBNUQsWUFBTyxHQUFQLE9BQU8sQ0FBcUQ7SUFBRyxDQUFDOztBQUdyRixNQUFNLE9BQU8sVUFBVTthQUNMLFNBQUksR0FBRyxxQkFBcUIsQ0FBQztJQUU3QyxZQUNTLE9BTU47UUFOTSxZQUFPLEdBQVAsT0FBTyxDQU1iO0lBQ0EsQ0FBQzs7QUFHTixNQUFNLE9BQU8sZUFBZTthQUNWLFNBQUksR0FBRywyQkFBMkIsQ0FBQztJQUVuRCxZQUFtQixPQUFnRDtRQUFoRCxZQUFPLEdBQVAsT0FBTyxDQUF5QztJQUFHLENBQUM7O0FBR3pFLE1BQU0sT0FBTyxZQUFZO2FBQ1AsU0FBSSxHQUFHLHdCQUF3QixDQUFDO0lBRWhELFlBQW1CLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO0lBQUcsQ0FBQzs7QUFHeEMsTUFBTSxPQUFPLGVBQWU7YUFDVixTQUFJLEdBQUcsMkJBQTJCLENBQUM7SUFFbkQsWUFBbUIsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFBRyxDQUFDOztBQUd4QyxNQUFNLE9BQU8sZ0JBQWdCO2FBQ1gsU0FBSSxHQUFHLDRCQUE0QixDQUFDO0lBRXBELFlBQW1CLE9BQWlFO1FBQWpFLFlBQU8sR0FBUCxPQUFPLENBQTBEO0lBQUcsQ0FBQzs7QUFHMUYsTUFBTSxPQUFPLGVBQWU7YUFDVixTQUFJLEdBQUcsMkJBQTJCLENBQUM7SUFFbkQsWUFBbUIsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFBRyxDQUFDOztBQUd4QyxNQUFNLE9BQU8sY0FBYzthQUNULFNBQUksR0FBRywwQkFBMEIsQ0FBQztJQUVsRCxZQUFtQixPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUFHLENBQUM7O0FBR3hDLE1BQU0sT0FBTyxTQUFTO2FBQ0osU0FBSSxHQUFHLG9CQUFvQixDQUFDO0lBRTVDLFlBQW1CLE9BQXNDO1FBQXRDLFlBQU8sR0FBUCxPQUFPLENBQStCO0lBQUcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBVcGRhdGVGb3JtU3RhdHVzIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0Zvcm1zXSBVcGRhdGUgRm9ybSBTdGF0dXMnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBwYXlsb2FkOiB7XG4gICAgICBzdGF0dXM6IHN0cmluZyB8IG51bGw7XG4gICAgICBwYXRoOiBzdHJpbmc7XG4gICAgfVxuICApIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGVGb3JtVmFsdWUge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbRm9ybXNdIFVwZGF0ZSBGb3JtIFZhbHVlJztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogeyB2YWx1ZTogYW55OyBwYXRoOiBzdHJpbmc7IHByb3BlcnR5UGF0aD86IHN0cmluZyB9KSB7fVxufVxuXG5leHBvcnQgY2xhc3MgVXBkYXRlRm9ybSB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tGb3Jtc10gVXBkYXRlIEZvcm0nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBwYXlsb2FkOiB7XG4gICAgICB2YWx1ZTogYW55O1xuICAgICAgZXJyb3JzOiB7IFtrOiBzdHJpbmddOiBzdHJpbmcgfSB8IG51bGw7XG4gICAgICBkaXJ0eTogYm9vbGVhbiB8IG51bGw7XG4gICAgICBzdGF0dXM6IHN0cmluZyB8IG51bGw7XG4gICAgICBwYXRoOiBzdHJpbmc7XG4gICAgfVxuICApIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGVGb3JtRGlydHkge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbRm9ybXNdIFVwZGF0ZSBGb3JtIERpcnR5JztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogeyBkaXJ0eTogYm9vbGVhbiB8IG51bGw7IHBhdGg6IHN0cmluZyB9KSB7fVxufVxuXG5leHBvcnQgY2xhc3MgU2V0Rm9ybURpcnR5IHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0Zvcm1zXSBTZXQgRm9ybSBEaXJ0eSc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ6IHN0cmluZykge31cbn1cblxuZXhwb3J0IGNsYXNzIFNldEZvcm1QcmlzdGluZSB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tGb3Jtc10gU2V0IEZvcm0gUHJpc3RpbmUnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBzdHJpbmcpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGVGb3JtRXJyb3JzIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0Zvcm1zXSBVcGRhdGUgRm9ybSBFcnJvcnMnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiB7IGVycm9yczogeyBbazogc3RyaW5nXTogc3RyaW5nIH0gfCBudWxsOyBwYXRoOiBzdHJpbmcgfSkge31cbn1cblxuZXhwb3J0IGNsYXNzIFNldEZvcm1EaXNhYmxlZCB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tGb3Jtc10gU2V0IEZvcm0gRGlzYWJsZWQnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBzdHJpbmcpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBTZXRGb3JtRW5hYmxlZCB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tGb3Jtc10gU2V0IEZvcm0gRW5hYmxlZCc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ6IHN0cmluZykge31cbn1cblxuZXhwb3J0IGNsYXNzIFJlc2V0Rm9ybSB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tGb3Jtc10gUmVzZXQgRm9ybSc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ6IHsgcGF0aDogc3RyaW5nOyB2YWx1ZT86IGFueSB9KSB7fVxufVxuIl19
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { ChangeDetectorRef, Directive, Input } from '@angular/core';
|
|
2
|
+
import { FormGroupDirective } from '@angular/forms';
|
|
3
|
+
import { Actions, getValue, ofActionDispatched, Store } from '@ngxs/store';
|
|
4
|
+
import { ReplaySubject } from 'rxjs';
|
|
5
|
+
import { debounceTime, distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';
|
|
6
|
+
import { ResetForm, UpdateForm, UpdateFormDirty, UpdateFormErrors, UpdateFormStatus, UpdateFormValue } from './actions';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@ngxs/store";
|
|
9
|
+
import * as i2 from "@angular/forms";
|
|
10
|
+
export class NgxsFormDirective {
|
|
11
|
+
set debounce(debounce) {
|
|
12
|
+
this._debounce = Number(debounce);
|
|
13
|
+
}
|
|
14
|
+
get debounce() {
|
|
15
|
+
return this._debounce;
|
|
16
|
+
}
|
|
17
|
+
set clearDestroy(val) {
|
|
18
|
+
this._clearDestroy = val != null && `${val}` !== 'false';
|
|
19
|
+
}
|
|
20
|
+
get clearDestroy() {
|
|
21
|
+
return this._clearDestroy;
|
|
22
|
+
}
|
|
23
|
+
constructor(_actions$, _store, _formGroupDirective, _cd) {
|
|
24
|
+
this._actions$ = _actions$;
|
|
25
|
+
this._store = _store;
|
|
26
|
+
this._formGroupDirective = _formGroupDirective;
|
|
27
|
+
this._cd = _cd;
|
|
28
|
+
this.path = null;
|
|
29
|
+
this._debounce = 100;
|
|
30
|
+
this._clearDestroy = false;
|
|
31
|
+
this._updating = false;
|
|
32
|
+
this._destroy$ = new ReplaySubject(1);
|
|
33
|
+
}
|
|
34
|
+
ngOnInit() {
|
|
35
|
+
this._actions$
|
|
36
|
+
.pipe(ofActionDispatched(ResetForm), filter((action) => action.payload.path === this.path), takeUntil(this._destroy$))
|
|
37
|
+
.subscribe(({ payload: { value } }) => {
|
|
38
|
+
this.form.reset(value);
|
|
39
|
+
this.updateFormStateWithRawValue(true);
|
|
40
|
+
this._cd.markForCheck();
|
|
41
|
+
});
|
|
42
|
+
this.getStateStream(`${this.path}.model`).subscribe(model => {
|
|
43
|
+
if (this._updating || !model) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
this.form.patchValue(model);
|
|
47
|
+
this._cd.markForCheck();
|
|
48
|
+
});
|
|
49
|
+
this.getStateStream(`${this.path}.dirty`).subscribe(dirty => {
|
|
50
|
+
if (this.form.dirty === dirty || typeof dirty !== 'boolean') {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (dirty) {
|
|
54
|
+
this.form.markAsDirty();
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
this.form.markAsPristine();
|
|
58
|
+
}
|
|
59
|
+
this._cd.markForCheck();
|
|
60
|
+
});
|
|
61
|
+
// On first state change, sync form model, status and dirty with state
|
|
62
|
+
this._store
|
|
63
|
+
.selectOnce(state => getValue(state, this.path))
|
|
64
|
+
.subscribe(() => {
|
|
65
|
+
this._store.dispatch([
|
|
66
|
+
new UpdateFormValue({
|
|
67
|
+
path: this.path,
|
|
68
|
+
value: this.form.getRawValue()
|
|
69
|
+
}),
|
|
70
|
+
new UpdateFormStatus({
|
|
71
|
+
path: this.path,
|
|
72
|
+
status: this.form.status
|
|
73
|
+
}),
|
|
74
|
+
new UpdateFormDirty({
|
|
75
|
+
path: this.path,
|
|
76
|
+
dirty: this.form.dirty
|
|
77
|
+
})
|
|
78
|
+
]);
|
|
79
|
+
});
|
|
80
|
+
this.getStateStream(`${this.path}.disabled`).subscribe(disabled => {
|
|
81
|
+
if (this.form.disabled === disabled || typeof disabled !== 'boolean') {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (disabled) {
|
|
85
|
+
this.form.disable();
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
this.form.enable();
|
|
89
|
+
}
|
|
90
|
+
this._cd.markForCheck();
|
|
91
|
+
});
|
|
92
|
+
this._formGroupDirective
|
|
93
|
+
.valueChanges.pipe(distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)), this.debounceChange())
|
|
94
|
+
.subscribe(() => {
|
|
95
|
+
this.updateFormStateWithRawValue();
|
|
96
|
+
});
|
|
97
|
+
this._formGroupDirective
|
|
98
|
+
.statusChanges.pipe(distinctUntilChanged(), this.debounceChange())
|
|
99
|
+
.subscribe((status) => {
|
|
100
|
+
this._store.dispatch(new UpdateFormStatus({
|
|
101
|
+
status,
|
|
102
|
+
path: this.path
|
|
103
|
+
}));
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
updateFormStateWithRawValue(withFormStatus) {
|
|
107
|
+
if (this._updating)
|
|
108
|
+
return;
|
|
109
|
+
const value = this._formGroupDirective.control.getRawValue();
|
|
110
|
+
const actions = [
|
|
111
|
+
new UpdateFormValue({
|
|
112
|
+
path: this.path,
|
|
113
|
+
value
|
|
114
|
+
}),
|
|
115
|
+
new UpdateFormDirty({
|
|
116
|
+
path: this.path,
|
|
117
|
+
dirty: this._formGroupDirective.dirty
|
|
118
|
+
}),
|
|
119
|
+
new UpdateFormErrors({
|
|
120
|
+
path: this.path,
|
|
121
|
+
errors: this._formGroupDirective.errors
|
|
122
|
+
})
|
|
123
|
+
];
|
|
124
|
+
if (withFormStatus) {
|
|
125
|
+
actions.push(new UpdateFormStatus({
|
|
126
|
+
path: this.path,
|
|
127
|
+
status: this._formGroupDirective.status
|
|
128
|
+
}));
|
|
129
|
+
}
|
|
130
|
+
this._updating = true;
|
|
131
|
+
this._store.dispatch(actions).subscribe({
|
|
132
|
+
error: () => (this._updating = false),
|
|
133
|
+
complete: () => (this._updating = false)
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
ngOnDestroy() {
|
|
137
|
+
this._destroy$.next();
|
|
138
|
+
if (this.clearDestroy) {
|
|
139
|
+
this._store.dispatch(new UpdateForm({
|
|
140
|
+
path: this.path,
|
|
141
|
+
value: null,
|
|
142
|
+
dirty: null,
|
|
143
|
+
status: null,
|
|
144
|
+
errors: null
|
|
145
|
+
}));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
debounceChange() {
|
|
149
|
+
const skipDebounceTime = this._formGroupDirective.control.updateOn !== 'change' || this._debounce < 0;
|
|
150
|
+
return skipDebounceTime
|
|
151
|
+
? (change) => change.pipe(takeUntil(this._destroy$))
|
|
152
|
+
: (change) => change.pipe(debounceTime(this._debounce), takeUntil(this._destroy$));
|
|
153
|
+
}
|
|
154
|
+
get form() {
|
|
155
|
+
return this._formGroupDirective.form;
|
|
156
|
+
}
|
|
157
|
+
getStateStream(path) {
|
|
158
|
+
return this._store.select(state => getValue(state, path)).pipe(takeUntil(this._destroy$));
|
|
159
|
+
}
|
|
160
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: NgxsFormDirective, deps: [{ token: i1.Actions }, { token: i1.Store }, { token: i2.FormGroupDirective }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
161
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.5", type: NgxsFormDirective, isStandalone: true, selector: "[ngxsForm]", inputs: { path: ["ngxsForm", "path"], debounce: ["ngxsFormDebounce", "debounce"], clearDestroy: ["ngxsFormClearOnDestroy", "clearDestroy"] }, ngImport: i0 }); }
|
|
162
|
+
}
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: NgxsFormDirective, decorators: [{
|
|
164
|
+
type: Directive,
|
|
165
|
+
args: [{ selector: '[ngxsForm]', standalone: true }]
|
|
166
|
+
}], ctorParameters: () => [{ type: i1.Actions }, { type: i1.Store }, { type: i2.FormGroupDirective }, { type: i0.ChangeDetectorRef }], propDecorators: { path: [{
|
|
167
|
+
type: Input,
|
|
168
|
+
args: ['ngxsForm']
|
|
169
|
+
}], debounce: [{
|
|
170
|
+
type: Input,
|
|
171
|
+
args: ['ngxsFormDebounce']
|
|
172
|
+
}], clearDestroy: [{
|
|
173
|
+
type: Input,
|
|
174
|
+
args: ['ngxsFormClearOnDestroy']
|
|
175
|
+
}] } });
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZm9ybS1wbHVnaW4vc3JjL2RpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFhLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNFLE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNoQixNQUFNLFdBQVcsQ0FBQzs7OztBQUduQixNQUFNLE9BQU8saUJBQWlCO0lBSTVCLElBQ0ksUUFBUSxDQUFDLFFBQXlCO1FBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUdELElBQ0ksWUFBWSxDQUFDLEdBQVk7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssT0FBTyxDQUFDO0lBQzNELENBQUM7SUFDRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQU9ELFlBQ1UsU0FBa0IsRUFDbEIsTUFBYSxF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Q0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDNUYsQ0FBQztpSUFoTVUsaUJBQWlCO3FIQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7aUtBR3JELElBQUk7c0JBREgsS0FBSzt1QkFBQyxVQUFVO2dCQUliLFFBQVE7c0JBRFgsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBVXJCLFlBQVk7c0JBRGYsS0FBSzt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aW9ucywgZ2V0VmFsdWUsIG9mQWN0aW9uRGlzcGF0Y2hlZCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIFJlc2V0Rm9ybSxcbiAgVXBkYXRlRm9ybSxcbiAgVXBkYXRlRm9ybURpcnR5LFxuICBVcGRhdGVGb3JtRXJyb3JzLFxuICBVcGRhdGVGb3JtU3RhdHVzLFxuICBVcGRhdGVGb3JtVmFsdWVcbn0gZnJvbSAnLi9hY3Rpb25zJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW25neHNGb3JtXScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBOZ3hzRm9ybURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCduZ3hzRm9ybScpXG4gIHBhdGg6IHN0cmluZyA9IG51bGwhO1xuXG4gIEBJbnB1dCgnbmd4c0Zvcm1EZWJvdW5jZScpXG4gIHNldCBkZWJvdW5jZShkZWJvdW5jZTogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgdGhpcy5fZGVib3VuY2UgPSBOdW1iZXIoZGVib3VuY2UpO1xuICB9XG4gIGdldCBkZWJvdW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVib3VuY2U7XG4gIH1cbiAgcHJpdmF0ZSBfZGVib3VuY2UgPSAxMDA7XG5cbiAgQElucHV0KCduZ3hzRm9ybUNsZWFyT25EZXN0cm95JylcbiAgc2V0IGNsZWFyRGVzdHJveSh2YWw6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9jbGVhckRlc3Ryb3kgPSB2YWwgIT0gbnVsbCAmJiBgJHt2YWx9YCAhPT0gJ2ZhbHNlJztcbiAgfVxuICBnZXQgY2xlYXJEZXN0cm95KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9jbGVhckRlc3Ryb3k7XG4gIH1cbiAgcHJpdmF0ZSBfY2xlYXJEZXN0cm95ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfdXBkYXRpbmcgPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IG5ldyBSZXBsYXlTdWJqZWN0PHZvaWQ+KDEpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2FjdGlvbnMkOiBBY3Rpb25zLFxuICAgIHByaXZhdGUgX3N0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIF9mb3JtR3JvdXBEaXJlY3RpdmU6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX2FjdGlvbnMkXG4gICAgICAucGlwZShcbiAgICAgICAgb2ZBY3Rpb25EaXNwYXRjaGVkKFJlc2V0Rm9ybSksXG4gICAgICAgIGZpbHRlcigoYWN0aW9uOiBSZXNldEZvcm0pID0+IGFjdGlvbi5wYXlsb2FkLnBhdGggPT09IHRoaXMucGF0aCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHsgcGF5bG9hZDogeyB2YWx1ZSB9IH06IFJlc2V0Rm9ybSkgPT4ge1xuICAgICAgICB0aGlzLmZvcm0ucmVzZXQodmFsdWUpO1xuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1TdGF0ZVdpdGhSYXdWYWx1ZSh0cnVlKTtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZ2V0U3RhdGVTdHJlYW0oYCR7dGhpcy5wYXRofS5tb2RlbGApLnN1YnNjcmliZShtb2RlbCA9PiB7XG4gICAgICBpZiAodGhpcy5fdXBkYXRpbmcgfHwgIW1vZGVsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUobW9kZWwpO1xuICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmdldFN0YXRlU3RyZWFtKGAke3RoaXMucGF0aH0uZGlydHlgKS5zdWJzY3JpYmUoZGlydHkgPT4ge1xuICAgICAgaWYgKHRoaXMuZm9ybS5kaXJ0eSA9PT0gZGlydHkgfHwgdHlwZW9mIGRpcnR5ICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgdGhpcy5mb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICAvLyBPbiBmaXJzdCBzdGF0ZSBjaGFuZ2UsIHN5bmMgZm9ybSBtb2RlbCwgc3RhdHVzIGFuZCBkaXJ0eSB3aXRoIHN0YXRlXG4gICAgdGhpcy5fc3RvcmVcbiAgICAgIC5zZWxlY3RPbmNlKHN0YXRlID0+IGdldFZhbHVlKHN0YXRlLCB0aGlzLnBhdGgpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKFtcbiAgICAgICAgICBuZXcgVXBkYXRlRm9ybVZhbHVlKHtcbiAgICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBVcGRhdGVGb3JtU3RhdHVzKHtcbiAgICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgICAgIHN0YXR1czogdGhpcy5mb3JtLnN0YXR1c1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBVcGRhdGVGb3JtRGlydHkoe1xuICAgICAgICAgICAgcGF0aDogdGhpcy5wYXRoLFxuICAgICAgICAgICAgZGlydHk6IHRoaXMuZm9ybS5kaXJ0eVxuICAgICAgICAgIH0pXG4gICAgICAgIF0pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmdldFN0YXRlU3RyZWFtKGAke3RoaXMucGF0aH0uZGlzYWJsZWRgKS5zdWJzY3JpYmUoZGlzYWJsZWQgPT4ge1xuICAgICAgaWYgKHRoaXMuZm9ybS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQgfHwgdHlwZW9mIGRpc2FibGVkICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5mb3JtLmRpc2FibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9ybS5lbmFibGUoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9mb3JtR3JvdXBEaXJlY3RpdmVcbiAgICAgIC52YWx1ZUNoYW5nZXMhLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBKU09OLnN0cmluZ2lmeShhKSA9PT0gSlNPTi5zdHJpbmdpZnkoYikpLFxuICAgICAgICB0aGlzLmRlYm91bmNlQ2hhbmdlKClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1TdGF0ZVdpdGhSYXdWYWx1ZSgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9mb3JtR3JvdXBEaXJlY3RpdmVcbiAgICAgIC5zdGF0dXNDaGFuZ2VzIS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRoaXMuZGVib3VuY2VDaGFuZ2UoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXR1czogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIG5ldyBVcGRhdGVGb3JtU3RhdHVzKHtcbiAgICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICAgIHBhdGg6IHRoaXMucGF0aFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZUZvcm1TdGF0ZVdpdGhSYXdWYWx1ZSh3aXRoRm9ybVN0YXR1cz86IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5fdXBkYXRpbmcpIHJldHVybjtcblxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fZm9ybUdyb3VwRGlyZWN0aXZlLmNvbnRyb2wuZ2V0UmF3VmFsdWUoKTtcblxuICAgIGNvbnN0IGFjdGlvbnM6IGFueVtdID0gW1xuICAgICAgbmV3IFVwZGF0ZUZvcm1WYWx1ZSh7XG4gICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgdmFsdWVcbiAgICAgIH0pLFxuICAgICAgbmV3IFVwZGF0ZUZvcm1EaXJ0eSh7XG4gICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgZGlydHk6IHRoaXMuX2Zvcm1Hcm91cERpcmVjdGl2ZS5kaXJ0eVxuICAgICAgfSksXG4gICAgICBuZXcgVXBkYXRlRm9ybUVycm9ycyh7XG4gICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgZXJyb3JzOiB0aGlzLl9mb3JtR3JvdXBEaXJlY3RpdmUuZXJyb3JzXG4gICAgICB9KVxuICAgIF07XG5cbiAgICBpZiAod2l0aEZvcm1TdGF0dXMpIHtcbiAgICAgIGFjdGlvbnMucHVzaChcbiAgICAgICAgbmV3IFVwZGF0ZUZvcm1TdGF0dXMoe1xuICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgICBzdGF0dXM6IHRoaXMuX2Zvcm1Hcm91cERpcmVjdGl2ZS5zdGF0dXNcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRpbmcgPSB0cnVlO1xuICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKGFjdGlvbnMpLnN1YnNjcmliZSh7XG4gICAgICBlcnJvcjogKCkgPT4gKHRoaXMuX3VwZGF0aW5nID0gZmFsc2UpLFxuICAgICAgY29tcGxldGU6ICgpID0+ICh0aGlzLl91cGRhdGluZyA9IGZhbHNlKVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuXG4gICAgaWYgKHRoaXMuY2xlYXJEZXN0cm95KSB7XG4gICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgbmV3IFVwZGF0ZUZvcm0oe1xuICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICBkaXJ0eTogbnVsbCxcbiAgICAgICAgICBzdGF0dXM6IG51bGwsXG4gICAgICAgICAgZXJyb3JzOiBudWxsXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVib3VuY2VDaGFuZ2UoKSB7XG4gICAgY29uc3Qgc2tpcERlYm91bmNlVGltZSA9XG4gICAgICB0aGlzLl9mb3JtR3JvdXBEaXJlY3RpdmUuY29udHJvbC51cGRhdGVPbiAhPT0gJ2NoYW5nZScgfHwgdGhpcy5fZGVib3VuY2UgPCAwO1xuXG4gICAgcmV0dXJuIHNraXBEZWJvdW5jZVRpbWVcbiAgICAgID8gKGNoYW5nZTogT2JzZXJ2YWJsZTxhbnk+KSA9PiBjaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgOiAoY2hhbmdlOiBPYnNlcnZhYmxlPGFueT4pID0+XG4gICAgICAgICAgY2hhbmdlLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuX2RlYm91bmNlKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBmb3JtKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1Hcm91cERpcmVjdGl2ZS5mb3JtO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdGF0ZVN0cmVhbShwYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RvcmUuc2VsZWN0KHN0YXRlID0+IGdldFZhbHVlKHN0YXRlLCBwYXRoKSkucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKTtcbiAgfVxufVxuIl19
|
|
@@ -16,11 +16,11 @@ export class NgxsFormPluginModule {
|
|
|
16
16
|
]
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: NgxsFormPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
20
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type: NgxsFormPluginModule, imports: [NgxsFormDirective], exports: [NgxsFormDirective] }); }
|
|
21
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: NgxsFormPluginModule }); }
|
|
19
22
|
}
|
|
20
|
-
|
|
21
|
-
/** @nocollapse */ NgxsFormPluginModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.4", ngImport: i0, type: NgxsFormPluginModule, imports: [NgxsFormDirective], exports: [NgxsFormDirective] });
|
|
22
|
-
/** @nocollapse */ NgxsFormPluginModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgxsFormPluginModule });
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgxsFormPluginModule, decorators: [{
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: NgxsFormPluginModule, decorators: [{
|
|
24
24
|
type: NgModule,
|
|
25
25
|
args: [{
|
|
26
26
|
imports: [NgxsFormDirective],
|
|
@@ -30,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImpor
|
|
|
30
30
|
export function withNgxsFormPlugin() {
|
|
31
31
|
return makeEnvironmentProviders([withNgxsPlugin(NgxsFormPlugin)]);
|
|
32
32
|
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9mb3JtLXBsdWdpbi9zcmMvZm9ybS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFFBQVEsRUFHUix3QkFBd0IsRUFDekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBTWhELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPO1lBQ0wsUUFBUSxFQUFFLG9CQUFvQjtZQUM5QixTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFFLFlBQVk7b0JBQ3JCLFFBQVEsRUFBRSxjQUFjO29CQUN4QixLQUFLLEVBQUUsSUFBSTtpQkFDWjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7aUlBWlUsb0JBQW9CO2tJQUFwQixvQkFBb0IsWUFIckIsaUJBQWlCLGFBQ2pCLGlCQUFpQjtrSUFFaEIsb0JBQW9COzsyRkFBcEIsb0JBQW9CO2tCQUpoQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDO29CQUM1QixPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztpQkFDN0I7O0FBZ0JELE1BQU0sVUFBVSxrQkFBa0I7SUFDaEMsT0FBTyx3QkFBd0IsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIE5nTW9kdWxlLFxuICBNb2R1bGVXaXRoUHJvdmlkZXJzLFxuICBFbnZpcm9ubWVudFByb3ZpZGVycyxcbiAgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdYU19QTFVHSU5TLCB3aXRoTmd4c1BsdWdpbiB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcblxuaW1wb3J0IHsgTmd4c0Zvcm1QbHVnaW4gfSBmcm9tICcuL2Zvcm0ucGx1Z2luJztcbmltcG9ydCB7IE5neHNGb3JtRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbTmd4c0Zvcm1EaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbTmd4c0Zvcm1EaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIE5neHNGb3JtUGx1Z2luTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOZ3hzRm9ybVBsdWdpbk1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTmd4c0Zvcm1QbHVnaW5Nb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IE5HWFNfUExVR0lOUyxcbiAgICAgICAgICB1c2VDbGFzczogTmd4c0Zvcm1QbHVnaW4sXG4gICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhOZ3hzRm9ybVBsdWdpbigpOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW3dpdGhOZ3hzUGx1Z2luKE5neHNGb3JtUGx1Z2luKV0pO1xufVxuIl19
|
|
@@ -52,13 +52,13 @@ export class NgxsFormPlugin {
|
|
|
52
52
|
}
|
|
53
53
|
return path;
|
|
54
54
|
}
|
|
55
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: NgxsFormPlugin, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
56
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: NgxsFormPlugin }); }
|
|
55
57
|
}
|
|
56
|
-
|
|
57
|
-
/** @nocollapse */ NgxsFormPlugin.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgxsFormPlugin });
|
|
58
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgxsFormPlugin, decorators: [{
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: NgxsFormPlugin, decorators: [{
|
|
59
59
|
type: Injectable
|
|
60
60
|
}] });
|
|
61
61
|
function isObjectLike(target) {
|
|
62
62
|
return target !== null && typeof target === 'object';
|
|
63
63
|
}
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9mb3JtLXBsdWdpbi9zcmMvZm9ybS5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLFFBQVEsRUFHUixRQUFRLEVBQ1QsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLGNBQWMsRUFDZCxlQUFlLEVBQ2YsVUFBVSxFQUNWLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDaEIsTUFBTSxXQUFXLENBQUM7O0FBR25CLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyxLQUFVLEVBQUUsS0FBVSxFQUFFLElBQXNCO1FBQ25ELE1BQU0sSUFBSSxHQUFHLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlDLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztRQUV0QixJQUFJLElBQUksS0FBSyxlQUFlLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyxVQUFVLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFFO1lBQ3hGLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ2hDLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUN2QyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRTtnQkFDZixDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztvQkFDckIsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUU7b0JBQ2QsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUNWLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyx3QkFB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LENBQUM7QUFDdkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGdldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UsXG4gIGdldFZhbHVlLFxuICBOZ3hzTmV4dFBsdWdpbkZuLFxuICBOZ3hzUGx1Z2luLFxuICBzZXRWYWx1ZVxufSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQge1xuICBSZXNldEZvcm0sXG4gIFNldEZvcm1EaXJ0eSxcbiAgU2V0Rm9ybURpc2FibGVkLFxuICBTZXRGb3JtRW5hYmxlZCxcbiAgU2V0Rm9ybVByaXN0aW5lLFxuICBVcGRhdGVGb3JtLFxuICBVcGRhdGVGb3JtRGlydHksXG4gIFVwZGF0ZUZvcm1FcnJvcnMsXG4gIFVwZGF0ZUZvcm1TdGF0dXMsXG4gIFVwZGF0ZUZvcm1WYWx1ZVxufSBmcm9tICcuL2FjdGlvbnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmd4c0Zvcm1QbHVnaW4gaW1wbGVtZW50cyBOZ3hzUGx1Z2luIHtcbiAgaGFuZGxlKHN0YXRlOiBhbnksIGV2ZW50OiBhbnksIG5leHQ6IE5neHNOZXh0UGx1Z2luRm4pIHtcbiAgICBjb25zdCB0eXBlID0gZ2V0QWN0aW9uVHlwZUZyb21JbnN0YW5jZShldmVudCk7XG5cbiAgICBsZXQgbmV4dFN0YXRlID0gc3RhdGU7XG5cbiAgICBpZiAodHlwZSA9PT0gVXBkYXRlRm9ybVZhbHVlLnR5cGUgfHwgdHlwZSA9PT0gVXBkYXRlRm9ybS50eXBlIHx8IHR5cGUgPT09IFJlc2V0Rm9ybS50eXBlKSB7XG4gICAgICBjb25zdCB7IHZhbHVlIH0gPSBldmVudC5wYXlsb2FkO1xuICAgICAgY29uc3QgcGF5bG9hZFZhbHVlID0gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZS5zbGljZSgpXG4gICAgICAgIDogaXNPYmplY3RMaWtlKHZhbHVlKVxuICAgICAgICA/IHsgLi4udmFsdWUgfVxuICAgICAgICA6IHZhbHVlO1xuICAgICAgY29uc3QgcGF0aCA9IHRoaXMuam9pblBhdGhXaXRoUHJvcGVydHlQYXRoKGV2ZW50KTtcbiAgICAgIG5leHRTdGF0ZSA9IHNldFZhbHVlKG5leHRTdGF0ZSwgcGF0aCwgcGF5bG9hZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gUmVzZXRGb3JtLnR5cGUpIHtcbiAgICAgIGNvbnN0IG1vZGVsID0gZ2V0VmFsdWUobmV4dFN0YXRlLCBgJHtldmVudC5wYXlsb2FkLnBhdGh9Lm1vZGVsYCk7XG4gICAgICBuZXh0U3RhdGUgPSBzZXRWYWx1ZShuZXh0U3RhdGUsIGAke2V2ZW50LnBheWxvYWQucGF0aH1gLCB7IG1vZGVsOiBtb2RlbCB9KTtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gVXBkYXRlRm9ybVN0YXR1cy50eXBlIHx8IHR5cGUgPT09IFVwZGF0ZUZvcm0udHlwZSkge1xuICAgICAgbmV4dFN0YXRlID0gc2V0VmFsdWUobmV4dFN0YXRlLCBgJHtldmVudC5wYXlsb2FkLnBhdGh9LnN0YXR1c2AsIGV2ZW50LnBheWxvYWQuc3RhdHVzKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gVXBkYXRlRm9ybUVycm9ycy50eXBlIHx8IHR5cGUgPT09IFVwZGF0ZUZvcm0udHlwZSkge1xuICAgICAgbmV4dFN0YXRlID0gc2V0VmFsdWUobmV4dFN0YXRlLCBgJHtldmVudC5wYXlsb2FkLnBhdGh9LmVycm9yc2AsIHtcbiAgICAgICAgLi4uZXZlbnQucGF5bG9hZC5lcnJvcnNcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSBVcGRhdGVGb3JtRGlydHkudHlwZSB8fCB0eXBlID09PSBVcGRhdGVGb3JtLnR5cGUpIHtcbiAgICAgIG5leHRTdGF0ZSA9IHNldFZhbHVlKG5leHRTdGF0ZSwgYCR7ZXZlbnQucGF5bG9hZC5wYXRofS5kaXJ0eWAsIGV2ZW50LnBheWxvYWQuZGlydHkpO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSBTZXRGb3JtRGlydHkudHlwZSkge1xuICAgICAgbmV4dFN0YXRlID0gc2V0VmFsdWUobmV4dFN0YXRlLCBgJHtldmVudC5wYXlsb2FkfS5kaXJ0eWAsIHRydWUpO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSBTZXRGb3JtUHJpc3RpbmUudHlwZSkge1xuICAgICAgbmV4dFN0YXRlID0gc2V0VmFsdWUobmV4dFN0YXRlLCBgJHtldmVudC5wYXlsb2FkfS5kaXJ0eWAsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gU2V0Rm9ybURpc2FibGVkLnR5cGUpIHtcbiAgICAgIG5leHRTdGF0ZSA9IHNldFZhbHVlKG5leHRTdGF0ZSwgYCR7ZXZlbnQucGF5bG9hZH0uZGlzYWJsZWRgLCB0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gU2V0Rm9ybUVuYWJsZWQudHlwZSkge1xuICAgICAgbmV4dFN0YXRlID0gc2V0VmFsdWUobmV4dFN0YXRlLCBgJHtldmVudC5wYXlsb2FkfS5kaXNhYmxlZGAsIGZhbHNlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dChuZXh0U3RhdGUsIGV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgam9pblBhdGhXaXRoUHJvcGVydHlQYXRoKHsgcGF5bG9hZCB9OiBVcGRhdGVGb3JtVmFsdWUpOiBzdHJpbmcge1xuICAgIGxldCBwYXRoID0gYCR7cGF5bG9hZC5wYXRofS5tb2RlbGA7XG5cbiAgICBpZiAocGF5bG9hZC5wcm9wZXJ0eVBhdGgpIHtcbiAgICAgIHBhdGggKz0gYC4ke3BheWxvYWQucHJvcGVydHlQYXRofWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhdGg7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHRhcmdldDogdW5rbm93bik6IHRhcmdldCBpcyBvYmplY3Qge1xuICByZXR1cm4gdGFyZ2V0ICE9PSBudWxsICYmIHR5cGVvZiB0YXJnZXQgPT09ICdvYmplY3QnO1xufVxuIl19
|
|
@@ -7,65 +7,65 @@ import { ReplaySubject } from 'rxjs';
|
|
|
7
7
|
import { filter, takeUntil, distinctUntilChanged, debounceTime } from 'rxjs/operators';
|
|
8
8
|
|
|
9
9
|
class UpdateFormStatus {
|
|
10
|
+
static { this.type = '[Forms] Update Form Status'; }
|
|
10
11
|
constructor(payload) {
|
|
11
12
|
this.payload = payload;
|
|
12
13
|
}
|
|
13
14
|
}
|
|
14
|
-
UpdateFormStatus.type = '[Forms] Update Form Status';
|
|
15
15
|
class UpdateFormValue {
|
|
16
|
+
static { this.type = '[Forms] Update Form Value'; }
|
|
16
17
|
constructor(payload) {
|
|
17
18
|
this.payload = payload;
|
|
18
19
|
}
|
|
19
20
|
}
|
|
20
|
-
UpdateFormValue.type = '[Forms] Update Form Value';
|
|
21
21
|
class UpdateForm {
|
|
22
|
+
static { this.type = '[Forms] Update Form'; }
|
|
22
23
|
constructor(payload) {
|
|
23
24
|
this.payload = payload;
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
|
-
UpdateForm.type = '[Forms] Update Form';
|
|
27
27
|
class UpdateFormDirty {
|
|
28
|
+
static { this.type = '[Forms] Update Form Dirty'; }
|
|
28
29
|
constructor(payload) {
|
|
29
30
|
this.payload = payload;
|
|
30
31
|
}
|
|
31
32
|
}
|
|
32
|
-
UpdateFormDirty.type = '[Forms] Update Form Dirty';
|
|
33
33
|
class SetFormDirty {
|
|
34
|
+
static { this.type = '[Forms] Set Form Dirty'; }
|
|
34
35
|
constructor(payload) {
|
|
35
36
|
this.payload = payload;
|
|
36
37
|
}
|
|
37
38
|
}
|
|
38
|
-
SetFormDirty.type = '[Forms] Set Form Dirty';
|
|
39
39
|
class SetFormPristine {
|
|
40
|
+
static { this.type = '[Forms] Set Form Pristine'; }
|
|
40
41
|
constructor(payload) {
|
|
41
42
|
this.payload = payload;
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
|
-
SetFormPristine.type = '[Forms] Set Form Pristine';
|
|
45
45
|
class UpdateFormErrors {
|
|
46
|
+
static { this.type = '[Forms] Update Form Errors'; }
|
|
46
47
|
constructor(payload) {
|
|
47
48
|
this.payload = payload;
|
|
48
49
|
}
|
|
49
50
|
}
|
|
50
|
-
UpdateFormErrors.type = '[Forms] Update Form Errors';
|
|
51
51
|
class SetFormDisabled {
|
|
52
|
+
static { this.type = '[Forms] Set Form Disabled'; }
|
|
52
53
|
constructor(payload) {
|
|
53
54
|
this.payload = payload;
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
|
-
SetFormDisabled.type = '[Forms] Set Form Disabled';
|
|
57
57
|
class SetFormEnabled {
|
|
58
|
+
static { this.type = '[Forms] Set Form Enabled'; }
|
|
58
59
|
constructor(payload) {
|
|
59
60
|
this.payload = payload;
|
|
60
61
|
}
|
|
61
62
|
}
|
|
62
|
-
SetFormEnabled.type = '[Forms] Set Form Enabled';
|
|
63
63
|
class ResetForm {
|
|
64
|
+
static { this.type = '[Forms] Reset Form'; }
|
|
64
65
|
constructor(payload) {
|
|
65
66
|
this.payload = payload;
|
|
66
67
|
}
|
|
67
68
|
}
|
|
68
|
-
ResetForm.type = '[Forms] Reset Form';
|
|
69
69
|
|
|
70
70
|
class NgxsFormPlugin {
|
|
71
71
|
handle(state, event, next) {
|
|
@@ -117,10 +117,10 @@ class NgxsFormPlugin {
|
|
|
117
117
|
}
|
|
118
118
|
return path;
|
|
119
119
|
}
|
|
120
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: NgxsFormPlugin, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
121
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: NgxsFormPlugin }); }
|
|
120
122
|
}
|
|
121
|
-
|
|
122
|
-
/** @nocollapse */ NgxsFormPlugin.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgxsFormPlugin });
|
|
123
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgxsFormPlugin, decorators: [{
|
|
123
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: NgxsFormPlugin, decorators: [{
|
|
124
124
|
type: Injectable
|
|
125
125
|
}] });
|
|
126
126
|
function isObjectLike(target) {
|
|
@@ -128,17 +128,6 @@ function isObjectLike(target) {
|
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
class NgxsFormDirective {
|
|
131
|
-
constructor(_actions$, _store, _formGroupDirective, _cd) {
|
|
132
|
-
this._actions$ = _actions$;
|
|
133
|
-
this._store = _store;
|
|
134
|
-
this._formGroupDirective = _formGroupDirective;
|
|
135
|
-
this._cd = _cd;
|
|
136
|
-
this.path = null;
|
|
137
|
-
this._debounce = 100;
|
|
138
|
-
this._clearDestroy = false;
|
|
139
|
-
this._updating = false;
|
|
140
|
-
this._destroy$ = new ReplaySubject(1);
|
|
141
|
-
}
|
|
142
131
|
set debounce(debounce) {
|
|
143
132
|
this._debounce = Number(debounce);
|
|
144
133
|
}
|
|
@@ -151,6 +140,17 @@ class NgxsFormDirective {
|
|
|
151
140
|
get clearDestroy() {
|
|
152
141
|
return this._clearDestroy;
|
|
153
142
|
}
|
|
143
|
+
constructor(_actions$, _store, _formGroupDirective, _cd) {
|
|
144
|
+
this._actions$ = _actions$;
|
|
145
|
+
this._store = _store;
|
|
146
|
+
this._formGroupDirective = _formGroupDirective;
|
|
147
|
+
this._cd = _cd;
|
|
148
|
+
this.path = null;
|
|
149
|
+
this._debounce = 100;
|
|
150
|
+
this._clearDestroy = false;
|
|
151
|
+
this._updating = false;
|
|
152
|
+
this._destroy$ = new ReplaySubject(1);
|
|
153
|
+
}
|
|
154
154
|
ngOnInit() {
|
|
155
155
|
this._actions$
|
|
156
156
|
.pipe(ofActionDispatched(ResetForm), filter((action) => action.payload.path === this.path), takeUntil(this._destroy$))
|
|
@@ -277,13 +277,13 @@ class NgxsFormDirective {
|
|
|
277
277
|
getStateStream(path) {
|
|
278
278
|
return this._store.select(state => getValue(state, path)).pipe(takeUntil(this._destroy$));
|
|
279
279
|
}
|
|
280
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: NgxsFormDirective, deps: [{ token: i1.Actions }, { token: i1.Store }, { token: i2.FormGroupDirective }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
281
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.5", type: NgxsFormDirective, isStandalone: true, selector: "[ngxsForm]", inputs: { path: ["ngxsForm", "path"], debounce: ["ngxsFormDebounce", "debounce"], clearDestroy: ["ngxsFormClearOnDestroy", "clearDestroy"] }, ngImport: i0 }); }
|
|
280
282
|
}
|
|
281
|
-
|
|
282
|
-
/** @nocollapse */ NgxsFormDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.4", type: NgxsFormDirective, isStandalone: true, selector: "[ngxsForm]", inputs: { path: ["ngxsForm", "path"], debounce: ["ngxsFormDebounce", "debounce"], clearDestroy: ["ngxsFormClearOnDestroy", "clearDestroy"] }, ngImport: i0 });
|
|
283
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgxsFormDirective, decorators: [{
|
|
283
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: NgxsFormDirective, decorators: [{
|
|
284
284
|
type: Directive,
|
|
285
285
|
args: [{ selector: '[ngxsForm]', standalone: true }]
|
|
286
|
-
}], ctorParameters:
|
|
286
|
+
}], ctorParameters: () => [{ type: i1.Actions }, { type: i1.Store }, { type: i2.FormGroupDirective }, { type: i0.ChangeDetectorRef }], propDecorators: { path: [{
|
|
287
287
|
type: Input,
|
|
288
288
|
args: ['ngxsForm']
|
|
289
289
|
}], debounce: [{
|
|
@@ -307,11 +307,11 @@ class NgxsFormPluginModule {
|
|
|
307
307
|
]
|
|
308
308
|
};
|
|
309
309
|
}
|
|
310
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: NgxsFormPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
311
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type: NgxsFormPluginModule, imports: [NgxsFormDirective], exports: [NgxsFormDirective] }); }
|
|
312
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: NgxsFormPluginModule }); }
|
|
310
313
|
}
|
|
311
|
-
|
|
312
|
-
/** @nocollapse */ NgxsFormPluginModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.4", ngImport: i0, type: NgxsFormPluginModule, imports: [NgxsFormDirective], exports: [NgxsFormDirective] });
|
|
313
|
-
/** @nocollapse */ NgxsFormPluginModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgxsFormPluginModule });
|
|
314
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: NgxsFormPluginModule, decorators: [{
|
|
314
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: NgxsFormPluginModule, decorators: [{
|
|
315
315
|
type: NgModule,
|
|
316
316
|
args: [{
|
|
317
317
|
imports: [NgxsFormDirective],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngxs-form-plugin.mjs","sources":["../../../packages/form-plugin/src/actions.ts","../../../packages/form-plugin/src/form.plugin.ts","../../../packages/form-plugin/src/directive.ts","../../../packages/form-plugin/src/form.module.ts","../../../packages/form-plugin/index.ts","../../../packages/form-plugin/ngxs-form-plugin.ts"],"sourcesContent":["export class UpdateFormStatus {\n static readonly type = '[Forms] Update Form Status';\n\n constructor(\n public payload: {\n status: string | null;\n path: string;\n }\n ) {}\n}\n\nexport class UpdateFormValue {\n static readonly type = '[Forms] Update Form Value';\n\n constructor(public payload: { value: any; path: string; propertyPath?: string }) {}\n}\n\nexport class UpdateForm {\n static readonly type = '[Forms] Update Form';\n\n constructor(\n public payload: {\n value: any;\n errors: { [k: string]: string } | null;\n dirty: boolean | null;\n status: string | null;\n path: string;\n }\n ) {}\n}\n\nexport class UpdateFormDirty {\n static readonly type = '[Forms] Update Form Dirty';\n\n constructor(public payload: { dirty: boolean | null; path: string }) {}\n}\n\nexport class SetFormDirty {\n static readonly type = '[Forms] Set Form Dirty';\n\n constructor(public payload: string) {}\n}\n\nexport class SetFormPristine {\n static readonly type = '[Forms] Set Form Pristine';\n\n constructor(public payload: string) {}\n}\n\nexport class UpdateFormErrors {\n static readonly type = '[Forms] Update Form Errors';\n\n constructor(public payload: { errors: { [k: string]: string } | null; path: string }) {}\n}\n\nexport class SetFormDisabled {\n static readonly type = '[Forms] Set Form Disabled';\n\n constructor(public payload: string) {}\n}\n\nexport class SetFormEnabled {\n static readonly type = '[Forms] Set Form Enabled';\n\n constructor(public payload: string) {}\n}\n\nexport class ResetForm {\n static readonly type = '[Forms] Reset Form';\n\n constructor(public payload: { path: string; value?: any }) {}\n}\n","import { Injectable } from '@angular/core';\nimport {\n getActionTypeFromInstance,\n getValue,\n NgxsNextPluginFn,\n NgxsPlugin,\n setValue\n} from '@ngxs/store';\nimport {\n ResetForm,\n SetFormDirty,\n SetFormDisabled,\n SetFormEnabled,\n SetFormPristine,\n UpdateForm,\n UpdateFormDirty,\n UpdateFormErrors,\n UpdateFormStatus,\n UpdateFormValue\n} from './actions';\n\n@Injectable()\nexport class NgxsFormPlugin implements NgxsPlugin {\n handle(state: any, event: any, next: NgxsNextPluginFn) {\n const type = getActionTypeFromInstance(event);\n\n let nextState = state;\n\n if (type === UpdateFormValue.type || type === UpdateForm.type || type === ResetForm.type) {\n const { value } = event.payload;\n const payloadValue = Array.isArray(value)\n ? value.slice()\n : isObjectLike(value)\n ? { ...value }\n : value;\n const path = this.joinPathWithPropertyPath(event);\n nextState = setValue(nextState, path, payloadValue);\n }\n\n if (type === ResetForm.type) {\n const model = getValue(nextState, `${event.payload.path}.model`);\n nextState = setValue(nextState, `${event.payload.path}`, { model: model });\n }\n\n if (type === UpdateFormStatus.type || type === UpdateForm.type) {\n nextState = setValue(nextState, `${event.payload.path}.status`, event.payload.status);\n }\n\n if (type === UpdateFormErrors.type || type === UpdateForm.type) {\n nextState = setValue(nextState, `${event.payload.path}.errors`, {\n ...event.payload.errors\n });\n }\n\n if (type === UpdateFormDirty.type || type === UpdateForm.type) {\n nextState = setValue(nextState, `${event.payload.path}.dirty`, event.payload.dirty);\n }\n\n if (type === SetFormDirty.type) {\n nextState = setValue(nextState, `${event.payload}.dirty`, true);\n }\n\n if (type === SetFormPristine.type) {\n nextState = setValue(nextState, `${event.payload}.dirty`, false);\n }\n\n if (type === SetFormDisabled.type) {\n nextState = setValue(nextState, `${event.payload}.disabled`, true);\n }\n\n if (type === SetFormEnabled.type) {\n nextState = setValue(nextState, `${event.payload}.disabled`, false);\n }\n\n return next(nextState, event);\n }\n\n private joinPathWithPropertyPath({ payload }: UpdateFormValue): string {\n let path = `${payload.path}.model`;\n\n if (payload.propertyPath) {\n path += `.${payload.propertyPath}`;\n }\n\n return path;\n }\n}\n\nfunction isObjectLike(target: unknown): target is object {\n return target !== null && typeof target === 'object';\n}\n","import { ChangeDetectorRef, Directive, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FormGroup, FormGroupDirective } from '@angular/forms';\nimport { Actions, getValue, ofActionDispatched, Store } from '@ngxs/store';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\nimport {\n ResetForm,\n UpdateForm,\n UpdateFormDirty,\n UpdateFormErrors,\n UpdateFormStatus,\n UpdateFormValue\n} from './actions';\n\n@Directive({ selector: '[ngxsForm]', standalone: true })\nexport class NgxsFormDirective implements OnInit, OnDestroy {\n @Input('ngxsForm')\n path: string = null!;\n\n @Input('ngxsFormDebounce')\n set debounce(debounce: string | number) {\n this._debounce = Number(debounce);\n }\n get debounce() {\n return this._debounce;\n }\n private _debounce = 100;\n\n @Input('ngxsFormClearOnDestroy')\n set clearDestroy(val: boolean) {\n this._clearDestroy = val != null && `${val}` !== 'false';\n }\n get clearDestroy(): boolean {\n return this._clearDestroy;\n }\n private _clearDestroy = false;\n\n private _updating = false;\n\n private readonly _destroy$ = new ReplaySubject<void>(1);\n\n constructor(\n private _actions$: Actions,\n private _store: Store,\n private _formGroupDirective: FormGroupDirective,\n private _cd: ChangeDetectorRef\n ) {}\n\n ngOnInit() {\n this._actions$\n .pipe(\n ofActionDispatched(ResetForm),\n filter((action: ResetForm) => action.payload.path === this.path),\n takeUntil(this._destroy$)\n )\n .subscribe(({ payload: { value } }: ResetForm) => {\n this.form.reset(value);\n this.updateFormStateWithRawValue(true);\n this._cd.markForCheck();\n });\n\n this.getStateStream(`${this.path}.model`).subscribe(model => {\n if (this._updating || !model) {\n return;\n }\n\n this.form.patchValue(model);\n this._cd.markForCheck();\n });\n\n this.getStateStream(`${this.path}.dirty`).subscribe(dirty => {\n if (this.form.dirty === dirty || typeof dirty !== 'boolean') {\n return;\n }\n\n if (dirty) {\n this.form.markAsDirty();\n } else {\n this.form.markAsPristine();\n }\n\n this._cd.markForCheck();\n });\n\n // On first state change, sync form model, status and dirty with state\n this._store\n .selectOnce(state => getValue(state, this.path))\n .subscribe(() => {\n this._store.dispatch([\n new UpdateFormValue({\n path: this.path,\n value: this.form.getRawValue()\n }),\n new UpdateFormStatus({\n path: this.path,\n status: this.form.status\n }),\n new UpdateFormDirty({\n path: this.path,\n dirty: this.form.dirty\n })\n ]);\n });\n\n this.getStateStream(`${this.path}.disabled`).subscribe(disabled => {\n if (this.form.disabled === disabled || typeof disabled !== 'boolean') {\n return;\n }\n\n if (disabled) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n\n this._cd.markForCheck();\n });\n\n this._formGroupDirective\n .valueChanges!.pipe(\n distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n this.debounceChange()\n )\n .subscribe(() => {\n this.updateFormStateWithRawValue();\n });\n\n this._formGroupDirective\n .statusChanges!.pipe(distinctUntilChanged(), this.debounceChange())\n .subscribe((status: string) => {\n this._store.dispatch(\n new UpdateFormStatus({\n status,\n path: this.path\n })\n );\n });\n }\n\n updateFormStateWithRawValue(withFormStatus?: boolean) {\n if (this._updating) return;\n\n const value = this._formGroupDirective.control.getRawValue();\n\n const actions: any[] = [\n new UpdateFormValue({\n path: this.path,\n value\n }),\n new UpdateFormDirty({\n path: this.path,\n dirty: this._formGroupDirective.dirty\n }),\n new UpdateFormErrors({\n path: this.path,\n errors: this._formGroupDirective.errors\n })\n ];\n\n if (withFormStatus) {\n actions.push(\n new UpdateFormStatus({\n path: this.path,\n status: this._formGroupDirective.status\n })\n );\n }\n\n this._updating = true;\n this._store.dispatch(actions).subscribe({\n error: () => (this._updating = false),\n complete: () => (this._updating = false)\n });\n }\n\n ngOnDestroy() {\n this._destroy$.next();\n\n if (this.clearDestroy) {\n this._store.dispatch(\n new UpdateForm({\n path: this.path,\n value: null,\n dirty: null,\n status: null,\n errors: null\n })\n );\n }\n }\n\n private debounceChange() {\n const skipDebounceTime =\n this._formGroupDirective.control.updateOn !== 'change' || this._debounce < 0;\n\n return skipDebounceTime\n ? (change: Observable<any>) => change.pipe(takeUntil(this._destroy$))\n : (change: Observable<any>) =>\n change.pipe(debounceTime(this._debounce), takeUntil(this._destroy$));\n }\n\n private get form(): FormGroup {\n return this._formGroupDirective.form;\n }\n\n private getStateStream(path: string) {\n return this._store.select(state => getValue(state, path)).pipe(takeUntil(this._destroy$));\n }\n}\n","import {\n NgModule,\n ModuleWithProviders,\n EnvironmentProviders,\n makeEnvironmentProviders\n} from '@angular/core';\nimport { NGXS_PLUGINS, withNgxsPlugin } from '@ngxs/store';\n\nimport { NgxsFormPlugin } from './form.plugin';\nimport { NgxsFormDirective } from './directive';\n\n@NgModule({\n imports: [NgxsFormDirective],\n exports: [NgxsFormDirective]\n})\nexport class NgxsFormPluginModule {\n static forRoot(): ModuleWithProviders<NgxsFormPluginModule> {\n return {\n ngModule: NgxsFormPluginModule,\n providers: [\n {\n provide: NGXS_PLUGINS,\n useClass: NgxsFormPlugin,\n multi: true\n }\n ]\n };\n }\n}\n\nexport function withNgxsFormPlugin(): EnvironmentProviders {\n return makeEnvironmentProviders([withNgxsPlugin(NgxsFormPlugin)]);\n}\n","/**\n * The public api for consumers of @ngxs/form-plugin\n */\nexport * from './src/public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngxs-form-plugin.mjs","sources":["../../../packages/form-plugin/src/actions.ts","../../../packages/form-plugin/src/form.plugin.ts","../../../packages/form-plugin/src/directive.ts","../../../packages/form-plugin/src/form.module.ts","../../../packages/form-plugin/index.ts","../../../packages/form-plugin/ngxs-form-plugin.ts"],"sourcesContent":["export class UpdateFormStatus {\n static readonly type = '[Forms] Update Form Status';\n\n constructor(\n public payload: {\n status: string | null;\n path: string;\n }\n ) {}\n}\n\nexport class UpdateFormValue {\n static readonly type = '[Forms] Update Form Value';\n\n constructor(public payload: { value: any; path: string; propertyPath?: string }) {}\n}\n\nexport class UpdateForm {\n static readonly type = '[Forms] Update Form';\n\n constructor(\n public payload: {\n value: any;\n errors: { [k: string]: string } | null;\n dirty: boolean | null;\n status: string | null;\n path: string;\n }\n ) {}\n}\n\nexport class UpdateFormDirty {\n static readonly type = '[Forms] Update Form Dirty';\n\n constructor(public payload: { dirty: boolean | null; path: string }) {}\n}\n\nexport class SetFormDirty {\n static readonly type = '[Forms] Set Form Dirty';\n\n constructor(public payload: string) {}\n}\n\nexport class SetFormPristine {\n static readonly type = '[Forms] Set Form Pristine';\n\n constructor(public payload: string) {}\n}\n\nexport class UpdateFormErrors {\n static readonly type = '[Forms] Update Form Errors';\n\n constructor(public payload: { errors: { [k: string]: string } | null; path: string }) {}\n}\n\nexport class SetFormDisabled {\n static readonly type = '[Forms] Set Form Disabled';\n\n constructor(public payload: string) {}\n}\n\nexport class SetFormEnabled {\n static readonly type = '[Forms] Set Form Enabled';\n\n constructor(public payload: string) {}\n}\n\nexport class ResetForm {\n static readonly type = '[Forms] Reset Form';\n\n constructor(public payload: { path: string; value?: any }) {}\n}\n","import { Injectable } from '@angular/core';\nimport {\n getActionTypeFromInstance,\n getValue,\n NgxsNextPluginFn,\n NgxsPlugin,\n setValue\n} from '@ngxs/store';\nimport {\n ResetForm,\n SetFormDirty,\n SetFormDisabled,\n SetFormEnabled,\n SetFormPristine,\n UpdateForm,\n UpdateFormDirty,\n UpdateFormErrors,\n UpdateFormStatus,\n UpdateFormValue\n} from './actions';\n\n@Injectable()\nexport class NgxsFormPlugin implements NgxsPlugin {\n handle(state: any, event: any, next: NgxsNextPluginFn) {\n const type = getActionTypeFromInstance(event);\n\n let nextState = state;\n\n if (type === UpdateFormValue.type || type === UpdateForm.type || type === ResetForm.type) {\n const { value } = event.payload;\n const payloadValue = Array.isArray(value)\n ? value.slice()\n : isObjectLike(value)\n ? { ...value }\n : value;\n const path = this.joinPathWithPropertyPath(event);\n nextState = setValue(nextState, path, payloadValue);\n }\n\n if (type === ResetForm.type) {\n const model = getValue(nextState, `${event.payload.path}.model`);\n nextState = setValue(nextState, `${event.payload.path}`, { model: model });\n }\n\n if (type === UpdateFormStatus.type || type === UpdateForm.type) {\n nextState = setValue(nextState, `${event.payload.path}.status`, event.payload.status);\n }\n\n if (type === UpdateFormErrors.type || type === UpdateForm.type) {\n nextState = setValue(nextState, `${event.payload.path}.errors`, {\n ...event.payload.errors\n });\n }\n\n if (type === UpdateFormDirty.type || type === UpdateForm.type) {\n nextState = setValue(nextState, `${event.payload.path}.dirty`, event.payload.dirty);\n }\n\n if (type === SetFormDirty.type) {\n nextState = setValue(nextState, `${event.payload}.dirty`, true);\n }\n\n if (type === SetFormPristine.type) {\n nextState = setValue(nextState, `${event.payload}.dirty`, false);\n }\n\n if (type === SetFormDisabled.type) {\n nextState = setValue(nextState, `${event.payload}.disabled`, true);\n }\n\n if (type === SetFormEnabled.type) {\n nextState = setValue(nextState, `${event.payload}.disabled`, false);\n }\n\n return next(nextState, event);\n }\n\n private joinPathWithPropertyPath({ payload }: UpdateFormValue): string {\n let path = `${payload.path}.model`;\n\n if (payload.propertyPath) {\n path += `.${payload.propertyPath}`;\n }\n\n return path;\n }\n}\n\nfunction isObjectLike(target: unknown): target is object {\n return target !== null && typeof target === 'object';\n}\n","import { ChangeDetectorRef, Directive, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FormGroup, FormGroupDirective } from '@angular/forms';\nimport { Actions, getValue, ofActionDispatched, Store } from '@ngxs/store';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\nimport {\n ResetForm,\n UpdateForm,\n UpdateFormDirty,\n UpdateFormErrors,\n UpdateFormStatus,\n UpdateFormValue\n} from './actions';\n\n@Directive({ selector: '[ngxsForm]', standalone: true })\nexport class NgxsFormDirective implements OnInit, OnDestroy {\n @Input('ngxsForm')\n path: string = null!;\n\n @Input('ngxsFormDebounce')\n set debounce(debounce: string | number) {\n this._debounce = Number(debounce);\n }\n get debounce() {\n return this._debounce;\n }\n private _debounce = 100;\n\n @Input('ngxsFormClearOnDestroy')\n set clearDestroy(val: boolean) {\n this._clearDestroy = val != null && `${val}` !== 'false';\n }\n get clearDestroy(): boolean {\n return this._clearDestroy;\n }\n private _clearDestroy = false;\n\n private _updating = false;\n\n private readonly _destroy$ = new ReplaySubject<void>(1);\n\n constructor(\n private _actions$: Actions,\n private _store: Store,\n private _formGroupDirective: FormGroupDirective,\n private _cd: ChangeDetectorRef\n ) {}\n\n ngOnInit() {\n this._actions$\n .pipe(\n ofActionDispatched(ResetForm),\n filter((action: ResetForm) => action.payload.path === this.path),\n takeUntil(this._destroy$)\n )\n .subscribe(({ payload: { value } }: ResetForm) => {\n this.form.reset(value);\n this.updateFormStateWithRawValue(true);\n this._cd.markForCheck();\n });\n\n this.getStateStream(`${this.path}.model`).subscribe(model => {\n if (this._updating || !model) {\n return;\n }\n\n this.form.patchValue(model);\n this._cd.markForCheck();\n });\n\n this.getStateStream(`${this.path}.dirty`).subscribe(dirty => {\n if (this.form.dirty === dirty || typeof dirty !== 'boolean') {\n return;\n }\n\n if (dirty) {\n this.form.markAsDirty();\n } else {\n this.form.markAsPristine();\n }\n\n this._cd.markForCheck();\n });\n\n // On first state change, sync form model, status and dirty with state\n this._store\n .selectOnce(state => getValue(state, this.path))\n .subscribe(() => {\n this._store.dispatch([\n new UpdateFormValue({\n path: this.path,\n value: this.form.getRawValue()\n }),\n new UpdateFormStatus({\n path: this.path,\n status: this.form.status\n }),\n new UpdateFormDirty({\n path: this.path,\n dirty: this.form.dirty\n })\n ]);\n });\n\n this.getStateStream(`${this.path}.disabled`).subscribe(disabled => {\n if (this.form.disabled === disabled || typeof disabled !== 'boolean') {\n return;\n }\n\n if (disabled) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n\n this._cd.markForCheck();\n });\n\n this._formGroupDirective\n .valueChanges!.pipe(\n distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n this.debounceChange()\n )\n .subscribe(() => {\n this.updateFormStateWithRawValue();\n });\n\n this._formGroupDirective\n .statusChanges!.pipe(distinctUntilChanged(), this.debounceChange())\n .subscribe((status: string) => {\n this._store.dispatch(\n new UpdateFormStatus({\n status,\n path: this.path\n })\n );\n });\n }\n\n updateFormStateWithRawValue(withFormStatus?: boolean) {\n if (this._updating) return;\n\n const value = this._formGroupDirective.control.getRawValue();\n\n const actions: any[] = [\n new UpdateFormValue({\n path: this.path,\n value\n }),\n new UpdateFormDirty({\n path: this.path,\n dirty: this._formGroupDirective.dirty\n }),\n new UpdateFormErrors({\n path: this.path,\n errors: this._formGroupDirective.errors\n })\n ];\n\n if (withFormStatus) {\n actions.push(\n new UpdateFormStatus({\n path: this.path,\n status: this._formGroupDirective.status\n })\n );\n }\n\n this._updating = true;\n this._store.dispatch(actions).subscribe({\n error: () => (this._updating = false),\n complete: () => (this._updating = false)\n });\n }\n\n ngOnDestroy() {\n this._destroy$.next();\n\n if (this.clearDestroy) {\n this._store.dispatch(\n new UpdateForm({\n path: this.path,\n value: null,\n dirty: null,\n status: null,\n errors: null\n })\n );\n }\n }\n\n private debounceChange() {\n const skipDebounceTime =\n this._formGroupDirective.control.updateOn !== 'change' || this._debounce < 0;\n\n return skipDebounceTime\n ? (change: Observable<any>) => change.pipe(takeUntil(this._destroy$))\n : (change: Observable<any>) =>\n change.pipe(debounceTime(this._debounce), takeUntil(this._destroy$));\n }\n\n private get form(): FormGroup {\n return this._formGroupDirective.form;\n }\n\n private getStateStream(path: string) {\n return this._store.select(state => getValue(state, path)).pipe(takeUntil(this._destroy$));\n }\n}\n","import {\n NgModule,\n ModuleWithProviders,\n EnvironmentProviders,\n makeEnvironmentProviders\n} from '@angular/core';\nimport { NGXS_PLUGINS, withNgxsPlugin } from '@ngxs/store';\n\nimport { NgxsFormPlugin } from './form.plugin';\nimport { NgxsFormDirective } from './directive';\n\n@NgModule({\n imports: [NgxsFormDirective],\n exports: [NgxsFormDirective]\n})\nexport class NgxsFormPluginModule {\n static forRoot(): ModuleWithProviders<NgxsFormPluginModule> {\n return {\n ngModule: NgxsFormPluginModule,\n providers: [\n {\n provide: NGXS_PLUGINS,\n useClass: NgxsFormPlugin,\n multi: true\n }\n ]\n };\n }\n}\n\nexport function withNgxsFormPlugin(): EnvironmentProviders {\n return makeEnvironmentProviders([withNgxsPlugin(NgxsFormPlugin)]);\n}\n","/**\n * The public api for consumers of @ngxs/form-plugin\n */\nexport * from './src/public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|