UNPKG

recharts

Version:
210 lines (171 loc) 5.19 kB
'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; Object.defineProperty(exports, "__esModule", { value: true }); var numberClass = '[object Number]'; var stringClass = '[object String]'; var arrayClass = '[object Array]'; var idStart = 0x0907; var isArray = Array.isArray || function (value) { return Object.prototype.toString.call(value) === arrayClass; }; var isString = function isString(value) { return typeof value === 'string' || value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && Object.prototype.toString.call(value) === stringClass || false; }; var isNumber = function isNumber(value) { return value === +value; }; var isFunction = function isFunction(value) { return typeof value === 'function'; }; var getUniqueId = function getUniqueId(prefix) { return (prefix || '_') + idStart++; }; /** * Generate a array of number which is greater than or equal to from and sma than less than to * @param {Number} from Start value * @param {Number} to End value * @return {Array} An array */ var range = function range(from, to) { var result = []; var n = from; while (n < to) { result.push(n); n += 1; } return result; }; /** * Get percent value of a total value * @param {Number|String} percent A percent * @param {Number} totalValue Total value * @param {NUmber} defaultValue The value returned when percent is undefined or invalid * @return {Number} value */ var getPercentValue = function getPercentValue(percent, totalValue) { var defaultValue = arguments.length <= 2 || arguments[2] === undefined ? 0 : arguments[2]; if (!isNumber(percent) && !isString(percent)) { return defaultValue; } var str = '' + percent; var index = str.indexOf('%'); var value = undefined; if (index > 0) { value = totalValue * parseFloat(str.slice(0, index)) / 100; } else if (percent === +percent) { value = percent; } if (isNaN(value) || value > totalValue) { value = totalValue; } return value; }; /** * Get all values of an object * @param {Object} obj An object * @return {Array} Array */ var getElementOfObject = function getElementOfObject(obj) { var keys = Object.keys(obj); return keys.length ? obj[keys[0]] : null; }; var maxBy = function maxBy(fn, a, b) { return fn(a) > fn(b) ? a : b; }; /** * Pad symbol * @param {number} num A number * @param {string} symbol pad sring * @return {array} the value after pad */ var pad = function pad(num, symbol) { var total = ''; var temp = num; while (temp > 0) { total += symbol; temp--; } return total; }; /** * Covert number to a string which has a fixed number of bits * @param {Object} num A number * @param {Object} fixed A number of bits * @return {String} result */ var toFixed = function toFixed(num) { var fixed = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1]; var fixedNum = num.toFixed(fixed + 1); var sNum = fixedNum + ''; var sep = sNum.split('.'); var pint = parseInt(sep[0], 10) || 0; var dec = '0'; var res = ''; if (sep[1] !== undefined && parseInt(sep[1], 10) !== 0) { dec = sep[1]; } if (parseInt(dec, 10) !== 0) { var fDec = parseFloat('0.' + dec); var fixedDec = Math.floor(fDec * Math.pow(10, fixed)) + ''; var len = fixedDec.length; if (fixed !== 0) { if (len === fixed + 1) { res = [pint + 1, pad(fixed, '0')].join('.'); } else if (len < fixed) { res = [pint, pad(fixed - len, '0') + fixedDec].join('.'); } else { res = [pint, fixedDec.substring(0, fixed)].join('.'); } } else { res = pint; } } else { if (fixed !== 0 && pint !== 0) { res = [pint, pad(fixed, '0')].join('.'); } else { res = pint; } } return res + ''; }; /** * convert a number to percentage * @param {Number} num A float number * @param {String} unit The unit of percentage * @param {Number} max The maximum value of percentage * @return {String} percentage */ var toPercentage = function toPercentage(num) { var unit = arguments.length <= 1 || arguments[1] === undefined ? '%' : arguments[1]; var max = arguments.length <= 2 || arguments[2] === undefined ? 99999 : arguments[2]; if (num !== +num) { return '-'; } var res = num || ''; var fixedNum = toFixed(num * 100, 2); var fNum = parseFloat(fixedNum); var iNum = parseInt(fixedNum, 10); // if (fNum > 100000) { if (fNum > max) { res = '>' + max; } else { if (fNum === iNum) { res = iNum; } else { res = fixedNum; } } res += unit; return res; }; exports.default = { isArray: isArray, isNumber: isNumber, isString: isString, isFunction: isFunction, maxBy: maxBy, getUniqueId: getUniqueId, range: range, getElementOfObject: getElementOfObject, getPercentValue: getPercentValue, toFixed: toFixed, toPercentage: toPercentage };