UNPKG

20.4 kBJavaScriptView Raw
1'use strict';
2
3var addDays = require('date-fns/addDays');
4var addSeconds = require('date-fns/addSeconds');
5var addMinutes = require('date-fns/addMinutes');
6var addHours = require('date-fns/addHours');
7var addWeeks = require('date-fns/addWeeks');
8var addMonths = require('date-fns/addMonths');
9var addYears = require('date-fns/addYears');
10var differenceInYears = require('date-fns/differenceInYears');
11var differenceInQuarters = require('date-fns/differenceInQuarters');
12var differenceInMonths = require('date-fns/differenceInMonths');
13var differenceInWeeks = require('date-fns/differenceInWeeks');
14var differenceInDays = require('date-fns/differenceInDays');
15var differenceInHours = require('date-fns/differenceInHours');
16var differenceInMinutes = require('date-fns/differenceInMinutes');
17var differenceInSeconds = require('date-fns/differenceInSeconds');
18var differenceInMilliseconds = require('date-fns/differenceInMilliseconds');
19var eachDayOfInterval = require('date-fns/eachDayOfInterval');
20var endOfDay = require('date-fns/endOfDay');
21var endOfWeek = require('date-fns/endOfWeek');
22var endOfYear = require('date-fns/endOfYear');
23var format = require('date-fns/format');
24var getDate = require('date-fns/getDate');
25var getDay = require('date-fns/getDay');
26var getDaysInMonth = require('date-fns/getDaysInMonth');
27var getHours = require('date-fns/getHours');
28var getMinutes = require('date-fns/getMinutes');
29var getMonth = require('date-fns/getMonth');
30var getSeconds = require('date-fns/getSeconds');
31var getYear = require('date-fns/getYear');
32var isAfter = require('date-fns/isAfter');
33var isBefore = require('date-fns/isBefore');
34var isEqual = require('date-fns/isEqual');
35var isSameDay = require('date-fns/isSameDay');
36var isSameYear = require('date-fns/isSameYear');
37var isSameMonth = require('date-fns/isSameMonth');
38var isSameHour = require('date-fns/isSameHour');
39var isValid = require('date-fns/isValid');
40var dateFnsParse = require('date-fns/parse');
41var setDate = require('date-fns/setDate');
42var setHours = require('date-fns/setHours');
43var setMinutes = require('date-fns/setMinutes');
44var setMonth = require('date-fns/setMonth');
45var setSeconds = require('date-fns/setSeconds');
46var setYear = require('date-fns/setYear');
47var startOfDay = require('date-fns/startOfDay');
48var startOfMonth = require('date-fns/startOfMonth');
49var endOfMonth = require('date-fns/endOfMonth');
50var startOfWeek = require('date-fns/startOfWeek');
51var startOfYear = require('date-fns/startOfYear');
52var parseISO = require('date-fns/parseISO');
53var formatISO = require('date-fns/formatISO');
54var isWithinInterval = require('date-fns/isWithinInterval');
55var longFormatters = require('date-fns/_lib/format/longFormatters');
56var defaultLocale = require('date-fns/locale/en-US');
57
58function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
59
60var addDays__default = /*#__PURE__*/_interopDefaultLegacy(addDays);
61var addSeconds__default = /*#__PURE__*/_interopDefaultLegacy(addSeconds);
62var addMinutes__default = /*#__PURE__*/_interopDefaultLegacy(addMinutes);
63var addHours__default = /*#__PURE__*/_interopDefaultLegacy(addHours);
64var addWeeks__default = /*#__PURE__*/_interopDefaultLegacy(addWeeks);
65var addMonths__default = /*#__PURE__*/_interopDefaultLegacy(addMonths);
66var addYears__default = /*#__PURE__*/_interopDefaultLegacy(addYears);
67var differenceInYears__default = /*#__PURE__*/_interopDefaultLegacy(differenceInYears);
68var differenceInQuarters__default = /*#__PURE__*/_interopDefaultLegacy(differenceInQuarters);
69var differenceInMonths__default = /*#__PURE__*/_interopDefaultLegacy(differenceInMonths);
70var differenceInWeeks__default = /*#__PURE__*/_interopDefaultLegacy(differenceInWeeks);
71var differenceInDays__default = /*#__PURE__*/_interopDefaultLegacy(differenceInDays);
72var differenceInHours__default = /*#__PURE__*/_interopDefaultLegacy(differenceInHours);
73var differenceInMinutes__default = /*#__PURE__*/_interopDefaultLegacy(differenceInMinutes);
74var differenceInSeconds__default = /*#__PURE__*/_interopDefaultLegacy(differenceInSeconds);
75var differenceInMilliseconds__default = /*#__PURE__*/_interopDefaultLegacy(differenceInMilliseconds);
76var eachDayOfInterval__default = /*#__PURE__*/_interopDefaultLegacy(eachDayOfInterval);
77var endOfDay__default = /*#__PURE__*/_interopDefaultLegacy(endOfDay);
78var endOfWeek__default = /*#__PURE__*/_interopDefaultLegacy(endOfWeek);
79var endOfYear__default = /*#__PURE__*/_interopDefaultLegacy(endOfYear);
80var format__default = /*#__PURE__*/_interopDefaultLegacy(format);
81var getDate__default = /*#__PURE__*/_interopDefaultLegacy(getDate);
82var getDay__default = /*#__PURE__*/_interopDefaultLegacy(getDay);
83var getDaysInMonth__default = /*#__PURE__*/_interopDefaultLegacy(getDaysInMonth);
84var getHours__default = /*#__PURE__*/_interopDefaultLegacy(getHours);
85var getMinutes__default = /*#__PURE__*/_interopDefaultLegacy(getMinutes);
86var getMonth__default = /*#__PURE__*/_interopDefaultLegacy(getMonth);
87var getSeconds__default = /*#__PURE__*/_interopDefaultLegacy(getSeconds);
88var getYear__default = /*#__PURE__*/_interopDefaultLegacy(getYear);
89var isAfter__default = /*#__PURE__*/_interopDefaultLegacy(isAfter);
90var isBefore__default = /*#__PURE__*/_interopDefaultLegacy(isBefore);
91var isEqual__default = /*#__PURE__*/_interopDefaultLegacy(isEqual);
92var isSameDay__default = /*#__PURE__*/_interopDefaultLegacy(isSameDay);
93var isSameYear__default = /*#__PURE__*/_interopDefaultLegacy(isSameYear);
94var isSameMonth__default = /*#__PURE__*/_interopDefaultLegacy(isSameMonth);
95var isSameHour__default = /*#__PURE__*/_interopDefaultLegacy(isSameHour);
96var isValid__default = /*#__PURE__*/_interopDefaultLegacy(isValid);
97var dateFnsParse__default = /*#__PURE__*/_interopDefaultLegacy(dateFnsParse);
98var setDate__default = /*#__PURE__*/_interopDefaultLegacy(setDate);
99var setHours__default = /*#__PURE__*/_interopDefaultLegacy(setHours);
100var setMinutes__default = /*#__PURE__*/_interopDefaultLegacy(setMinutes);
101var setMonth__default = /*#__PURE__*/_interopDefaultLegacy(setMonth);
102var setSeconds__default = /*#__PURE__*/_interopDefaultLegacy(setSeconds);
103var setYear__default = /*#__PURE__*/_interopDefaultLegacy(setYear);
104var startOfDay__default = /*#__PURE__*/_interopDefaultLegacy(startOfDay);
105var startOfMonth__default = /*#__PURE__*/_interopDefaultLegacy(startOfMonth);
106var endOfMonth__default = /*#__PURE__*/_interopDefaultLegacy(endOfMonth);
107var startOfWeek__default = /*#__PURE__*/_interopDefaultLegacy(startOfWeek);
108var startOfYear__default = /*#__PURE__*/_interopDefaultLegacy(startOfYear);
109var parseISO__default = /*#__PURE__*/_interopDefaultLegacy(parseISO);
110var formatISO__default = /*#__PURE__*/_interopDefaultLegacy(formatISO);
111var isWithinInterval__default = /*#__PURE__*/_interopDefaultLegacy(isWithinInterval);
112var longFormatters__default = /*#__PURE__*/_interopDefaultLegacy(longFormatters);
113var defaultLocale__default = /*#__PURE__*/_interopDefaultLegacy(defaultLocale);
114
115var defaultFormats = {
116 dayOfMonth: "d",
117 fullDate: "PP",
118 fullDateWithWeekday: "PPPP",
119 fullDateTime: "PP p",
120 fullDateTime12h: "PP hh:mm aaa",
121 fullDateTime24h: "PP HH:mm",
122 fullTime: "p",
123 fullTime12h: "hh:mm aaa",
124 fullTime24h: "HH:mm",
125 hours12h: "hh",
126 hours24h: "HH",
127 keyboardDate: "P",
128 keyboardDateTime: "P p",
129 keyboardDateTime12h: "P hh:mm aaa",
130 keyboardDateTime24h: "P HH:mm",
131 minutes: "mm",
132 month: "LLLL",
133 monthAndDate: "MMMM d",
134 monthAndYear: "LLLL yyyy",
135 monthShort: "MMM",
136 weekday: "EEEE",
137 weekdayShort: "EEE",
138 normalDate: "d MMMM",
139 normalDateWithWeekday: "EEE, MMM d",
140 seconds: "ss",
141 shortDate: "MMM d",
142 year: "yyyy",
143};
144var DateFnsUtils = /** @class */ (function () {
145 function DateFnsUtils(_a) {
146 var _this = this;
147 var _b = _a === void 0 ? {} : _a, locale = _b.locale, formats = _b.formats;
148 this.lib = "date-fns";
149 // Note: date-fns input types are more lenient than this adapter, so we need to expose our more
150 // strict signature and delegate to the more lenient signature. Otherwise, we have downstream type errors upon usage.
151 this.is12HourCycleInCurrentLocale = function () {
152 if (_this.locale) {
153 return /a/.test(_this.locale.formatLong.time());
154 }
155 // By default date-fns is using en-US locale with am/pm enabled
156 return true;
157 };
158 this.getFormatHelperText = function (format) {
159 // @see https://github.com/date-fns/date-fns/blob/master/src/format/index.js#L31
160 var longFormatRegexp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;
161 var locale = _this.locale || defaultLocale__default["default"];
162 return format
163 .match(longFormatRegexp)
164 .map(function (token) {
165 var firstCharacter = token[0];
166 if (firstCharacter === "p" || firstCharacter === "P") {
167 var longFormatter = longFormatters__default["default"][firstCharacter];
168 return longFormatter(token, locale.formatLong, {});
169 }
170 return token;
171 })
172 .join("")
173 .replace(/(aaa|aa|a)/g, "(a|p)m")
174 .toLocaleLowerCase();
175 };
176 this.parseISO = function (isoString) {
177 return parseISO__default["default"](isoString);
178 };
179 this.toISO = function (value) {
180 return formatISO__default["default"](value, { format: "extended" });
181 };
182 this.getCurrentLocaleCode = function () {
183 var _a;
184 return ((_a = _this.locale) === null || _a === void 0 ? void 0 : _a.code) || "en-US";
185 };
186 this.addSeconds = function (value, count) {
187 return addSeconds__default["default"](value, count);
188 };
189 this.addMinutes = function (value, count) {
190 return addMinutes__default["default"](value, count);
191 };
192 this.addHours = function (value, count) {
193 return addHours__default["default"](value, count);
194 };
195 this.addDays = function (value, count) {
196 return addDays__default["default"](value, count);
197 };
198 this.addWeeks = function (value, count) {
199 return addWeeks__default["default"](value, count);
200 };
201 this.addMonths = function (value, count) {
202 return addMonths__default["default"](value, count);
203 };
204 this.addYears = function (value, count) {
205 return addYears__default["default"](value, count);
206 };
207 this.isValid = function (value) {
208 return isValid__default["default"](_this.date(value));
209 };
210 this.getDiff = function (value, comparing, unit) {
211 switch (unit) {
212 case "years":
213 return differenceInYears__default["default"](value, _this.date(comparing));
214 case "quarters":
215 return differenceInQuarters__default["default"](value, _this.date(comparing));
216 case "months":
217 return differenceInMonths__default["default"](value, _this.date(comparing));
218 case "weeks":
219 return differenceInWeeks__default["default"](value, _this.date(comparing));
220 case "days":
221 return differenceInDays__default["default"](value, _this.date(comparing));
222 case "hours":
223 return differenceInHours__default["default"](value, _this.date(comparing));
224 case "minutes":
225 return differenceInMinutes__default["default"](value, _this.date(comparing));
226 case "seconds":
227 return differenceInSeconds__default["default"](value, _this.date(comparing));
228 default: {
229 return differenceInMilliseconds__default["default"](value, _this.date(comparing));
230 }
231 }
232 };
233 this.isAfter = function (value, comparing) {
234 return isAfter__default["default"](value, comparing);
235 };
236 this.isBefore = function (value, comparing) {
237 return isBefore__default["default"](value, comparing);
238 };
239 this.startOfDay = function (value) {
240 return startOfDay__default["default"](value);
241 };
242 this.endOfDay = function (value) {
243 return endOfDay__default["default"](value);
244 };
245 this.getHours = function (value) {
246 return getHours__default["default"](value);
247 };
248 this.setHours = function (value, count) {
249 return setHours__default["default"](value, count);
250 };
251 this.setMinutes = function (value, count) {
252 return setMinutes__default["default"](value, count);
253 };
254 this.getSeconds = function (value) {
255 return getSeconds__default["default"](value);
256 };
257 this.setSeconds = function (value, count) {
258 return setSeconds__default["default"](value, count);
259 };
260 this.isSameDay = function (value, comparing) {
261 return isSameDay__default["default"](value, comparing);
262 };
263 this.isSameMonth = function (value, comparing) {
264 return isSameMonth__default["default"](value, comparing);
265 };
266 this.isSameYear = function (value, comparing) {
267 return isSameYear__default["default"](value, comparing);
268 };
269 this.isSameHour = function (value, comparing) {
270 return isSameHour__default["default"](value, comparing);
271 };
272 this.startOfYear = function (value) {
273 return startOfYear__default["default"](value);
274 };
275 this.endOfYear = function (value) {
276 return endOfYear__default["default"](value);
277 };
278 this.startOfMonth = function (value) {
279 return startOfMonth__default["default"](value);
280 };
281 this.endOfMonth = function (value) {
282 return endOfMonth__default["default"](value);
283 };
284 this.startOfWeek = function (value) {
285 return startOfWeek__default["default"](value, { locale: _this.locale });
286 };
287 this.endOfWeek = function (value) {
288 return endOfWeek__default["default"](value, { locale: _this.locale });
289 };
290 this.getYear = function (value) {
291 return getYear__default["default"](value);
292 };
293 this.setYear = function (value, count) {
294 return setYear__default["default"](value, count);
295 };
296 this.date = function (value) {
297 if (typeof value === "undefined") {
298 return new Date();
299 }
300 if (value === null) {
301 return null;
302 }
303 return new Date(value);
304 };
305 this.toJsDate = function (value) {
306 return value;
307 };
308 this.parse = function (value, formatString) {
309 if (value === "") {
310 return null;
311 }
312 return dateFnsParse__default["default"](value, formatString, new Date(), { locale: _this.locale });
313 };
314 this.format = function (date, formatKey) {
315 return _this.formatByString(date, _this.formats[formatKey]);
316 };
317 this.formatByString = function (date, formatString) {
318 return format__default["default"](date, formatString, { locale: _this.locale });
319 };
320 this.isEqual = function (date, comparing) {
321 if (date === null && comparing === null) {
322 return true;
323 }
324 return isEqual__default["default"](date, comparing);
325 };
326 this.isNull = function (date) {
327 return date === null;
328 };
329 this.isAfterDay = function (date, value) {
330 return isAfter__default["default"](date, endOfDay__default["default"](value));
331 };
332 this.isBeforeDay = function (date, value) {
333 return isBefore__default["default"](date, startOfDay__default["default"](value));
334 };
335 this.isBeforeYear = function (date, value) {
336 return isBefore__default["default"](date, startOfYear__default["default"](value));
337 };
338 this.isAfterYear = function (date, value) {
339 return isAfter__default["default"](date, endOfYear__default["default"](value));
340 };
341 this.isWithinRange = function (date, _a) {
342 var start = _a[0], end = _a[1];
343 return isWithinInterval__default["default"](date, { start: start, end: end });
344 };
345 this.formatNumber = function (numberToFormat) {
346 return numberToFormat;
347 };
348 this.getMinutes = function (date) {
349 return getMinutes__default["default"](date);
350 };
351 this.getDate = function (date) {
352 return getDate__default["default"](date);
353 };
354 this.setDate = function (date, count) {
355 return setDate__default["default"](date, count);
356 };
357 this.getMonth = function (date) {
358 return getMonth__default["default"](date);
359 };
360 this.getDaysInMonth = function (date) {
361 return getDaysInMonth__default["default"](date);
362 };
363 this.setMonth = function (date, count) {
364 return setMonth__default["default"](date, count);
365 };
366 this.getMeridiemText = function (ampm) {
367 return ampm === "am" ? "AM" : "PM";
368 };
369 this.getNextMonth = function (date) {
370 return addMonths__default["default"](date, 1);
371 };
372 this.getPreviousMonth = function (date) {
373 return addMonths__default["default"](date, -1);
374 };
375 this.getMonthArray = function (date) {
376 var firstMonth = startOfYear__default["default"](date);
377 var monthArray = [firstMonth];
378 while (monthArray.length < 12) {
379 var prevMonth = monthArray[monthArray.length - 1];
380 monthArray.push(_this.getNextMonth(prevMonth));
381 }
382 return monthArray;
383 };
384 this.mergeDateAndTime = function (date, time) {
385 return _this.setSeconds(_this.setMinutes(_this.setHours(date, _this.getHours(time)), _this.getMinutes(time)), _this.getSeconds(time));
386 };
387 this.getWeekdays = function () {
388 var now = new Date();
389 return eachDayOfInterval__default["default"]({
390 start: startOfWeek__default["default"](now, { locale: _this.locale }),
391 end: endOfWeek__default["default"](now, { locale: _this.locale }),
392 }).map(function (day) { return _this.formatByString(day, "EEEEEE"); });
393 };
394 this.getWeekArray = function (date) {
395 var start = startOfWeek__default["default"](startOfMonth__default["default"](date), { locale: _this.locale });
396 var end = endOfWeek__default["default"](endOfMonth__default["default"](date), { locale: _this.locale });
397 var count = 0;
398 var current = start;
399 var nestedWeeks = [];
400 var lastDay = null;
401 while (isBefore__default["default"](current, end)) {
402 var weekNumber = Math.floor(count / 7);
403 nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];
404 var day = getDay__default["default"](current);
405 if (lastDay !== day) {
406 lastDay = day;
407 nestedWeeks[weekNumber].push(current);
408 count += 1;
409 }
410 current = addDays__default["default"](current, 1);
411 }
412 return nestedWeeks;
413 };
414 this.getYearRange = function (start, end) {
415 var startDate = startOfYear__default["default"](start);
416 var endDate = endOfYear__default["default"](end);
417 var years = [];
418 var current = startDate;
419 while (isBefore__default["default"](current, endDate)) {
420 years.push(current);
421 current = addYears__default["default"](current, 1);
422 }
423 return years;
424 };
425 this.locale = locale;
426 this.formats = Object.assign({}, defaultFormats, formats);
427 }
428 return DateFnsUtils;
429}());
430
431module.exports = DateFnsUtils;