{"version":3,"file":"objects.mjs","sources":["../../../packages/utils/objects.ts"],"sourcesContent":["import { hasOwn } from '@vue/shared'\nimport { throwError } from './error'\nimport type { Entries } from 'type-fest'\n\nconst SCOPE = 'UtilV2/objects'\n\nexport const keysOf = <T extends Record<string, any>>(arr: T) =>\n  Object.keys(arr) as Array<keyof T>\nexport const entriesOf = <T extends Record<string, any>>(arr: T) =>\n  Object.entries(arr) as Entries<T>\nexport { hasOwn } from '@vue/shared'\n\n/**\n * 获取链式值\n * @param o 目标对象\n * @param prop 属性\n * @param targetProp 目标属性\n */\nexport function getChainValue(o: any, prop: string, targetProp?: string) {\n  if (!o) return undefined\n  let ret = o\n  if (targetProp) {\n    ret = o[targetProp]\n  }\n\n  prop &&\n    prop.split('.').some(p => {\n      if (p === '$last' && Array.isArray(ret)) {\n        ret = ret[ret.length - 1]\n      } else {\n        ret = ret[p]\n      }\n\n      if (!ret) {\n        return true\n      }\n    })\n  return ret\n}\n\nexport function getPropByPath(\n  obj: any,\n  path: string,\n  strict: boolean\n): {\n  o: any\n  k: string\n  v: any\n} {\n  let tempObj = obj\n  let key, value\n\n  if (obj && hasOwn(obj, path)) {\n    key = path\n    value = tempObj?.[path]\n  } else {\n    path = path.replace(/\\[(\\w+)\\]/g, '.$1')\n    path = path.replace(/^\\./, '')\n\n    const keyArr = path.split('.')\n    let i = 0\n    for (i; i < keyArr.length - 1; i++) {\n      if (!tempObj && !strict) break\n      const key = keyArr[i]\n\n      if (key in tempObj) {\n        tempObj = tempObj[key]\n      } else {\n        if (strict) {\n          throwError(SCOPE, 'Please transfer a valid prop path to form item!')\n        }\n        break\n      }\n    }\n    key = keyArr[i]\n    value = tempObj?.[keyArr[i]]\n  }\n  return {\n    o: tempObj,\n    k: key,\n    v: value\n  }\n}\n\nconst isObject = (v: any): v is Record<string, any> =>\n  Object.prototype.toString.call(v).slice(8, -1) === 'Object'\n\n/**\n * 对象深度继承, 引用类型的值不进行合并\n * @param data1 对象1\n * @param data2 对象2\n * @param extendEmpty 是否继承空值, 默认false\n */\nexport const deepExtend = (\n  data1: Record<string, any>,\n  data2: Record<string, any>,\n  extendEmpty = false\n) => {\n  for (const key in data1) {\n    let value1 = data1[key]\n    let value2 = data2[key]\n    if (isObject(value1)) {\n      isObject(value2) && deepExtend(value1, value2, extendEmpty)\n    } else if ((value2 !== undefined && value2 !== null) || extendEmpty) {\n      data1[key] = value2\n    }\n  }\n}\n\nexport function deepCopy<O extends any>(val: O): O {\n  if (Array.isArray(val)) {\n    let result: any[] = []\n    val.forEach(item => {\n      result.push(deepCopy(item))\n    })\n\n    return result as O\n  }\n  if (isObject(val)) {\n    let result: Record<string, any> = {}\n    for (const key in val) {\n      result[key] = deepCopy(val[key])\n    }\n    return result as O\n  }\n\n  return val\n}\n"],"names":["key"],"mappings":"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"}