utils.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
  6. var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
  7. exports.formatTimeStr = formatTimeStr;
  8. exports.formatCountdown = formatCountdown;
  9. var _moment = require('moment');
  10. var moment = _interopRequireWildcard(_moment);
  11. var _padStart = require('lodash/padStart');
  12. var _padStart2 = _interopRequireDefault(_padStart);
  13. var _interopDefault = require('../_util/interopDefault');
  14. var _interopDefault2 = _interopRequireDefault(_interopDefault);
  15. function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }
  16. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  17. // Countdown
  18. var timeUnits = [['Y', 1000 * 60 * 60 * 24 * 365], // years
  19. ['M', 1000 * 60 * 60 * 24 * 30], // months
  20. ['D', 1000 * 60 * 60 * 24], // days
  21. ['H', 1000 * 60 * 60], // hours
  22. ['m', 1000 * 60], // minutes
  23. ['s', 1000], // seconds
  24. ['S', 1]];
  25. function formatTimeStr(duration, format) {
  26. var leftDuration = duration;
  27. var escapeRegex = /\[[^\]]*\]/g;
  28. var keepList = (format.match(escapeRegex) || []).map(function (str) {
  29. return str.slice(1, -1);
  30. });
  31. var templateText = format.replace(escapeRegex, '[]');
  32. var replacedText = timeUnits.reduce(function (current, _ref) {
  33. var _ref2 = (0, _slicedToArray3['default'])(_ref, 2),
  34. name = _ref2[0],
  35. unit = _ref2[1];
  36. if (current.indexOf(name) !== -1) {
  37. var value = Math.floor(leftDuration / unit);
  38. leftDuration -= value * unit;
  39. return current.replace(new RegExp(name + '+', 'g'), function (match) {
  40. var len = match.length;
  41. return (0, _padStart2['default'])(value.toString(), len, '0');
  42. });
  43. }
  44. return current;
  45. }, templateText);
  46. var index = 0;
  47. return replacedText.replace(escapeRegex, function () {
  48. var match = keepList[index];
  49. index += 1;
  50. return match;
  51. });
  52. }
  53. function formatCountdown(value, config) {
  54. var _config$format = config.format,
  55. format = _config$format === undefined ? '' : _config$format;
  56. var target = (0, _interopDefault2['default'])(moment)(value).valueOf();
  57. var current = (0, _interopDefault2['default'])(moment)().valueOf();
  58. var diff = Math.max(target - current, 0);
  59. return formatTimeStr(diff, format);
  60. }