1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports.formatCountdown = formatCountdown;
|
9 | exports.formatTimeStr = formatTimeStr;
|
10 |
|
11 | var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
12 |
|
13 | var _padStart = _interopRequireDefault(require("lodash/padStart"));
|
14 |
|
15 |
|
16 | var 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]
|
17 | ];
|
18 |
|
19 | function 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 |
|
50 | function 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 |