UNPKG

vuestic-ui

Version:
1 lines 2 kB
{"version":3,"file":"clone-deep.mjs","sources":["../../../../src/utils/clone-deep.ts"],"sourcesContent":["import { isObject } from './is-object'\n\n// Notice: structureClone can not copy DOM nodes and functions.\n/** Deeply merge object into new object, cloning DOM nodes and functions */\nexport const cloneDeep = <T>(source: T): T => {\n if (source === null || typeof source !== 'object') {\n return source\n }\n\n if (Array.isArray(source)) {\n return source.map(cloneDeep) as any\n }\n\n if (source instanceof Date) {\n return new Date(source.getTime()) as any\n }\n\n if (source instanceof RegExp) {\n return new RegExp(source.source, source.flags) as any\n }\n\n if (source instanceof Map) {\n return new Map(Array.from(source.entries()).map(([key, value]) => [key, cloneDeep(value)])) as any\n }\n\n if (source instanceof Set) {\n return new Set(Array.from(source.values()).map(cloneDeep)) as any\n }\n\n if (isObject(source)) {\n return Object.keys(source).reduce((acc, key) => {\n acc[key] = cloneDeep(source[key as keyof T])\n return acc\n }, {} as any) as T\n }\n\n if (typeof source === 'function') {\n return source\n }\n\n return source\n}\n"],"names":[],"mappings":";AAIa,MAAA,YAAY,CAAI,WAAiB;AAC5C,MAAI,WAAW,QAAQ,OAAO,WAAW,UAAU;AAC1C,WAAA;AAAA,EACT;AAEI,MAAA,MAAM,QAAQ,MAAM,GAAG;AAClB,WAAA,OAAO,IAAI,SAAS;AAAA,EAC7B;AAEA,MAAI,kBAAkB,MAAM;AAC1B,WAAO,IAAI,KAAK,OAAO,QAAS,CAAA;AAAA,EAClC;AAEA,MAAI,kBAAkB,QAAQ;AAC5B,WAAO,IAAI,OAAO,OAAO,QAAQ,OAAO,KAAK;AAAA,EAC/C;AAEA,MAAI,kBAAkB,KAAK;AAClB,WAAA,IAAI,IAAI,MAAM,KAAK,OAAO,QAAS,CAAA,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,CAAC,CAAC;AAAA,EAC5F;AAEA,MAAI,kBAAkB,KAAK;AAClB,WAAA,IAAI,IAAI,MAAM,KAAK,OAAO,QAAQ,EAAE,IAAI,SAAS,CAAC;AAAA,EAC3D;AAEI,MAAA,SAAS,MAAM,GAAG;AACpB,WAAO,OAAO,KAAK,MAAM,EAAE,OAAO,CAAC,KAAK,QAAQ;AAC9C,UAAI,GAAG,IAAI,UAAU,OAAO,GAAc,CAAC;AACpC,aAAA;AAAA,IACT,GAAG,CAAS,CAAA;AAAA,EACd;AAEI,MAAA,OAAO,WAAW,YAAY;AACzB,WAAA;AAAA,EACT;AAEO,SAAA;AACT;"}