{"version":3,"file":"util.mjs","sources":["../../../../packages/utils/util.ts"],"sourcesContent":["// import Vue from 'vue';\nimport { JSEncrypt } from './jsencrypt'\nimport { isString, isObject } from './types'\n\nconst publicRSAKey =\n\t'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqDGLO0hs6YmJ6CXaKaHOxii8EcwAcWyPlVGtEW+SOed2UZV/QD5tMdLIS35qG6ufATQBr7ehFwxxtSxaWWOaze6PlEHvnk7yBX/Ey09QdRPez8t4SRsFEcIM6eA47Rbcu6WlqU6v1eq97XmkToNmaOQLpb3bhpHnm/X/th1scFwIDAQAB'\nconst rtrim = /^(\\s|\\u00A0)+|(\\s|\\u00A0)+$/g\nconst hasOwnProperty = Object.prototype.hasOwnProperty\n\nexport function trim(text) {\n\treturn (text || '').replace(rtrim, '')\n}\n\nexport function noop() {}\n\nexport function hasOwn(obj, key) {\n\treturn hasOwnProperty.call(obj, key)\n}\n\nfunction extend(to, _from) {\n\tfor (const key in _from) {\n\t\tto[key] = _from[key]\n\t}\n\treturn to\n}\n\nexport function toObject(arr) {\n\tconst res = {}\n\tfor (let i = 0; i < arr.length; i++) {\n\t\tif (arr[i]) {\n\t\t\textend(res, arr[i])\n\t\t}\n\t}\n\treturn res\n}\n\nexport const getValueByPath = function (object, prop) {\n\tprop = prop || ''\n\tconst paths = prop.split('.')\n\tlet current = object\n\tlet result = null\n\tfor (let i = 0, j = paths.length; i < j; i++) {\n\t\tconst path = paths[i]\n\t\tif (!current) break\n\n\t\tif (i === j - 1) {\n\t\t\tresult = current[path]\n\t\t\tbreak\n\t\t}\n\t\tcurrent = current[path]\n\t}\n\treturn result\n}\n\nexport function getPropByPath(obj, path, strict) {\n\tlet tempObj = obj\n\tpath = path.replace(/\\[(\\w+)\\]/g, '.$1')\n\tpath = path.replace(/^\\./, '')\n\n\tconst keyArr = path.split('.')\n\tlet i = 0\n\tfor (let len = keyArr.length; i < len - 1; ++i) {\n\t\tif (!tempObj && !strict) break\n\t\tconst key = keyArr[i]\n\t\tif (key in tempObj) {\n\t\t\ttempObj = tempObj[key]\n\t\t} else {\n\t\t\tif (strict) {\n\t\t\t\tthrow new Error('please transfer a valid prop path to form item!')\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\treturn {\n\t\to: tempObj,\n\t\tk: keyArr[i],\n\t\tv: tempObj ? tempObj[keyArr[i]] : null,\n\t}\n}\n\nexport const generateId = function () {\n\treturn Math.floor(Math.random() * 10000)\n}\n\nexport const valueEquals = function (a, b) {\n\t// see: https://stackoverflow.com/questions/3115982/how-to-check-if-two-arrays-are-equal-with-javascript\n\tif (a === b) return true\n\tif (!(a instanceof Array)) return false\n\tif (!(b instanceof Array)) return false\n\tif (a.length !== b.length) return false\n\tfor (let i = 0; i !== a.length; ++i) {\n\t\tif (a[i] !== b[i]) return false\n\t}\n\treturn true\n}\n\nexport const escapeRegexpString = function (value) {\n\tif (typeof value === 'undefined') return ''\n\treturn String(value).replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n}\n\n// TODO: use native Array.find, Array.findIndex when IE support is dropped\nexport const arrayFindIndex = function (arr, pred) {\n\tfor (let i = 0; i !== arr.length; ++i) {\n\t\tif (pred(arr[i])) {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n\nexport const arrayFind = function (arr, pred) {\n\tconst idx = arrayFindIndex(arr, pred)\n\treturn idx !== -1 ? arr[idx] : undefined\n}\n\n// coerce truthy value to array\nexport const coerceTruthyValueToArray = function (val) {\n\tif (Array.isArray(val)) {\n\t\treturn val\n\t} else if (val) {\n\t\treturn [val]\n\t} else {\n\t\treturn []\n\t}\n}\n\n// TODO: vue3版本重构\n// export const isIE = function() {\n// \treturn !Vue.prototype.$isServer && !isNaN(Number(document.documentMode));\n// }\n\n// export const isEdge = function() {\n// \treturn !Vue.prototype.$isServer && navigator.userAgent.indexOf('Edge') > -1;\n// }\n\n// export const isFirefox = function() {\n// \treturn !Vue.prototype.$isServer && !!window.navigator.userAgent.match(/firefox/i);\n// }\n\nexport const autoprefixer = function (style) {\n\tif (typeof style !== 'object') return style\n\tconst rules = ['transform', 'transition', 'animation']\n\tconst prefixes = ['ms-', 'webkit-']\n\trules.forEach(function (rule) {\n\t\tconst value = style[rule]\n\t\tif (rule && value) {\n\t\t\tprefixes.forEach(function (prefix) {\n\t\t\t\tstyle[prefix + rule] = value\n\t\t\t})\n\t\t}\n\t})\n\treturn style\n}\n\nexport const kebabCase = function (str) {\n\tconst hyphenateRE = /([^-])([A-Z])/g\n\treturn str.replace(hyphenateRE, '$1-$2').replace(hyphenateRE, '$1-$2').toLowerCase()\n}\n\nexport const capitalize = function (str) {\n\tif (!isString(str)) return str\n\treturn str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nexport const looseEqual = function (a, b) {\n\tconst isObjectA = isObject(a)\n\tconst isObjectB = isObject(b)\n\tif (isObjectA && isObjectB) {\n\t\treturn JSON.stringify(a) === JSON.stringify(b)\n\t} else if (!isObjectA && !isObjectB) {\n\t\treturn String(a) === String(b)\n\t} else {\n\t\treturn false\n\t}\n}\n\nexport const arrayEquals = function (arrayA, arrayB) {\n\tarrayA = arrayA || []\n\tarrayB = arrayB || []\n\n\tif (arrayA.length !== arrayB.length) {\n\t\treturn false\n\t}\n\n\tfor (let i = 0; i < arrayA.length; i++) {\n\t\tif (!looseEqual(arrayA[i], arrayB[i])) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n\nexport const isEqual = function (value1, value2) {\n\tif (Array.isArray(value1) && Array.isArray(value2)) {\n\t\treturn arrayEquals(value1, value2)\n\t}\n\treturn looseEqual(value1, value2)\n}\n\nexport const isEmpty = function (val) {\n\t// null or undefined\n\tif (val == null) return true\n\n\tif (typeof val === 'boolean') return false\n\n\tif (typeof val === 'number') return !val\n\n\tif (val instanceof Error) return val.message === ''\n\n\tswitch (Object.prototype.toString.call(val)) {\n\t\t// String or Array\n\t\tcase '[object String]':\n\t\tcase '[object Array]':\n\t\t\treturn !val.length\n\n\t\t// Map or Set or File\n\t\tcase '[object File]':\n\t\tcase '[object Map]':\n\t\tcase '[object Set]': {\n\t\t\treturn !val.size\n\t\t}\n\t\t// Plain Object\n\t\tcase '[object Object]': {\n\t\t\treturn !Object.keys(val).length\n\t\t}\n\t}\n\n\treturn false\n}\n\nexport function rafThrottle(fn) {\n\tlet locked = false\n\treturn function (...args) {\n\t\tif (locked) return\n\t\tlocked = true\n\t\twindow.requestAnimationFrame(function () {\n\t\t\tfn.apply(this, args)\n\t\t\tlocked = false\n\t\t})\n\t}\n}\n\nexport function objToArray(obj) {\n\tif (Array.isArray(obj)) {\n\t\treturn obj\n\t}\n\treturn isEmpty(obj) ? [] : [obj]\n}\n\n/* RSA 加密算法  */\nexport function rsaEncryptByPublicKey(data, pubKey) {\n\tif (!data || !isString(data)) {\n\t\treturn data\n\t}\n\n\tconst key = pubKey || publicRSAKey\n\tif (!key || !isString(key)) {\n\t\treturn\n\t}\n\n\tconst encrypt = new JSEncrypt()\n\n\tif (encrypt) {\n\t\tencrypt.setPublicKey(key)\n\t\treturn encrypt.encrypt(data)\n\t} else {\n\t\treturn data\n\t}\n}\n\n// 生成UUID\nexport function generateUUID() {\n\tconst s = []\n\tconst hexDigits = '0123456789abcdef'\n\tfor (let i = 0; i < 36; i++) {\n\t\ts[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1)\n\t}\n\ts[14] = '4' // bits 12-15 of the time_hi_and_version field to 0010\n\ts[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1) // bits 6-7 of the clock_seq_hi_and_reserved to 01\n\ts[8] = s[13] = s[18] = s[23] = '-'\n\tconst uuid = s.join('')\n\treturn uuid\n}\n\n// 删除元素\nexport function removeElement(_element) {\n\tconst _parentElement = _element.parentNode\n\tif (_parentElement) {\n\t\t_parentElement.removeChild(_element)\n\t}\n}\n\n/**\n *\t判断是否是ipad 设备包括ipad Pro &ipad Air\n * @returns {boolean}\n */\nexport function isipadOS() {\n\treturn (\n\t\tnavigator.userAgent.match(/(iPad)/) ||\n\t\t(navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)\n\t)\n}\n\n// 深拷贝\nexport function deepClone(target, map = new WeakMap()) {\n\t// 处理基本数据类型和 null\n\tif (typeof target !== 'object' || target === null) {\n\t\treturn target\n\t}\n\n\t// 处理日期对象\n\tif (target instanceof Date) {\n\t\treturn new Date(target.getTime())\n\t}\n\n\t// 处理正则表达式\n\tif (target instanceof RegExp) {\n\t\treturn new RegExp(target)\n\t}\n\n\t// 处理 DOM 元素\n\tif (target instanceof Element) {\n\t\treturn target.cloneNode(true)\n\t}\n\n\t// 检查循环引用\n\tif (map.has(target)) {\n\t\treturn map.get(target)\n\t}\n\n\t// 创建新对象或数组\n\tconst clone = Array.isArray(target) ? [] : {}\n\tmap.set(target, clone)\n\n\t// 递归拷贝所有属性\n\tfor (const key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tclone[key] = deepClone(target[key], map)\n\t\t}\n\t}\n\n\treturn clone\n}\n"],"names":[],"mappings":"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"}