diff --git a/src/display/api.js b/src/display/api.js index c8c5c025b..86b564e48 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -1656,8 +1656,24 @@ class LoopbackPort { cloned.set(value, result); return result; } + if (value instanceof Map) { + result = new Map(); + cloned.set(value, result); // Adding to cache now for cyclic references. + for (const [key, val] of value) { + result.set(key, cloneValue(val)); + } + return result; + } + if (value instanceof Set) { + result = new Set(); + cloned.set(value, result); // Adding to cache now for cyclic references. + for (const val of value) { + result.add(cloneValue(val)); + } + return result; + } result = Array.isArray(value) ? [] : {}; - cloned.set(value, result); // adding to cache now for cyclic references + cloned.set(value, result); // Adding to cache now for cyclic references. // Cloning all value and object properties, however ignoring properties // defined via getter. for (const i in value) {