1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, '__esModule', { value: true });
|
4 |
|
5 | var slicedToArray = require('./slicedToArray-0711941d.js');
|
6 | require('./unsupportedIterableToArray-68db1d3b.js');
|
7 | require('./_commonjsHelpers-72d386ba.js');
|
8 | var dayjs_min = require('./dayjs.min-e07657bf.js');
|
9 |
|
10 | var UNITS = [['years', 'year'], ['months', 'month'], ['days', 'day'], ['hours', 'hour'], ['minutes', 'minute'], ['seconds', 'second']];
|
11 | var DEFAULT_UNITS = ['years', 'months', 'days', 'hours', 'minutes', 'seconds'];
|
12 |
|
13 |
|
14 |
|
15 | var difference = function difference(date1, date2) {
|
16 | var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
17 | var units = options.units || DEFAULT_UNITS;
|
18 | var maxUnits = options.maxUnits || -1;
|
19 | var keepLeadingZeros = maxUnits === -1 && options.keepLeadingZeros || false;
|
20 | var start = date2 > date1 ? date1 : date2;
|
21 |
|
22 | var getRightMostUnitIndex = function getRightMostUnitIndex() {
|
23 | return [].concat(UNITS).reverse().find(function (_ref) {
|
24 | var _ref2 = slicedToArray._slicedToArray(_ref, 1),
|
25 | unit = _ref2[0];
|
26 |
|
27 | return units.includes(unit);
|
28 | })[0];
|
29 | };
|
30 |
|
31 | return UNITS.reduce(function (result, _ref3, index) {
|
32 | var _ref4 = slicedToArray._slicedToArray(_ref3, 2),
|
33 | name = _ref4[0],
|
34 | unitName = _ref4[1];
|
35 |
|
36 | result[name] = null;
|
37 |
|
38 | if ((maxUnits === -1 || result.remainingUnits > 0) && units.includes(name)) {
|
39 | result[name] = result.remaining.diff(start, unitName);
|
40 | result.remaining = result.remaining.subtract(result[name], unitName);
|
41 | }
|
42 |
|
43 |
|
44 | if (!keepLeadingZeros && !result.seenNonZero) {
|
45 | if (result[name] === 0) {
|
46 | result[name] = null;
|
47 | } else {
|
48 | result.seenNonZero = true;
|
49 | }
|
50 | }
|
51 |
|
52 |
|
53 | if (result.remainingUnits > 0 && result.seenNonZero) {
|
54 | result.remainingUnits -= 1;
|
55 | }
|
56 |
|
57 |
|
58 | if (index === UNITS.length - 1) {
|
59 | delete result.remaining;
|
60 | delete result.remainingUnits;
|
61 | delete result.seenNonZero;
|
62 |
|
63 | if (Object.values(result).every(function (val) {
|
64 | return val === null;
|
65 | })) {
|
66 | result[getRightMostUnitIndex()] = 0;
|
67 | }
|
68 | }
|
69 |
|
70 | return result;
|
71 | }, {
|
72 | remaining: dayjs_min.dayjs(start === date1 ? date2 : date1),
|
73 | remainingUnits: maxUnits,
|
74 | seenNonZero: false
|
75 | });
|
76 | };
|
77 | var eachDayOfInterval = function eachDayOfInterval() {
|
78 | var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
79 | start = _ref5.start,
|
80 | end = _ref5.end;
|
81 |
|
82 | var startDate = dayjs_min.dayjs(start);
|
83 | var endDate = dayjs_min.dayjs(end);
|
84 |
|
85 | if (!startDate.isValid()) {
|
86 | throw new Error('Start date of interval is invalid');
|
87 | }
|
88 |
|
89 | if (!endDate.isValid()) {
|
90 | throw new Error('End date of interval is invalid');
|
91 | }
|
92 |
|
93 | startDate = startDate.startOf('day');
|
94 | endDate = endDate.startOf('day');
|
95 |
|
96 | if (startDate.isAfter(endDate)) {
|
97 | throw new Error('Start date of interval is after end date');
|
98 | }
|
99 |
|
100 | var interval = [];
|
101 |
|
102 | while (!startDate.isAfter(endDate)) {
|
103 | interval.push(startDate.toDate());
|
104 | startDate = startDate.add(1, 'day');
|
105 | }
|
106 |
|
107 | return interval;
|
108 | };
|
109 | var formatHtmlDatetime = function formatHtmlDatetime(date) {
|
110 | return dayjs_min.dayjs(date).toISOString();
|
111 | };
|
112 |
|
113 | exports.difference = difference;
|
114 | exports.eachDayOfInterval = eachDayOfInterval;
|
115 | exports.formatHtmlDatetime = formatHtmlDatetime;
|
116 |
|