let nativeClone:()

in packages/shared/src/clone.ts [52:95]


  let nativeClone: (values: any) => any
  if (Array.isArray(values)) {
    return values.map((item) => clone(item, filter))
  } else if (isNativeObject(values)) {
    nativeClone = isNativeObject(values)
    return isFn(nativeClone) ? nativeClone(values) : values
  } else if (typeof values === 'object' && !!values) {
    if ('$$typeof' in values && '_owner' in values) {
      return values
    }
    if (values._isAMomentObject) {
      return values
    }
    if (values._isJSONSchemaObject) {
      return values
    }

    if (isFn(values.toJS)) {
      return values
    }
    if (isFn(values.toJSON)) {
      return values
    }
    if (Object.getOwnPropertySymbols(values || {}).length) {
      return values
    }
    const res = {}
    for (const key in values) {
      if (Object.hasOwnProperty.call(values, key)) {
        if (isFn(filter)) {
          if (filter(values[key], key)) {
            res[key] = clone(values[key], filter)
          } else {
            res[key] = values[key]
          }
        } else {
          res[key] = clone(values[key], filter)
        }
      }
    }
    return res
  } else {
    return values
  }