UNPKG

@zhsz/cool-design-dv

Version:

73 lines (72 loc) 2.53 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const lodashEs = require("lodash-es"); const raFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || function(callback) { return window.setTimeout(callback, 1e3 / 60); }; const requestAnimationFrame = raFrame; const cancelAnimationFrame = window.cancelAnimationFrame || window.webkitRequestAnimationFrame || function(id) { window.clearTimeout(id); }; function debounce(fn, delay = 20, isImmediate = false, context = this) { let timer; return function() { const _args = [].slice.call(arguments); clearTimeout(timer); const _fn = function() { timer = null; if (!isImmediate) fn.apply(context, _args); }; const callNow = !timer && isImmediate; timer = setTimeout(_fn, delay); if (callNow) fn.apply(context, _args); }; } function uid() { const rnd = Math.floor(Math.random() * 1e3); const timestamp = (/* @__PURE__ */ new Date()).getTime(); return [timestamp, rnd].join(""); } function cloneDeep(value) { return lodashEs.cloneDeep(value); } function mulAdd(nums) { nums = filterNonNumber(nums); return nums.reduce((all, num) => all + num, 0); } function filterNonNumber(array) { return array.filter((n) => typeof n === "number"); } function getTwoPointDistance(pointOne, pointTwo) { const minusX = Math.abs(pointOne[0] - pointTwo[0]); const minusY = Math.abs(pointOne[1] - pointTwo[1]); return Math.sqrt(minusX * minusX + minusY * minusY); } function getPolylineLength(points) { const lineSegments = new Array(points.length - 1).fill(0).map((foo, i) => [points[i], points[i + 1]]); const lengths = lineSegments.map((item) => getTwoPointDistance(...item)); return mulAdd(lengths); } function random(min, max) { if (arguments.length === 1) { return Math.floor(Math.random() * min + 1); } else { return Math.floor(Math.random() * (max - min + 1) + min); } } function getCircleRadianPoint(x, y, radius, radian) { return [x + Math.cos(radian) * radius, y + Math.sin(radian) * radius]; } exports.cancelAnimationFrame = cancelAnimationFrame; exports.cloneDeep = cloneDeep; exports.debounce = debounce; exports.filterNonNumber = filterNonNumber; exports.getCircleRadianPoint = getCircleRadianPoint; exports.getPolylineLength = getPolylineLength; exports.getTwoPointDistance = getTwoPointDistance; exports.mulAdd = mulAdd; exports.random = random; exports.requestAnimationFrame = requestAnimationFrame; exports.uid = uid;