|
|
|
|
@ -1,42 +1,35 @@
|
|
|
|
|
/** @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;
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
/** @returns {any} */
|
|
|
|
|
export function get_spread_object(spread_props) {
|
|
|
|
|
return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};
|
|
|
|
|
return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|