UNPKG

wetrade-design

Version:

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

208 lines (207 loc) 5.96 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.addVector = addVector; exports.angle = angle; exports.arrayReplace = arrayReplace; exports.cross = cross; exports.debounce = debounce; exports.differ = differ; exports.dotProduct = dotProduct; exports.equals = equals; exports.getOffset = getOffset; exports.isBool = isBool; exports.isFun = isFun; exports.isIntersect = isIntersect; exports.isObject = isObject; exports.isString = isString; exports.isUndef = isUndef; exports.mark = void 0; exports.minus = minus; exports.multiply = multiply; exports.parallel = parallel; exports.toRawType = toRawType; exports.unitVector = unitVector; exports.uuid = uuid; exports.vector = vector; exports.xAxisEqual = xAxisEqual; exports.yAxisEqual = yAxisEqual; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); /** * User: CHT * Date: 2020/5/8 * Time: 14:03 */ // 字段key 的 枚举 var mark = { relationMark: 'id', startMark: 'startId', endMark: 'endId' }; /** * @Description: 生成16位随机字符串(可自定义前后缀) * @param {*} before 前缀 * @param {*} after 后缀 * @return {*} */ exports.mark = mark; 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 {*} */ 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 {*} */ 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; } // 向量相加 function addVector(vectorA, vectorB) { return [vectorA[0] + vectorB[0], vectorA[1] + vectorB[1]]; } // 向量乘以常量系数 function multiply(vector, k) { return [vector[0] * k, vector[1] * k]; } function differ(pointA, pointB) { return [pointB[0] - pointA[0], pointB[1] - pointA[1]]; } function minus(pointA, pointB) { return [pointA[0] - pointB[0], pointA[1] - pointB[1]]; } // 向量点积 function dotProduct(vectorA, vectorB) { return vectorA[0] * vectorB[0] + vectorA[1] * vectorB[1]; } // 向量叉乘 function cross(vectorA, vectorB) { return vectorA[0] * vectorB[1] - vectorA[1] * vectorB[0]; } // 向量的单位向量 function unitVector(vector) { var m = Math.sqrt(vector[0] * vector[0] + vector[1] * vector[1]); return [vector[0] / m, vector[1] / m]; } // 判断向量 x,y 坐标相等 function equals(vector, target) { return vector[0] === target[0] && vector[1] === target[1]; } // 向量夹角 function angle(vector) { return Math.round(180 / Math.PI * Math.atan2(vector[1], vector[0])) + 180; } // 判断向量是否平行 function parallel(vectorA, vectorB) { return vectorA[0] * vectorB[1] - vectorA[1] * vectorB[0] === 0; } // 判断 y 轴相等 function yAxisEqual(vectorA, vectorB) { return vectorA[1] === vectorB[1]; } // 判断 x 轴相等 function xAxisEqual(vectorA, vectorB) { return vectorA[0] === vectorB[0]; } /** * @Description: 将result进行上述向量方法的链式调用计算,最后以`.end`返回对应结果 * @param {*} result * @return {*} */ 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; } function toRawType(val) { return Object.prototype.toString.call(val).slice(8, -1).toLocaleLowerCase(); } function isFun(val) { return toRawType(val) === 'function'; } function isBool(val) { return toRawType(val) === 'boolean'; } function isUndef(val) { return toRawType(val) === 'undefined'; } function isString(val) { return toRawType(val) === 'string'; } function isObject(val) { return toRawType(val) === 'object'; } function arrayReplace(arr1, arr2) { arr1.splice.apply(arr1, [0, arr1.length].concat((0, _toConsumableArray2.default)(arr2))); } function debounce(fn, timestamp) { var timeout = null; return function () { if (timeout) clearTimeout(timeout); timeout = setTimeout(fn, timestamp); }; }