12345678910111213141516171819 |
- export const cowValueModel = (key, keys = key.split('.')) => {
- function setField (x = {}, index, val) {
- if (index >= keys.length) return val;
- const key = keys[index],
- value = x[key],
- modified = setField(value, index + 1, val);
- return value === modified ? x : {...x, [key]: modified};
- }
- return {
- key,
- get (obj) {
- return keys.reduce((x = {}, key) => x[key], obj);
- },
- set (obj, val) {
- return setField(obj, 0, val);
- }
- };
- };
|