UNPKG

1.89 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports.formatCountdown = formatCountdown;
9exports.formatTimeStr = formatTimeStr;
10
11var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
13var _padStart = _interopRequireDefault(require("lodash/padStart"));
14
15// Countdown
16var timeUnits = [['Y', 1000 * 60 * 60 * 24 * 365], ['M', 1000 * 60 * 60 * 24 * 30], ['D', 1000 * 60 * 60 * 24], ['H', 1000 * 60 * 60], ['m', 1000 * 60], ['s', 1000], ['S', 1] // million seconds
17];
18
19function formatTimeStr(duration, format) {
20 var leftDuration = duration;
21 var escapeRegex = /\[[^\]]*]/g;
22 var keepList = (format.match(escapeRegex) || []).map(function (str) {
23 return str.slice(1, -1);
24 });
25 var templateText = format.replace(escapeRegex, '[]');
26 var replacedText = timeUnits.reduce(function (current, _ref) {
27 var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
28 name = _ref2[0],
29 unit = _ref2[1];
30
31 if (current.indexOf(name) !== -1) {
32 var value = Math.floor(leftDuration / unit);
33 leftDuration -= value * unit;
34 return current.replace(new RegExp("".concat(name, "+"), 'g'), function (match) {
35 var len = match.length;
36 return (0, _padStart.default)(value.toString(), len, '0');
37 });
38 }
39
40 return current;
41 }, templateText);
42 var index = 0;
43 return replacedText.replace(escapeRegex, function () {
44 var match = keepList[index];
45 index += 1;
46 return match;
47 });
48}
49
50function formatCountdown(value, config) {
51 var _config$format = config.format,
52 format = _config$format === void 0 ? '' : _config$format;
53 var target = new Date(value).getTime();
54 var current = Date.now();
55 var diff = Math.max(target - current, 0);
56 return formatTimeStr(diff, format);
57}
\No newline at end of file