UNPKG

rxdeep

Version:
40 lines 1.1 kB
import { isLeaf } from './types/changes'; function clean(l) { if (l[l.length - 1] === undefined) { l.length--; clean(l); } } export function reverse(change) { if (isLeaf(change.trace)) { return { value: change.trace.from, trace: { from: change.trace.to, to: change.trace.from, } }; } else { const revalue = Array.isArray(change.value) ? [...change.value] : Object.assign({}, change.value); const retrace = { subs: {} }; for (let key in change.trace.subs) { const reversed = reverse({ value: change.value ? change.value[key] : undefined, trace: change.trace.subs[key], }); revalue[key] = reversed.value; retrace.subs[key] = reversed.trace; } if (Array.isArray(revalue)) { clean(revalue); } return { value: revalue, trace: retrace, }; } } //# sourceMappingURL=reverse.js.map