convert.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. 'use strict';
  2. exports.__esModule = true;
  3. exports.default = function (number, unit, _ref) {
  4. var time = _ref.time,
  5. length = _ref.length,
  6. angle = _ref.angle;
  7. var value = dropLeadingZero(number) + (unit ? unit : '');
  8. var converted = void 0;
  9. if (length !== false && unit in lengthConv) {
  10. converted = transform(number, unit, lengthConv);
  11. }
  12. if (time !== false && unit in timeConv) {
  13. converted = transform(number, unit, timeConv);
  14. }
  15. if (angle !== false && unit in angleConv) {
  16. converted = transform(number, unit, angleConv);
  17. }
  18. if (converted && converted.length < value.length) {
  19. value = converted;
  20. }
  21. return value;
  22. };
  23. var lengthConv = {
  24. in: 96,
  25. px: 1,
  26. pt: 4 / 3,
  27. pc: 16
  28. };
  29. var timeConv = {
  30. s: 1000,
  31. ms: 1
  32. };
  33. var angleConv = {
  34. turn: 360,
  35. deg: 1
  36. };
  37. function dropLeadingZero(number) {
  38. var value = String(number);
  39. if (number % 1) {
  40. if (value[0] === '0') {
  41. return value.slice(1);
  42. }
  43. if (value[0] === '-' && value[1] === '0') {
  44. return '-' + value.slice(2);
  45. }
  46. }
  47. return value;
  48. }
  49. function transform(number, unit, conversion) {
  50. var one = void 0,
  51. base = void 0;
  52. var convertionUnits = Object.keys(conversion).filter(function (u) {
  53. if (conversion[u] === 1) {
  54. one = u;
  55. }
  56. return unit !== u;
  57. });
  58. if (unit === one) {
  59. base = number / conversion[unit];
  60. } else {
  61. base = number * conversion[unit];
  62. }
  63. return convertionUnits.map(function (u) {
  64. return dropLeadingZero(base / conversion[u]) + u;
  65. }).reduce(function (a, b) {
  66. return a.length < b.length ? a : b;
  67. });
  68. }
  69. module.exports = exports['default'];