UNPKG

1.77 kBPlain TextView Raw
1import React from 'react';
2import dayjs from 'dayjs';
3import localeData from 'dayjs/plugin/localeData';
4import utc from 'dayjs/plugin/utc';
5
6dayjs.extend(localeData);
7dayjs.extend(utc);
8
9const useSurroundingTimeUnits = (visibleDate: string) => {
10 return React.useMemo(() => {
11 const startOfMonth = dayjs(visibleDate).local().startOf('month');
12 const endOfMonth = dayjs(visibleDate).local().endOf('month');
13
14 const month = {
15 current: {
16 start: startOfMonth,
17 end: endOfMonth,
18 },
19 next: {
20 start: startOfMonth.add(1, 'month').startOf('month'),
21 end: endOfMonth.add(1, 'month').endOf('month'),
22 },
23 last: {
24 start: startOfMonth.subtract(1, 'month').startOf('month'),
25 end: endOfMonth.subtract(1, 'month').endOf('month'),
26 },
27 afterNext: startOfMonth.add(2, 'month'),
28 beforeLast: endOfMonth.subtract(2, 'month'),
29 };
30
31 const startOfYear = dayjs(visibleDate).local().startOf('year');
32 const endOfYear = dayjs(visibleDate).local().endOf('year');
33
34 const year = {
35 current: {
36 start: startOfYear,
37 end: endOfYear,
38 },
39 next: {
40 start: startOfYear.add(1, 'year').startOf('year'),
41 persistMonth: dayjs(visibleDate).local().add(1, 'year'),
42 end: endOfYear.add(1, 'year').endOf('year'),
43 },
44 last: {
45 start: startOfYear.subtract(1, 'year').startOf('year'),
46 persistMonth: dayjs(visibleDate).local().subtract(1, 'year'),
47 end: endOfYear.subtract(1, 'year').endOf('year'),
48 },
49 afterNext: startOfYear.add(2, 'year'),
50 beforeLast: endOfYear.subtract(2, 'year'),
51 };
52
53 return {
54 year,
55 month,
56 };
57 }, [visibleDate]);
58};
59
60export default useSurroundingTimeUnits;