wetrade-design
Version:
一款多语言支持Vue3的UI框架
208 lines (207 loc) • 5.96 kB
JavaScript
;
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);
};
}