@inkline/inkline
Version:
Inkline is the Vue.js UI/UX Library built for creating your next design system
23 lines (18 loc) • 606 B
text/typescript
export function clone (source: any): any {
if (Array.isArray(source)) {
const target: any = source.slice().map(clone);
const targetKeys = Object.keys(target);
Object.keys(source)
.filter((key) => !targetKeys.includes(key))
.forEach((key) => {
target[key] = source[key as any];
});
return target;
} else if (typeof source === 'object') {
return Object.keys(source).reduce((acc: any, key) => {
acc[key] = clone(source[key]);
return acc;
}, {});
}
return source;
}