export function getSpreadUpdate(levels, updates) { var update = {}; var to_null_out = {}; var accounted_for = {}; var i = levels.length; while (i--) { var o = levels[i]; var n = updates[i]; if (n) { for (var key in o) { if (!(key in n)) to_null_out[key] = 1; } for (var key in n) { if (!accounted_for[key]) { update[key] = n[key]; accounted_for[key] = 1; } } levels[i] = n; } else { for (var key in o) { accounted_for[key] = 1; } } } for (var key in to_null_out) { if (!(key in update)) update[key] = undefined; } return update; }