ngrx-forms
Version:
Proper integration of forms in Angular 4 applications using ngrx
54 lines • 6.28 kB
JavaScript
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