summaryrefslogtreecommitdiff
path: root/node_modules/svelte/src/runtime/internal/spread.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/svelte/src/runtime/internal/spread.js')
-rw-r--r--node_modules/svelte/src/runtime/internal/spread.js35
1 files changed, 35 insertions, 0 deletions
diff --git a/node_modules/svelte/src/runtime/internal/spread.js b/node_modules/svelte/src/runtime/internal/spread.js
new file mode 100644
index 0000000..6a9c336
--- /dev/null
+++ b/node_modules/svelte/src/runtime/internal/spread.js
@@ -0,0 +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;
+}
+
+export function get_spread_object(spread_props) {
+ return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};
+}