UNPKG

@orca-fe/tools

Version:
63 lines (61 loc) 1.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.by = by; exports.ceilBy = void 0; exports.clamp = clamp; exports.decimalLength = decimalLength; exports.floorBy = void 0; exports.mix = mix; exports.roundBy = void 0; exports.toFixedNumber = toFixedNumber; function toFixedNumber(num, fractionDigits) { if (!Number.isNaN(Number(num))) { return Number(Number(num).toFixed(fractionDigits)); } return num; } function decimalLength(value) { var str = String(value); var pointPosition = str.indexOf('.'); if (pointPosition < 0) return 0; return str.length - pointPosition - 1; } function by(fn) { return function (divisor) { var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; var decimalLen = decimalLength(divisor); return function (num) { return toFixedNumber(fn((num + offset) / divisor) * divisor - offset, decimalLen); }; }; } var roundBy = exports.roundBy = by(Math.round); var floorBy = exports.floorBy = by(Math.floor); var ceilBy = exports.ceilBy = by(Math.ceil); /** * 把一个值限制在一个上限和下限之间 * @param _num 当前数字 * @param lower 最小值 * @param upper 最大值 */ function clamp(_num, lower, upper) { var num = _num; // eslint-disable-next-line no-self-compare if (num === num) { if (upper !== undefined) { // 如果上限制大于number,则number的值不变,反之,number赋值upper的值 num = num <= upper ? num : upper; } if (lower !== undefined) { // 同样的,如果下限值小于number,则number值不变,防止,number赋值lower的值 num = num >= lower ? num : lower; } } return num; } function mix(x, y, _a) { var a = clamp(_a, 0, 1); return x * (1 - a) + y * a; }