{"version":3,"file":"util.mjs","sources":["../../../../packages/utils/util.ts"],"sourcesContent":["import { camelize, capitalize, extend, hasOwn, hyphenate, isArray, isObject, isString, looseEqual, isFunction, isPlainObject } from '@vue/shared'\nimport { isUndefined, isNull, camelCase } from 'lodash-unified'\nimport { AnyFunction, AnyObject } from './types'\n\nexport function getFileNameByPath(path: string): string {\n  const posStart = path.lastIndexOf('/')\n  const posEnd = path.lastIndexOf('.')\n  return path.substring(posStart + 1, posEnd)\n}\n\nexport function dirname(path: string): string {\n  if (typeof path !== 'string') path = path + ''\n  if (path.length === 0) return '.'\n  let code = path.charCodeAt(0)\n  const hasRoot = code === 47 /* / */\n  let end = -1\n  let matchedSlash = true\n  for (let i = path.length - 1; i >= 1; --i) {\n    code = path.charCodeAt(i)\n    if (code === 47 /* / */) {\n      if (!matchedSlash) {\n        end = i\n        break\n      }\n    } else {\n      // We saw the first non-path separator\n      matchedSlash = false\n    }\n  }\n\n  if (end === -1) return hasRoot ? '/' : '.'\n  if (hasRoot && end === 1) {\n    // return '//';\n    // Backwards-compat fix:\n    return '/'\n  }\n  return path.slice(0, end)\n}\n\nexport function removeEmpty(obj: any): AnyObject {\n  const proto = Object.getPrototypeOf(obj)\n  const finalObj: AnyObject = {}\n  Object.setPrototypeOf(finalObj, proto)\n  Object.keys(obj).forEach(key => {\n    const className = getObjClassName(obj[key])\n    if ((obj[key] && isArray(obj[key])) || obj[key] instanceof Element) {\n      finalObj[key] = obj[key]\n    } else if (obj[key] && typeof obj[key] === 'object' && !Cesium[className]) {\n      // Do not process cesium objects\n      const nestedObj = removeEmpty(obj[key])\n      if (Object.keys(nestedObj).length) {\n        finalObj[key] = nestedObj\n      }\n    } else if (obj[key] !== '' && obj[key] !== undefined && obj[key] !== null) {\n      finalObj[key] = obj[key]\n    }\n  })\n  return finalObj\n}\n\nexport function isEmptyObj(obj: unknown): boolean {\n  if (isUndefined(obj) || isNull(obj)) {\n    return true\n  }\n\n  if (obj instanceof Element) {\n    return false\n  }\n\n  const arr = Object.keys(obj as any)\n  return arr.length === 0\n}\n\nexport const kebabCase = hyphenate\n\nexport function getObjClassName(obj: AnyObject): string {\n  if (obj && obj.constructor) {\n    const strFun = obj.constructor.toString()\n    let className = strFun.substr(0, strFun.indexOf('('))\n    className = className.replace('function', '')\n    return className.replace(/(^\\s*)|(\\s*$)/gi, '')\n  }\n  return typeof obj\n}\n\n/**\n * 验证是否是经纬度。\n * @param {Number} longitude\n * @param {Number} latitude\n * @returns {Boolean}\n */\nexport function lnglatValidator(longitude: number, latitude: number) {\n  // 经度，整数部分为0-180小数部分为0到6位\n  const longreg = /^(-|\\+)?(((\\d|[1-9]\\d|1[0-7]\\d|0{1,3})\\.\\d{0,15})|(\\d|[1-9]\\d|1[0-7]\\d|0{1,3})|180\\.0{0,15}|180)$/\n  if (!longreg.test(longitude.toString())) {\n    return false\n  } // 纬度,整数部分为0-90小数部分为0到6位\n  const latreg = /^(-|\\+)?([0-8]?\\d{1}\\.\\d{0,15}|90\\.0{0,15}|[0-8]?\\d{1}|90)$/\n  if (!latreg.test(latitude.toString())) {\n    return false\n  }\n  return true\n}\n\nexport function defaultValue(a, b) {\n  if (a !== undefined && a !== null) {\n    return a\n  }\n  return b\n}\n\nexport function inherit(base, derived) {\n  function F() {\n    //\n  }\n  F.prototype = base.prototype\n  derived.prototype = new F()\n  derived.prototype.constructor = derived\n}\n\nexport function getDefaultOptionByProps<T>(props, ignores: Array<string> = []) {\n  const defaultOptions: T = {} as T\n  Object.keys(props).forEach(key => {\n    if (ignores.indexOf(key) === -1) {\n      const value: {\n        default?: AnyFunction<any> | AnyObject\n      } = props[key]\n      defaultOptions[key] = isFunction(value)\n        ? undefined\n        : isPlainObject(value)\n        ? isFunction(value.default)\n          ? value.default()\n          : value.default\n        : value\n    }\n  })\n\n  return defaultOptions\n}\n\nconst addCustomProperty = (obj, options) => {\n  for (const prop in options) {\n    if (!obj[prop]) {\n      obj[prop] = options[prop]\n    }\n  }\n}\n\nexport const merge = <T extends Record<string, any>>(a: T, b: T) => {\n  const keys = [...new Set([...Object.keys(a), ...Object.keys(b)])] as (keyof T)[]\n  const obj = {} as T\n  for (const key of keys) {\n    obj[key] = b[key] ?? a[key]\n  }\n  return obj\n}\n\n// reexport from lodash & vue shared\nexport {\n  hasOwn,\n  // isEmpty,\n  // isEqual,\n  isObject,\n  isPlainObject,\n  isArray,\n  isString,\n  capitalize,\n  camelize,\n  looseEqual,\n  extend,\n  isUndefined,\n  isFunction,\n  camelCase,\n  addCustomProperty\n}\n"],"names":[],"mappings":"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"}