UNPKG

ngrx-forms

Version:

Proper integration of forms in Angular 4 applications using ngrx

54 lines 6.28 kB
import { NgrxCheckboxViewAdapter } from './checkbox'; import { NgrxDefaultViewAdapter } from './default'; import { NgrxNumberViewAdapter } from './number'; import { NgrxRadioViewAdapter } from './radio'; import { NgrxRangeViewAdapter } from './range'; import { NgrxSelectViewAdapter } from './select'; import { NgrxSelectMultipleViewAdapter } from './select-multiple'; const BUILTIN_ADAPTERS = [ NgrxCheckboxViewAdapter, NgrxRangeViewAdapter, NgrxNumberViewAdapter, NgrxSelectViewAdapter, NgrxSelectMultipleViewAdapter, NgrxRadioViewAdapter, ]; export function isBuiltInViewAdapter(viewAdapter) { return BUILTIN_ADAPTERS.some(a => viewAdapter.constructor === a); } export function selectViewAdapter(viewAdapters) { if (!viewAdapters) { throw new Error('No view adapter matches!'); } let defaultAdapter; let builtinAdapter; let customAdapter; viewAdapters.forEach((v) => { if (v.constructor === NgrxDefaultViewAdapter) { defaultAdapter = v; } else if (isBuiltInViewAdapter(v)) { if (builtinAdapter) { throw new Error('More than one built-in view adapter matches!'); } builtinAdapter = v; } else { if (customAdapter) { throw new Error('More than one custom view adapter matches!'); } customAdapter = v; } }); if (customAdapter) { return customAdapter; } if (builtinAdapter) { return builtinAdapter; } if (defaultAdapter) { return defaultAdapter; } throw new Error('No valid view adapter!'); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy92aWV3LWFkYXB0ZXIvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDckQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdsRSxNQUFNLGdCQUFnQixHQUFHO0lBQ3ZCLHVCQUF1QjtJQUN2QixvQkFBb0I7SUFDcEIscUJBQXFCO0lBQ3JCLHFCQUFxQjtJQUNyQiw2QkFBNkI7SUFDN0Isb0JBQW9CO0NBQ3JCLENBQUM7QUFFRixNQUFNLFVBQVUsb0JBQW9CLENBQUMsV0FBNEI7SUFDL0QsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsV0FBVyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ25FLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsWUFBK0I7SUFDL0QsSUFBSSxDQUFDLFlBQVksRUFBRTtRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7S0FDN0M7SUFFRCxJQUFJLGNBQTJDLENBQUM7SUFDaEQsSUFBSSxjQUEyQyxDQUFDO0lBQ2hELElBQUksYUFBMEMsQ0FBQztJQUMvQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBa0IsRUFBRSxFQUFFO1FBQzFDLElBQUksQ0FBQyxDQUFDLFdBQVcsS0FBSyxzQkFBc0IsRUFBRTtZQUM1QyxjQUFjLEdBQUcsQ0FBQyxDQUFDO1NBQ3BCO2FBQU0sSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNsQyxJQUFJLGNBQWMsRUFBRTtnQkFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO2FBQ2pFO1lBRUQsY0FBYyxHQUFHLENBQUMsQ0FBQztTQUNwQjthQUFNO1lBQ0wsSUFBSSxhQUFhLEVBQUU7Z0JBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQzthQUMvRDtZQUVELGFBQWEsR0FBRyxDQUFDLENBQUM7U0FDbkI7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksYUFBYSxFQUFFO1FBQ2pCLE9BQU8sYUFBYSxDQUFDO0tBQ3RCO0lBRUQsSUFBSSxjQUFjLEVBQUU7UUFDbEIsT0FBTyxjQUFjLENBQUM7S0FDdkI7SUFFRCxJQUFJLGNBQWMsRUFBRTtRQUNsQixPQUFPLGNBQWMsQ0FBQztLQUN2QjtJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdyeENoZWNrYm94Vmlld0FkYXB0ZXIgfSBmcm9tICcuL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTmdyeERlZmF1bHRWaWV3QWRhcHRlciB9IGZyb20gJy4vZGVmYXVsdCc7XHJcbmltcG9ydCB7IE5ncnhOdW1iZXJWaWV3QWRhcHRlciB9IGZyb20gJy4vbnVtYmVyJztcclxuaW1wb3J0IHsgTmdyeFJhZGlvVmlld0FkYXB0ZXIgfSBmcm9tICcuL3JhZGlvJztcclxuaW1wb3J0IHsgTmdyeFJhbmdlVmlld0FkYXB0ZXIgfSBmcm9tICcuL3JhbmdlJztcclxuaW1wb3J0IHsgTmdyeFNlbGVjdFZpZXdBZGFwdGVyIH0gZnJvbSAnLi9zZWxlY3QnO1xyXG5pbXBvcnQgeyBOZ3J4U2VsZWN0TXVsdGlwbGVWaWV3QWRhcHRlciB9IGZyb20gJy4vc2VsZWN0LW11bHRpcGxlJztcclxuaW1wb3J0IHsgRm9ybVZpZXdBZGFwdGVyIH0gZnJvbSAnLi92aWV3LWFkYXB0ZXInO1xyXG5cclxuY29uc3QgQlVJTFRJTl9BREFQVEVSUyA9IFtcclxuICBOZ3J4Q2hlY2tib3hWaWV3QWRhcHRlcixcclxuICBOZ3J4UmFuZ2VWaWV3QWRhcHRlcixcclxuICBOZ3J4TnVtYmVyVmlld0FkYXB0ZXIsXHJcbiAgTmdyeFNlbGVjdFZpZXdBZGFwdGVyLFxyXG4gIE5ncnhTZWxlY3RNdWx0aXBsZVZpZXdBZGFwdGVyLFxyXG4gIE5ncnhSYWRpb1ZpZXdBZGFwdGVyLFxyXG5dO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzQnVpbHRJblZpZXdBZGFwdGVyKHZpZXdBZGFwdGVyOiBGb3JtVmlld0FkYXB0ZXIpOiBib29sZWFuIHtcclxuICByZXR1cm4gQlVJTFRJTl9BREFQVEVSUy5zb21lKGEgPT4gdmlld0FkYXB0ZXIuY29uc3RydWN0b3IgPT09IGEpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0Vmlld0FkYXB0ZXIodmlld0FkYXB0ZXJzOiBGb3JtVmlld0FkYXB0ZXJbXSk6IEZvcm1WaWV3QWRhcHRlciB7XHJcbiAgaWYgKCF2aWV3QWRhcHRlcnMpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcignTm8gdmlldyBhZGFwdGVyIG1hdGNoZXMhJyk7XHJcbiAgfVxyXG5cclxuICBsZXQgZGVmYXVsdEFkYXB0ZXI6IEZvcm1WaWV3QWRhcHRlciB8IHVuZGVmaW5lZDtcclxuICBsZXQgYnVpbHRpbkFkYXB0ZXI6IEZvcm1WaWV3QWRhcHRlciB8IHVuZGVmaW5lZDtcclxuICBsZXQgY3VzdG9tQWRhcHRlcjogRm9ybVZpZXdBZGFwdGVyIHwgdW5kZWZpbmVkO1xyXG4gIHZpZXdBZGFwdGVycy5mb3JFYWNoKCh2OiBGb3JtVmlld0FkYXB0ZXIpID0+IHtcclxuICAgIGlmICh2LmNvbnN0cnVjdG9yID09PSBOZ3J4RGVmYXVsdFZpZXdBZGFwdGVyKSB7XHJcbiAgICAgIGRlZmF1bHRBZGFwdGVyID0gdjtcclxuICAgIH0gZWxzZSBpZiAoaXNCdWlsdEluVmlld0FkYXB0ZXIodikpIHtcclxuICAgICAgaWYgKGJ1aWx0aW5BZGFwdGVyKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNb3JlIHRoYW4gb25lIGJ1aWx0LWluIHZpZXcgYWRhcHRlciBtYXRjaGVzIScpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBidWlsdGluQWRhcHRlciA9IHY7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoY3VzdG9tQWRhcHRlcikge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTW9yZSB0aGFuIG9uZSBjdXN0b20gdmlldyBhZGFwdGVyIG1hdGNoZXMhJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGN1c3RvbUFkYXB0ZXIgPSB2O1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBpZiAoY3VzdG9tQWRhcHRlcikge1xyXG4gICAgcmV0dXJuIGN1c3RvbUFkYXB0ZXI7XHJcbiAgfVxyXG5cclxuICBpZiAoYnVpbHRpbkFkYXB0ZXIpIHtcclxuICAgIHJldHVybiBidWlsdGluQWRhcHRlcjtcclxuICB9XHJcblxyXG4gIGlmIChkZWZhdWx0QWRhcHRlcikge1xyXG4gICAgcmV0dXJuIGRlZmF1bHRBZGFwdGVyO1xyXG4gIH1cclxuXHJcbiAgdGhyb3cgbmV3IEVycm9yKCdObyB2YWxpZCB2aWV3IGFkYXB0ZXIhJyk7XHJcbn1cclxuIl19