@datorama/akita
Version:
State Management Tailored-Made for JS Applications
43 lines • 2.93 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* \@internal
*
* \@example
* setValue(state, 'todos.ui', { filter: {} })
* @param {?} obj
* @param {?} prop
* @param {?} val
* @return {?}
*/
export function setValue(obj, prop, val) {
/** @type {?} */
const split = prop.split('.');
if (split.length === 1) {
return val;
}
obj = Object.assign({}, obj);
/** @type {?} */
const lastIndex = split.length - 2;
/** @type {?} */
const removeStoreName = prop.split('.').slice(1);
removeStoreName.reduce((/**
* @param {?} acc
* @param {?} part
* @param {?} index
* @return {?}
*/
(acc, part, index) => {
if (index === lastIndex) {
acc[part] = val;
}
else {
acc[part] = Object.assign({}, acc[part]);
}
return acc && acc[part];
}), obj);
return obj;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0VmFsdWVCeVN0cmluZy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9ha2l0YS8iLCJzb3VyY2VzIjpbInNyYy9zZXRWYWx1ZUJ5U3RyaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBTUEsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFRLEVBQUUsSUFBWSxFQUFFLEdBQVE7O1VBQ2pELEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUU3QixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3RCLE9BQU8sR0FBRyxDQUFDO0tBQ1o7SUFFRCxHQUFHLHFCQUFRLEdBQUcsQ0FBRSxDQUFDOztVQUVYLFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7O1VBQzVCLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFaEQsZUFBZSxDQUFDLE1BQU07Ozs7OztJQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUMxQyxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztTQUNqQjthQUFNO1lBQ0wsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUUsQ0FBQztTQUM5QjtRQUVELE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDLEdBQUUsR0FBRyxDQUFDLENBQUM7SUFFUixPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBpbnRlcm5hbFxuICpcbiAqIEBleGFtcGxlXG4gKiBzZXRWYWx1ZShzdGF0ZSwgJ3RvZG9zLnVpJywgeyBmaWx0ZXI6IHt9IH0pXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRWYWx1ZShvYmo6IGFueSwgcHJvcDogc3RyaW5nLCB2YWw6IGFueSkge1xuICBjb25zdCBzcGxpdCA9IHByb3Auc3BsaXQoJy4nKTtcblxuICBpZiAoc3BsaXQubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIG9iaiA9IHsgLi4ub2JqIH07XG5cbiAgY29uc3QgbGFzdEluZGV4ID0gc3BsaXQubGVuZ3RoIC0gMjtcbiAgY29uc3QgcmVtb3ZlU3RvcmVOYW1lID0gcHJvcC5zcGxpdCgnLicpLnNsaWNlKDEpO1xuXG4gIHJlbW92ZVN0b3JlTmFtZS5yZWR1Y2UoKGFjYywgcGFydCwgaW5kZXgpID0+IHtcbiAgICBpZiAoaW5kZXggPT09IGxhc3RJbmRleCkge1xuICAgICAgYWNjW3BhcnRdID0gdmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICBhY2NbcGFydF0gPSB7IC4uLmFjY1twYXJ0XSB9O1xuICAgIH1cblxuICAgIHJldHVybiBhY2MgJiYgYWNjW3BhcnRdO1xuICB9LCBvYmopO1xuXG4gIHJldHVybiBvYmo7XG59XG4iXX0=