/** @returns {{}} */ | |
export function get_spread_update(levels, updates) { | |
const update = {}; | |
const to_null_out = {}; | |
const accounted_for = { $$scope: 1 }; | |
let i = levels.length; | |
while (i--) { | |
const o = levels[i]; | |
const n = updates[i]; | |
if (n) { | |
for (const key in o) { | |
if (!(key in n)) to_null_out[key] = 1; | |
} | |
for (const key in n) { | |
if (!accounted_for[key]) { | |
update[key] = n[key]; | |
accounted_for[key] = 1; | |
} | |
} | |
levels[i] = n; | |
} else { | |
for (const key in o) { | |
accounted_for[key] = 1; | |
} | |
} | |
} | |
for (const key in to_null_out) { | |
if (!(key in update)) update[key] = undefined; | |
} | |
return update; | |
} | |
export function get_spread_object(spread_props) { | |
return typeof spread_props === 'object' && spread_props !== null ? spread_props : {}; | |
} | |