UNPKG

wetrade-design

Version:

一款多语言支持Vue3的UI框架

176 lines 5.2 kB
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray"; /** * User: CHT * Date: 2020/5/8 * Time: 14:03 */ // 字段key 的 枚举 export var mark = { relationMark: 'id', startMark: 'startId', endMark: 'endId' }; /** * @Description: 生成16位随机字符串(可自定义前后缀) * @param {*} before 前缀 * @param {*} after 后缀 * @return {*} */ export function uuid() { var before = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var after = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); var charsLen = chars.length; var uuid = []; var len = 16; for (var i = 0; i < len; i++) { uuid[i] = chars[0 | Math.random() * charsLen]; } return before + uuid.join('') + after; } /** * @Description: 获取元素的偏移量(距离视窗) * @param {*} evt * @param {*} target * @return {*} */ export function getOffset(evt) { var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; var clientX = evt.clientX, clientY = evt.clientY, currentTarget = evt.currentTarget; var current = target || currentTarget; var _current$getBoundingC = current.getBoundingClientRect(), left = _current$getBoundingC.left, top = _current$getBoundingC.top; var scrollLeft = target && target.scrollLeft || 0; var scrollTop = target && target.scrollTop || 0; return [clientX - left + scrollLeft, clientY - top + scrollTop]; } /** * @Description: 判断 传入的对象的clientX, clientY是否在 target中 * @param {*} param1 * @param {*} target * @return {*} */ export function isIntersect(_ref, target) { var clientX = _ref.clientX, clientY = _ref.clientY; var _target$getBoundingCl = target.getBoundingClientRect(), top = _target$getBoundingCl.top, right = _target$getBoundingCl.right, bottom = _target$getBoundingCl.bottom, left = _target$getBoundingCl.left; return top < clientY && right > clientX && bottom > clientY && left < clientX; } // 向量相加 export function addVector(vectorA, vectorB) { return [vectorA[0] + vectorB[0], vectorA[1] + vectorB[1]]; } // 向量乘以常量系数 export function multiply(vector, k) { return [vector[0] * k, vector[1] * k]; } export function differ(pointA, pointB) { return [pointB[0] - pointA[0], pointB[1] - pointA[1]]; } export function minus(pointA, pointB) { return [pointA[0] - pointB[0], pointA[1] - pointB[1]]; } // 向量点积 export function dotProduct(vectorA, vectorB) { return vectorA[0] * vectorB[0] + vectorA[1] * vectorB[1]; } // 向量叉乘 export function cross(vectorA, vectorB) { return vectorA[0] * vectorB[1] - vectorA[1] * vectorB[0]; } // 向量的单位向量 export function unitVector(vector) { var m = Math.sqrt(vector[0] * vector[0] + vector[1] * vector[1]); return [vector[0] / m, vector[1] / m]; } // 判断向量 x,y 坐标相等 export function equals(vector, target) { return vector[0] === target[0] && vector[1] === target[1]; } // 向量夹角 export function angle(vector) { return Math.round(180 / Math.PI * Math.atan2(vector[1], vector[0])) + 180; } // 判断向量是否平行 export function parallel(vectorA, vectorB) { return vectorA[0] * vectorB[1] - vectorA[1] * vectorB[0] === 0; } // 判断 y 轴相等 export function yAxisEqual(vectorA, vectorB) { return vectorA[1] === vectorB[1]; } // 判断 x 轴相等 export function xAxisEqual(vectorA, vectorB) { return vectorA[0] === vectorB[0]; } /** * @Description: 将result进行上述向量方法的链式调用计算,最后以`.end`返回对应结果 * @param {*} result * @return {*} */ export function vector(result) { var handler = { add: addVector, multiply: multiply, differ: differ, minus: minus, dotProduct: dotProduct, cross: cross, unitVector: unitVector, equals: equals, angle: angle, parallel: parallel }; var proxyHandler = {}; Object.keys(handler).forEach(function (key) { Object.defineProperty(proxyHandler, key, { get: function get() { return function (val) { result = handler[key](result, val); return proxyHandler; }; } }); }); Object.defineProperty(proxyHandler, 'end', { get: function get() { return result; } }); return proxyHandler; } export function toRawType(val) { return Object.prototype.toString.call(val).slice(8, -1).toLocaleLowerCase(); } export function isFun(val) { return toRawType(val) === 'function'; } export function isBool(val) { return toRawType(val) === 'boolean'; } export function isUndef(val) { return toRawType(val) === 'undefined'; } export function isString(val) { return toRawType(val) === 'string'; } export function isObject(val) { return toRawType(val) === 'object'; } export function arrayReplace(arr1, arr2) { arr1.splice.apply(arr1, [0, arr1.length].concat(_toConsumableArray(arr2))); } export function debounce(fn, timestamp) { var timeout = null; return function () { if (timeout) clearTimeout(timeout); timeout = setTimeout(fn, timestamp); }; }