ngrx-forms
Version:
Proper integration of forms in Angular 4 applications using ngrx
22 lines • 3.76 kB
JavaScript
export function isBoxed(value) {
return !!value && value.__boxed === '';
}
export function box(value) {
return {
__boxed: '',
value,
};
}
export function unbox(value) {
if (['string', 'boolean', 'number', 'undefined'].indexOf(typeof value) >= 0 || value === null || value === undefined) {
return value;
}
if (isBoxed(value)) {
return value.value;
}
if (Array.isArray(value)) {
return value.map(unbox);
}
return Object.keys(value).reduce((a, k) => Object.assign(a, { [k]: unbox(value[k]) }), {});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm94aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JveGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzQkEsTUFBTSxVQUFVLE9BQU8sQ0FBVSxLQUFVO0lBQ3pDLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSyxLQUFvQixDQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7QUFDekQsQ0FBQztBQUVELE1BQU0sVUFBVSxHQUFHLENBQUksS0FBUTtJQUM3QixPQUFPO1FBQ0wsT0FBTyxFQUFFLEVBQUU7UUFDWCxLQUFLO0tBQ04sQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsS0FBSyxDQUFJLEtBQVE7SUFDL0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7UUFDcEgsT0FBTyxLQUE4QixDQUFDO0tBQ3ZDO0lBRUQsSUFBSSxPQUFPLENBQUksS0FBSyxDQUFDLEVBQUU7UUFDckIsT0FBTyxLQUFLLENBQUMsS0FBOEIsQ0FBQztLQUM3QztJQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN4QixPQUFRLEtBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFlLENBQUM7S0FDaEQ7SUFFRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBWSxDQUFDLENBQUMsTUFBTSxDQUNyQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQVksQ0FBUSxDQUFDLEVBQUUsQ0FBQyxFQUN0RSxFQUFTLENBQ0ksQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBCb3hlZDxUPiB7XHJcbiAgX19ib3hlZDogJyc7XHJcbiAgdmFsdWU6IFQ7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFVuYm94ZWRPYmplY3Q8VD4gPSB7XHJcbiAgW3Byb3AgaW4ga2V5b2YgVF06IFVuYm94ZWQ8VFtwcm9wXT47XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBVbmJveGVkPFQ+ID1cclxuICAvLyAoYWIpdXNlICdzeW1ib2wnIHRvIGNhdGNoICdhbnknIHR5cGluZ1xyXG4gIFQgZXh0ZW5kcyBCb3hlZDxzeW1ib2w+ID8gYW55XHJcbiAgOiBUIGV4dGVuZHMgQm94ZWQ8aW5mZXIgVT4gPyBVXHJcbiAgOiBUIGV4dGVuZHMgc3ltYm9sW10gPyBhbnlcclxuICA6IFQgZXh0ZW5kcyBzeW1ib2wgPyBhbnlcclxuICA6IFQgZXh0ZW5kcyB1bmRlZmluZWQgPyB1bmRlZmluZWRcclxuICA6IFQgZXh0ZW5kcyBudWxsID8gbnVsbFxyXG4gIDogVCBleHRlbmRzIHN0cmluZyA/IHN0cmluZ1xyXG4gIDogVCBleHRlbmRzIG51bWJlciA/IG51bWJlclxyXG4gIDogVCBleHRlbmRzIGJvb2xlYW4gPyBib29sZWFuXHJcbiAgOiBVbmJveGVkT2JqZWN0PFQ+O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzQm94ZWQ8VCA9IGFueT4odmFsdWU6IGFueSk6IHZhbHVlIGlzIEJveGVkPFQ+IHtcclxuICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgYXMgQm94ZWQ8YW55PikuX19ib3hlZCA9PT0gJyc7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBib3g8VD4odmFsdWU6IFQpOiBCb3hlZDxUPiB7XHJcbiAgcmV0dXJuIHtcclxuICAgIF9fYm94ZWQ6ICcnLFxyXG4gICAgdmFsdWUsXHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHVuYm94PFQ+KHZhbHVlOiBUKTogVW5ib3hlZDxUPiB7XHJcbiAgaWYgKFsnc3RyaW5nJywgJ2Jvb2xlYW4nLCAnbnVtYmVyJywgJ3VuZGVmaW5lZCddLmluZGV4T2YodHlwZW9mIHZhbHVlKSA+PSAwIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgIHJldHVybiB2YWx1ZSBhcyB1bmtub3duIGFzIFVuYm94ZWQ8VD47XHJcbiAgfVxyXG5cclxuICBpZiAoaXNCb3hlZDxUPih2YWx1ZSkpIHtcclxuICAgIHJldHVybiB2YWx1ZS52YWx1ZSBhcyB1bmtub3duIGFzIFVuYm94ZWQ8VD47XHJcbiAgfVxyXG5cclxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgIHJldHVybiAodmFsdWUgYXMgYW55KS5tYXAodW5ib3gpIGFzIFVuYm94ZWQ8VD47XHJcbiAgfVxyXG5cclxuICByZXR1cm4gT2JqZWN0LmtleXModmFsdWUgYXMgYW55KS5yZWR1Y2UoXHJcbiAgICAoYSwgaykgPT4gT2JqZWN0LmFzc2lnbihhLCB7IFtrXTogdW5ib3godmFsdWVbayBhcyBrZXlvZiBUXSBhcyBhbnkpIH0pLFxyXG4gICAge30gYXMgYW55LFxyXG4gICkgYXMgVW5ib3hlZDxUPjtcclxufVxyXG4iXX0=