UNPKG

@ffsm/utils

Version:

A collection of utility functions for React and JavaScript, providing type-safe utilities for common tasks like prop management, conditional rendering, and more.

49 lines (48 loc) 1.35 kB
import { mergeObject } from './merge-object'; export function cloneArray(value) { return value.map((item) => cloneDeep(item)); } export function cloneObject(value) { if (Array.isArray(value)) { return cloneArray(value); } if (value === null) { return null; } if (value instanceof Date) { return new Date(value.getTime()); } if (value instanceof RegExp) { return new RegExp(value.source, value.flags); } if (value instanceof Map) { return new Map(value); } if (value instanceof Set) { return new Set(value); } if (value instanceof ArrayBuffer) { return value.slice(0); } if (value instanceof Blob) { return value.slice(0); } if (value instanceof File) { return new File([value], value.name, { type: value.type }); } if (value instanceof ImageData) { return new ImageData(value.data.slice(0), value.width, value.height); } if (value instanceof DataView) { return new DataView(value.buffer, value.byteOffset, value.byteLength); } return mergeObject(...Object.entries(value).map(([key, val]) => ({ [key]: cloneDeep(val), }))); } export function cloneDeep(value) { if (typeof value === 'object') { return cloneObject(value); } return value; }