|
@@ -4,8 +4,7 @@
|
|
|
* Time: 14:03
|
|
|
*/
|
|
|
|
|
|
-
|
|
|
-export function uuid(before = '', after = '') {
|
|
|
+export function uuid (before = '', after = '') {
|
|
|
const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('')
|
|
|
const charsLen = chars.length
|
|
|
let uuid = []
|
|
@@ -16,101 +15,98 @@ export function uuid(before = '', after = '') {
|
|
|
return before + uuid.join('') + after
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-export function getOffset(evt, target = null) {
|
|
|
+export function getOffset (evt, target = null) {
|
|
|
const {
|
|
|
clientX,
|
|
|
clientY,
|
|
|
currentTarget
|
|
|
} = evt
|
|
|
-
|
|
|
+
|
|
|
const current = target || currentTarget
|
|
|
-
|
|
|
+
|
|
|
const {
|
|
|
left,
|
|
|
top
|
|
|
} = current.getBoundingClientRect()
|
|
|
-
|
|
|
+
|
|
|
return [clientX - left, clientY - top]
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-export function isIntersect({clientX, clientY}, target) {
|
|
|
+export function isIntersect ({clientX, clientY}, target) {
|
|
|
const {
|
|
|
top,
|
|
|
right,
|
|
|
bottom,
|
|
|
left
|
|
|
} = target.getBoundingClientRect()
|
|
|
-
|
|
|
- return top < clientY
|
|
|
- && right > clientX
|
|
|
- && bottom > clientY
|
|
|
- && left < clientX
|
|
|
-}
|
|
|
|
|
|
+ return top < clientY &&
|
|
|
+ right > clientX &&
|
|
|
+ bottom > clientY &&
|
|
|
+ left < clientX
|
|
|
+}
|
|
|
|
|
|
// 向量相加
|
|
|
-export function addVector(vectorA, vectorB) {
|
|
|
+export function addVector (vectorA, vectorB) {
|
|
|
return [vectorA[0] + vectorB[0], vectorA[1] + vectorB[1]]
|
|
|
}
|
|
|
|
|
|
// 向量乘以常量系数
|
|
|
-export function multiply(vector, k) {
|
|
|
+export function multiply (vector, k) {
|
|
|
return [vector[0] * k, vector[1] * k]
|
|
|
}
|
|
|
|
|
|
-export function differ(pointA, pointB) {
|
|
|
+export function differ (pointA, pointB) {
|
|
|
return [pointB[0] - pointA[0], pointB[1] - pointA[1]]
|
|
|
}
|
|
|
|
|
|
-export function minus(pointA, pointB) {
|
|
|
+export function minus (pointA, pointB) {
|
|
|
return [(pointA[0] || 0) - (pointB[0] || 0), (pointA[1] || 0) - (pointB[1] || 0)]
|
|
|
}
|
|
|
|
|
|
// 向量点积
|
|
|
-export function dotProduct(vectorA, vectorB) {
|
|
|
+export function dotProduct (vectorA, vectorB) {
|
|
|
return vectorA[0] * vectorB[0] + vectorA[1] * vectorB[1]
|
|
|
}
|
|
|
|
|
|
// 向量叉乘
|
|
|
-export function cross(vectorA, vectorB) {
|
|
|
+export function cross (vectorA, vectorB) {
|
|
|
return vectorA[0] * vectorB[1] - vectorA[1] * vectorB[0]
|
|
|
}
|
|
|
|
|
|
// 向量的单位向量
|
|
|
-export function unitVector(vector) {
|
|
|
+export function unitVector (vector) {
|
|
|
const 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) {
|
|
|
+export function equals (vector, target) {
|
|
|
return vector[0] === target[0] && vector[1] === target[1]
|
|
|
}
|
|
|
|
|
|
// 向量夹角
|
|
|
-export function angle(vector) {
|
|
|
+export function angle (vector) {
|
|
|
return Math.round(180 / Math.PI * Math.atan2(vector[1], vector[0])) + 180
|
|
|
}
|
|
|
|
|
|
// 判断向量是否平行
|
|
|
-export function parallel(vectorA, vectorB) {
|
|
|
+export function parallel (vectorA, vectorB) {
|
|
|
return vectorA[0] * vectorB[1] - vectorA[1] * vectorB[0] === 0
|
|
|
}
|
|
|
|
|
|
// 判断 y 轴相等
|
|
|
-export function yAxisEqual(vectorA, vectorB) {
|
|
|
+export function yAxisEqual (vectorA, vectorB) {
|
|
|
return vectorA[1] === vectorB[1]
|
|
|
}
|
|
|
|
|
|
// 判断 x 轴相等
|
|
|
-export function xAxisEqual(vectorA, vectorB) {
|
|
|
+export function xAxisEqual (vectorA, vectorB) {
|
|
|
return vectorA[0] === vectorB[0]
|
|
|
}
|
|
|
|
|
|
//
|
|
|
-export function vector(result) {
|
|
|
+export function vector (result) {
|
|
|
const handler = {
|
|
|
add: addVector,
|
|
|
multiply,
|
|
@@ -124,10 +120,10 @@ export function vector(result) {
|
|
|
parallel
|
|
|
}
|
|
|
const proxyHandler = {}
|
|
|
-
|
|
|
+
|
|
|
Object.keys(handler).forEach(key => {
|
|
|
Object.defineProperty(proxyHandler, key, {
|
|
|
- get() {
|
|
|
+ get () {
|
|
|
return function (val) {
|
|
|
result = handler[key](result, val)
|
|
|
return proxyHandler
|
|
@@ -135,50 +131,48 @@ export function vector(result) {
|
|
|
}
|
|
|
})
|
|
|
})
|
|
|
-
|
|
|
+
|
|
|
Object.defineProperty(proxyHandler, 'end', {
|
|
|
- get() {
|
|
|
+ get () {
|
|
|
return result
|
|
|
}
|
|
|
})
|
|
|
-
|
|
|
+
|
|
|
return proxyHandler
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-export function toRawType(val) {
|
|
|
+export function toRawType (val) {
|
|
|
return Object.prototype.toString.call(val).slice(8, -1).toLocaleLowerCase()
|
|
|
}
|
|
|
|
|
|
-export function isFun(val) {
|
|
|
+export function isFun (val) {
|
|
|
return toRawType(val) === 'function'
|
|
|
}
|
|
|
|
|
|
-export function isBool(val) {
|
|
|
+export function isBool (val) {
|
|
|
return toRawType(val) === 'boolean'
|
|
|
}
|
|
|
|
|
|
-export function isUndef(val) {
|
|
|
+export function isUndef (val) {
|
|
|
return toRawType(val) === 'undefined'
|
|
|
}
|
|
|
|
|
|
-export function isString(val) {
|
|
|
+export function isString (val) {
|
|
|
return toRawType(val) === 'string'
|
|
|
}
|
|
|
|
|
|
-export function isObject(val) {
|
|
|
+export function isObject (val) {
|
|
|
return toRawType(val) === 'object'
|
|
|
}
|
|
|
|
|
|
-export function arrayReplace(arr1, arr2) {
|
|
|
+export function arrayReplace (arr1, arr2) {
|
|
|
arr1.splice(0, arr1.length, ...arr2)
|
|
|
}
|
|
|
|
|
|
-export function debounce(fn, timestamp) {
|
|
|
+export function debounce (fn, timestamp) {
|
|
|
let timeout = null
|
|
|
return function () {
|
|
|
- if (timeout)
|
|
|
- clearTimeout(timeout)
|
|
|
+ if (timeout) { clearTimeout(timeout) }
|
|
|
timeout = setTimeout(fn, timestamp)
|
|
|
}
|
|
|
}
|