9d0a688c2b0f486dab2cfdc38c8be547febe47f47232d0a2899e1795d91324628f430db8eb96d885b1f4fa3747c5c3e957661ef63a3f371a7e79634e895187 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. 'use strict';
  2. exports.__esModule = true;
  3. var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
  4. exports.isNumeric = isNumeric;
  5. exports.rangeEach = rangeEach;
  6. exports.rangeEachReverse = rangeEachReverse;
  7. exports.valueAccordingPercent = valueAccordingPercent;
  8. /**
  9. * Checks if value of n is a numeric one
  10. * http://jsperf.com/isnan-vs-isnumeric/4
  11. * @param n
  12. * @returns {boolean}
  13. */
  14. function isNumeric(n) {
  15. /* eslint-disable */
  16. var t = typeof n === 'undefined' ? 'undefined' : _typeof(n);
  17. return t == 'number' ? !isNaN(n) && isFinite(n) : t == 'string' ? !n.length ? false : n.length == 1 ? /\d/.test(n) : /^\s*[+-]?\s*(?:(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?)|(?:0x[a-f\d]+))\s*$/i.test(n) : t == 'object' ? !!n && typeof n.valueOf() == 'number' && !(n instanceof Date) : false;
  18. }
  19. /**
  20. * A specialized version of `.forEach` defined by ranges.
  21. *
  22. * @param {Number} rangeFrom The number from start iterate.
  23. * @param {Number|Function} rangeTo The number where finish iterate or function as a iteratee.
  24. * @param {Function} [iteratee] The function invoked per iteration.
  25. */
  26. function rangeEach(rangeFrom, rangeTo, iteratee) {
  27. var index = -1;
  28. if (typeof rangeTo === 'function') {
  29. iteratee = rangeTo;
  30. rangeTo = rangeFrom;
  31. } else {
  32. index = rangeFrom - 1;
  33. }
  34. while (++index <= rangeTo) {
  35. if (iteratee(index) === false) {
  36. break;
  37. }
  38. }
  39. }
  40. /**
  41. * A specialized version of `.forEach` defined by ranges iterable in reverse order.
  42. *
  43. * @param {Number} rangeFrom The number from start iterate.
  44. * @param {Number} rangeTo The number where finish iterate.
  45. * @param {Function} iteratee The function invoked per iteration.
  46. */
  47. function rangeEachReverse(rangeFrom, rangeTo, iteratee) {
  48. var index = rangeFrom + 1;
  49. if (typeof rangeTo === 'function') {
  50. iteratee = rangeTo;
  51. rangeTo = 0;
  52. }
  53. while (--index >= rangeTo) {
  54. if (iteratee(index) === false) {
  55. break;
  56. }
  57. }
  58. }
  59. /**
  60. * Calculate value from percent.
  61. *
  62. * @param {Number} value Base value from percent will be calculated.
  63. * @param {String|Number} percent Can be Number or String (eq. `'33%'`).
  64. * @returns {Number}
  65. */
  66. function valueAccordingPercent(value, percent) {
  67. percent = parseInt(percent.toString().replace('%', ''), 10);
  68. percent = parseInt(value * percent / 100, 10);
  69. return percent;
  70. }