{"version":3,"file":"util.mjs","sources":["../../../../packages/utils/util.ts"],"sourcesContent":["// @ts-nocheck\r\nimport {\r\n  camelize,\r\n  capitalize,\r\n  extend,\r\n  hasOwn,\r\n  hyphenate,\r\n  isArray,\r\n  isObject,\r\n  isString,\r\n  isFunction,\r\n  toRawType,\r\n} from '@vue/shared'\r\nimport isEqualWith from 'lodash/isEqualWith'\r\nimport { isClient } from '@vueuse/core'\r\nimport { debugWarn, throwError } from './error'\r\n\r\nimport type { ComponentPublicInstance, CSSProperties, Ref } from 'vue'\r\nimport type { TimeoutHandle, Nullable } from './types'\r\n\r\nconst SCOPE = 'Util'\r\n\r\nexport function toObject<T>(arr: Array<T>): Record<string, T> {\r\n  const res = {}\r\n  for (let i = 0; i < arr.length; i++) {\r\n    if (arr[i]) {\r\n      extend(res, arr[i])\r\n    }\r\n  }\r\n  return res\r\n}\r\n\r\nexport const getValueByPath = (obj, paths = ''): unknown => {\r\n  let ret: unknown = obj\r\n  paths.split('.').map((path) => {\r\n    ret = ret?.[path]\r\n  })\r\n  return ret\r\n}\r\n\r\nexport function getPropByPath(\r\n  obj: any,\r\n  path: string,\r\n  strict: boolean\r\n): {\r\n  o: unknown\r\n  k: string\r\n  v: Nullable<unknown>\r\n} {\r\n  let tempObj = obj\r\n  let key, value\r\n\r\n  if (obj && hasOwn(obj, path)) {\r\n    key = path\r\n    value = tempObj?.[path]\r\n  } else {\r\n    path = path.replace(/\\[(\\w+)\\]/g, '.$1')\r\n    path = path.replace(/^\\./, '')\r\n\r\n    const keyArr = path.split('.')\r\n    let i = 0\r\n    for (i; i < keyArr.length - 1; i++) {\r\n      if (!tempObj && !strict) break\r\n      const key = keyArr[i]\r\n\r\n      if (key in tempObj) {\r\n        tempObj = tempObj[key]\r\n      } else {\r\n        if (strict) {\r\n          throwError(SCOPE, 'Please transfer a valid prop path to form item!')\r\n        }\r\n        break\r\n      }\r\n    }\r\n    key = keyArr[i]\r\n    value = tempObj?.[keyArr[i]]\r\n  }\r\n  return {\r\n    o: tempObj,\r\n    k: key,\r\n    v: value,\r\n  }\r\n}\r\n\r\n/**\r\n * Generate random number in range [0, 1000]\r\n * Maybe replace with [uuid](https://www.npmjs.com/package/uuid)\r\n */\r\nexport const generateId = (): number => Math.floor(Math.random() * 10000)\r\n\r\n// use isEqual instead\r\n// export const valueEquals\r\n\r\nexport const escapeRegexpString = (value = ''): string =>\r\n  String(value).replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\r\n\r\n// Use native Array.find, Array.findIndex instead\r\n\r\n// coerce truthy value to array\r\nexport const coerceTruthyValueToArray = (arr) => {\r\n  if (!arr && arr !== 0) {\r\n    return []\r\n  }\r\n  return Array.isArray(arr) ? arr : [arr]\r\n}\r\n\r\n// drop IE and (Edge < 79) support\r\n// export const isIE\r\n// export const isEdge\r\n\r\nexport const isFirefox = function (): boolean {\r\n  return isClient && !!window.navigator.userAgent.match(/firefox/i)\r\n}\r\n\r\nexport const autoprefixer = function (style: CSSProperties): CSSProperties {\r\n  const rules = ['transform', 'transition', 'animation']\r\n  const prefixes = ['ms-', 'webkit-']\r\n  rules.forEach((rule) => {\r\n    const value = style[rule]\r\n    if (rule && value) {\r\n      prefixes.forEach((prefix) => {\r\n        style[prefix + rule] = value\r\n      })\r\n    }\r\n  })\r\n  return style\r\n}\r\n\r\nexport const kebabCase = hyphenate\r\n\r\n// reexport from lodash & vue shared\r\nexport { isVNode } from 'vue'\r\nexport {\r\n  // isEmpty,\r\n  // isEqual,\r\n  isObject,\r\n  isArray,\r\n  isString,\r\n  capitalize,\r\n  camelize,\r\n  extend,\r\n}\r\n\r\nexport const isBool = (val: unknown): val is boolean => typeof val === 'boolean'\r\nexport const isNumber = (val: unknown): val is number => typeof val === 'number'\r\nexport const isHTMLElement = (val: unknown) => toRawType(val).startsWith('HTML')\r\n\r\nexport const isElement = (e: unknown): e is Element => {\r\n  if (typeof Element === 'undefined') return false\r\n  return e instanceof Element\r\n}\r\n\r\nexport function rafThrottle<T extends (...args: any) => any>(fn: T): T {\r\n  let locked = false\r\n  return function (this: ThisParameterType<T>, ...args: any[]) {\r\n    if (locked) return\r\n    locked = true\r\n\r\n    window.requestAnimationFrame(() => {\r\n      Reflect.apply(fn, this, args)\r\n      locked = false\r\n    })\r\n  } as T\r\n}\r\n\r\nexport const clearTimer = (timer: Ref<TimeoutHandle>) => {\r\n  clearTimeout(timer.value)\r\n  timer.value = 0\r\n}\r\n\r\n/**\r\n * Generating a random int in range (0, max - 1)\r\n * @param max {number}\r\n */\r\nexport function getRandomInt(max: number) {\r\n  return Math.floor(Math.random() * Math.floor(max))\r\n}\r\n\r\nexport function isUndefined(val: any): val is undefined {\r\n  return val === undefined\r\n}\r\n\r\nexport function isEmpty(val: unknown) {\r\n  if (\r\n    (!val && val !== 0) ||\r\n    (isArray(val) && !val.length) ||\r\n    (isObject(val) && !Object.keys(val).length)\r\n  )\r\n    return true\r\n\r\n  return false\r\n}\r\n\r\nexport function arrayFlat(arr: unknown[]) {\r\n  return arr.reduce((acm: unknown[], item) => {\r\n    const val = Array.isArray(item) ? arrayFlat(item) : item\r\n    return acm.concat(val)\r\n  }, [])\r\n}\r\n\r\nexport function deduplicate<T>(arr: T[]) {\r\n  return Array.from(new Set(arr))\r\n}\r\n\r\nexport function addUnit(value: string | number) {\r\n  if (isString(value)) {\r\n    return value\r\n  } else if (isNumber(value)) {\r\n    return `${value}px`\r\n  }\r\n  debugWarn(SCOPE, 'binding value must be a string or number')\r\n  return ''\r\n}\r\n\r\n/**\r\n * Enhance `lodash.isEqual` for it always return false even two functions have completely same statements.\r\n * @param obj The value to compare\r\n * @param other The other value to compare\r\n * @returns Returns `true` if the values are equivalent, else `false`.\r\n * @example\r\n *  lodash.isEqual(() => 1, () => 1)      // false\r\n *  isEqualWith(() => 1, () => 1)         // true\r\n */\r\nexport function isEqualWithFunction(obj: any, other: any) {\r\n  return isEqualWith(obj, other, (objVal, otherVal) => {\r\n    return isFunction(objVal) && isFunction(otherVal)\r\n      ? `${objVal}` === `${otherVal}`\r\n      : undefined\r\n  })\r\n}\r\n\r\n/**\r\n * Generate function for attach ref for the h renderer\r\n * @param ref Ref<HTMLElement | ComponentPublicInstance>\r\n * @returns (val: T) => void\r\n */\r\n\r\nexport const refAttacher = <T extends HTMLElement | ComponentPublicInstance>(\r\n  ref: Ref<T>\r\n) => {\r\n  return (val: T) => {\r\n    ref.value = val\r\n  }\r\n}\r\n\r\nexport const merge = <T extends Record<string, any>>(a: T, b: T) => {\r\n  const keys = [\r\n    ...new Set([...Object.keys(a), ...Object.keys(b)]),\r\n  ] as (keyof T)[]\r\n  const obj = {} as T\r\n  for (const key of keys) {\r\n    obj[key] = b[key] ?? a[key]\r\n  }\r\n  return obj\r\n}\r\n"],"names":[],"mappings":"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"}