{"version":3,"file":"helper.mjs","sources":["../../../../src/_common/js/utils/helper.ts"],"sourcesContent":["import isString from 'lodash/isString';\nimport isNull from 'lodash/isNull';\nimport isUndefined from 'lodash/isUndefined';\nimport isNumber from 'lodash/isNumber';\nimport isArray from 'lodash/isArray';\n\nexport function omit(obj: object, fields: string[]): object {\n  const shallowCopy = {\n    ...obj,\n  };\n  for (let i = 0; i < fields.length; i++) {\n    const key = fields[i];\n    delete shallowCopy[key];\n  }\n  return shallowCopy;\n}\n\nexport function removeEmptyAttrs<T>(obj: T): Partial<T> {\n  const newObj = {};\n\n  Object.keys(obj).forEach((key) => {\n    if (!isUndefined(obj[key]) || isNull(obj[key])) {\n      newObj[key] = obj[key];\n    }\n  });\n\n  return newObj;\n}\n\nexport function getTabElementByValue(tabs: [] = [], value: string): object {\n  const [result] = tabs.filter((item) => {\n    const { id } = item as any;\n    return id === value;\n  });\n  return result || null;\n}\n\nexport function firstUpperCase(str: string): string {\n  return str.toLowerCase().replace(/( |^)[a-z]/g, (char: string) => char.toUpperCase());\n}\n\nexport type Gradients = { [percent: string]: string };\nexport type FromTo = { from: string; to: string };\nexport type LinearGradient = { direction?: string } & (Gradients | FromTo);\nexport function getBackgroundColor(color: string | string[] | LinearGradient): string {\n  if (isString(color)) {\n    return color;\n  }\n  if (isArray(color)) {\n    if (color[0] && color[0][0] === '#') {\n      color.unshift('90deg');\n    }\n    return `linear-gradient( ${color.join(',')} )`;\n  }\n  const {\n    from, to, direction = 'to right', ...rest\n  } = color;\n  let keys = Object.keys(rest);\n  if (keys.length) {\n    keys = keys.sort((a, b) => {\n      const c = parseFloat(a.substr(0, a.length - 1)) - parseFloat(b.substr(0, b.length - 1));\n      return c;\n    });\n    const tempArr = keys.map((key: any) => `${rest[key]} ${key}`);\n    return `linear-gradient(${direction}, ${tempArr.join(',')})`;\n  }\n  return `linear-gradient(${direction}, ${from}, ${to})`;\n}\n\n/**\n *\n * @returns 获取 ie 浏览器版本\n */\nexport function getIEVersion() {\n  if (typeof navigator === 'undefined' || !navigator) return Number.MAX_SAFE_INTEGER;\n\n  const { userAgent } = navigator;\n  // 判断是否IE<11浏览器\n  const isIE = userAgent.indexOf('compatible') > -1 && userAgent.indexOf('MSIE') > -1;\n  // 判断是否IE11浏览器\n  const isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf('rv:11.0') > -1;\n  if (isIE) {\n    const reIE = new RegExp('MSIE (\\\\d+\\\\.\\\\d+);');\n    const match = userAgent.match(reIE);\n    if (!match) return -1;\n    const fIEVersion = parseFloat(match[1]);\n    return fIEVersion < 7 ? 6 : fIEVersion;\n  }\n  if (isIE11) {\n    // IE11\n    return 11;\n  }\n  // 不是ie浏览器\n  return Number.MAX_SAFE_INTEGER;\n}\n\n/**\n * 计算字符串字符的长度并可以截取字符串。\n * @param str 传入字符串\n * @param maxCharacter 规定最大字符串长度\n * @returns 当没有传入maxCharacter时返回字符串字符长度，当传入maxCharacter时返回截取之后的字符串和长度。\n */\nexport function getCharacterLength(str: string, maxCharacter?: number) {\n  const hasMaxCharacter = isNumber(maxCharacter);\n  if (!str || str.length === 0) {\n    if (hasMaxCharacter) {\n      return {\n        length: 0,\n        characters: str,\n      };\n    }\n    return 0;\n  }\n  let len = 0;\n  for (let i = 0; i < str.length; i++) {\n    let currentStringLength = 0;\n    if (str.charCodeAt(i) > 127 || str.charCodeAt(i) === 94) {\n      currentStringLength = 2;\n    } else {\n      currentStringLength = 1;\n    }\n    if (hasMaxCharacter && len + currentStringLength > maxCharacter) {\n      return {\n        length: len,\n        characters: str.slice(0, i),\n      };\n    }\n    len += currentStringLength;\n  }\n  if (hasMaxCharacter) {\n    return {\n      length: len,\n      characters: str,\n    };\n  }\n  return len;\n}\n\n/**\n * 返回 Unicode 字符长度\n * '👨'.length === 2\n * getUnicodeLength('👨') === 1\n * @param str\n * @returns {number}\n */\nexport function getUnicodeLength(str?: string): number {\n  return [...(str ?? '')].length;\n}\n\n/**\n * 修正 Unicode 最大字符长度\n * '👨👨👨'.slice(0, 2) === '👨'\n * limitUnicodeMaxLength('👨👨👨', 2) === '👨👨'\n * @param str\n * @param maxLength\n * @param oldStr\n * @returns {string}\n */\nexport function limitUnicodeMaxLength(\n  str?: string,\n  maxLength?: number,\n  oldStr?: string\n): string {\n  // 旧字符满足字数要求则返回\n  if ([...(oldStr ?? '')].slice().length === maxLength) return oldStr || '';\n  return [...(str ?? '')].slice(0, maxLength).join('');\n}\n\n/**\n * 兼容样式中支持number/string类型的传值 得出最后的结果。\n * @param param number或string类型的可用于样式上的值\n * @returns 可使用的样式值。\n */\nexport function pxCompat(param: string | number) {\n  return isNumber(param) ? `${param}px` : param;\n}\n\n/**\n * 计算dom元素盒模型尺寸\n * @param targetElement 需要计算盒模型尺寸的元素\n * @returns 计算出各维度尺寸。\n */\nconst DOM_STYLE_PROPS = [\n  'padding-top',\n  'padding-bottom',\n  'padding-left',\n  'padding-right',\n  'font-family',\n  'font-weight',\n  'font-size',\n  'font-variant',\n  'text-rendering',\n  'text-transform',\n  'width',\n  'text-indent',\n  'border-width',\n  'box-sizing',\n  'line-height',\n  'letter-spacing',\n];\n\nexport function calculateNodeSize(targetElement: HTMLElement) {\n  if (typeof window === 'undefined') {\n    return {\n      paddingSize: 0,\n      borderSize: 0,\n      boxSizing: 0,\n      sizingStyle: '',\n    };\n  }\n\n  const style = window.getComputedStyle(targetElement);\n\n  const boxSizing = style.getPropertyValue('box-sizing')\n    || style.getPropertyValue('-moz-box-sizing')\n    || style.getPropertyValue('-webkit-box-sizing');\n\n  const paddingSize = (\n    parseFloat(style.getPropertyValue('padding-bottom'))\n    + parseFloat(style.getPropertyValue('padding-top'))\n  );\n\n  const borderSize = (\n    parseFloat(style.getPropertyValue('border-bottom-width'))\n    + parseFloat(style.getPropertyValue('border-top-width'))\n  );\n\n  const sizingStyle = DOM_STYLE_PROPS\n    .map((name) => `${name}:${style.getPropertyValue(name)}`)\n    .join(';');\n\n  return {\n    paddingSize, borderSize, boxSizing, sizingStyle,\n  };\n}\n"],"names":["isUndefined","isNull","newObj","result","isString","isArray","color","direction","rest","isNumber","length","characters","currentStringLength","len","paddingSize","borderSize","boxSizing","sizingStyle"],"mappings":"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"}