ngrx-forms
Version:
Proper integration of forms in Angular 4 applications using ngrx
23 lines • 3.51 kB
JavaScript
import { formArrayReducer } from '../array/reducer';
import { formControlReducer } from '../control/reducer';
import { formGroupReducer } from '../group/reducer';
import { isArrayState, isGroupState } from '../state';
export function abstractControlReducer(state, action) {
if (isArrayState(state)) {
return formArrayReducer(state, action);
}
if (isGroupState(state)) {
return formGroupReducer(state, action);
}
return formControlReducer(state, action);
}
export function compose(...fns) {
return (t) => fns.reduce((res, f) => f(res), t);
}
export function ensureState(state) {
if (!state) {
throw new Error('state must not be undefined!');
}
return state;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91cGRhdGUtZnVuY3Rpb24vdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQXdCLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFLNUUsTUFBTSxVQUFVLHNCQUFzQixDQUFTLEtBQW1DLEVBQUUsTUFBYztJQUNoRyxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN2QixPQUFPLGdCQUFnQixDQUFDLEtBQUssRUFBRSxNQUFhLENBQVEsQ0FBQztLQUN0RDtJQUVELElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3ZCLE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3hDO0lBRUQsT0FBTyxrQkFBa0IsQ0FBQyxLQUFZLEVBQUUsTUFBTSxDQUFRLENBQUM7QUFDekQsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQUksR0FBRyxHQUFvQjtJQUNoRCxPQUFPLENBQUMsQ0FBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFTLEtBQXlCO0lBQzNELElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7S0FDakQ7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcblxyXG5pbXBvcnQgeyBmb3JtQXJyYXlSZWR1Y2VyIH0gZnJvbSAnLi4vYXJyYXkvcmVkdWNlcic7XHJcbmltcG9ydCB7IGZvcm1Db250cm9sUmVkdWNlciB9IGZyb20gJy4uL2NvbnRyb2wvcmVkdWNlcic7XHJcbmltcG9ydCB7IGZvcm1Hcm91cFJlZHVjZXIgfSBmcm9tICcuLi9ncm91cC9yZWR1Y2VyJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sU3RhdGUsIGlzQXJyYXlTdGF0ZSwgaXNHcm91cFN0YXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xyXG5cclxuZXhwb3J0IHR5cGUgUHJvamVjdEZuPFQ+ID0gKHQ6IFQpID0+IFQ7XHJcbmV4cG9ydCB0eXBlIFByb2plY3RGbjI8VCwgSz4gPSAodDogVCwgazogSykgPT4gVDtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhYnN0cmFjdENvbnRyb2xSZWR1Y2VyPFRWYWx1ZT4oc3RhdGU6IEFic3RyYWN0Q29udHJvbFN0YXRlPFRWYWx1ZT4sIGFjdGlvbjogQWN0aW9uKTogQWJzdHJhY3RDb250cm9sU3RhdGU8VFZhbHVlPiB7XHJcbiAgaWYgKGlzQXJyYXlTdGF0ZShzdGF0ZSkpIHtcclxuICAgIHJldHVybiBmb3JtQXJyYXlSZWR1Y2VyKHN0YXRlLCBhY3Rpb24gYXMgYW55KSBhcyBhbnk7XHJcbiAgfVxyXG5cclxuICBpZiAoaXNHcm91cFN0YXRlKHN0YXRlKSkge1xyXG4gICAgcmV0dXJuIGZvcm1Hcm91cFJlZHVjZXIoc3RhdGUsIGFjdGlvbik7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZm9ybUNvbnRyb2xSZWR1Y2VyKHN0YXRlIGFzIGFueSwgYWN0aW9uKSBhcyBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NlPFQ+KC4uLmZuczogKCh0OiBUKSA9PiBUKVtdKSB7XHJcbiAgcmV0dXJuICh0OiBUKSA9PiBmbnMucmVkdWNlKChyZXMsIGYpID0+IGYocmVzKSwgdCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVTdGF0ZTxUU3RhdGU+KHN0YXRlOiBUU3RhdGUgfCB1bmRlZmluZWQpOiBUU3RhdGUge1xyXG4gIGlmICghc3RhdGUpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcignc3RhdGUgbXVzdCBub3QgYmUgdW5kZWZpbmVkIScpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHN0YXRlO1xyXG59XHJcbiJdfQ==