react-native-paper-dates 0.4.6 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. package/README.md +79 -22
  2. package/lib/commonjs/Date/AnimatedCrossView.js +9 -8
  3. package/lib/commonjs/Date/AnimatedCrossView.js.map +1 -1
  4. package/lib/commonjs/Date/AutoSizer.js +6 -5
  5. package/lib/commonjs/Date/AutoSizer.js.map +1 -1
  6. package/lib/commonjs/Date/Calendar.js +46 -39
  7. package/lib/commonjs/Date/Calendar.js.map +1 -1
  8. package/lib/commonjs/Date/CalendarEdit.js +32 -111
  9. package/lib/commonjs/Date/CalendarEdit.js.map +1 -1
  10. package/lib/commonjs/Date/CalendarHeader.js +23 -12
  11. package/lib/commonjs/Date/CalendarHeader.js.map +1 -1
  12. package/lib/commonjs/Date/DatePickerInput.js +93 -20
  13. package/lib/commonjs/Date/DatePickerInput.js.map +1 -1
  14. package/lib/commonjs/Date/DatePickerModal.js +2 -2
  15. package/lib/commonjs/Date/DatePickerModalContent.js +7 -4
  16. package/lib/commonjs/Date/DatePickerModalContent.js.map +1 -1
  17. package/lib/commonjs/Date/DatePickerModalContentHeader.js +43 -34
  18. package/lib/commonjs/Date/DatePickerModalContentHeader.js.map +1 -1
  19. package/lib/commonjs/Date/DatePickerModalHeader.js +12 -5
  20. package/lib/commonjs/Date/DatePickerModalHeader.js.map +1 -1
  21. package/lib/commonjs/Date/DatePickerModalHeaderBackground.js +6 -5
  22. package/lib/commonjs/Date/DatePickerModalHeaderBackground.js.map +1 -1
  23. package/lib/commonjs/Date/DateRangeInput.js +23 -24
  24. package/lib/commonjs/Date/DateRangeInput.js.map +1 -1
  25. package/lib/commonjs/Date/Day.js +7 -3
  26. package/lib/commonjs/Date/Day.js.map +1 -1
  27. package/lib/commonjs/Date/DayName.js +6 -5
  28. package/lib/commonjs/Date/DayName.js.map +1 -1
  29. package/lib/commonjs/Date/DayNames.js +7 -6
  30. package/lib/commonjs/Date/DayNames.js.map +1 -1
  31. package/lib/commonjs/Date/DayRange.js +9 -8
  32. package/lib/commonjs/Date/DayRange.js.map +1 -1
  33. package/lib/commonjs/Date/Month.js +59 -49
  34. package/lib/commonjs/Date/Month.js.map +1 -1
  35. package/lib/commonjs/Date/Swiper.js +35 -29
  36. package/lib/commonjs/Date/Swiper.js.map +1 -1
  37. package/lib/commonjs/Date/Swiper.native.js +29 -23
  38. package/lib/commonjs/Date/Swiper.native.js.map +1 -1
  39. package/lib/commonjs/Date/SwiperUtils.js +7 -6
  40. package/lib/commonjs/Date/SwiperUtils.js.map +1 -1
  41. package/lib/commonjs/Date/YearPicker.js +30 -20
  42. package/lib/commonjs/Date/YearPicker.js.map +1 -1
  43. package/lib/commonjs/Date/dateUtils.js +106 -37
  44. package/lib/commonjs/Date/dateUtils.js.map +1 -1
  45. package/lib/commonjs/Date/inputUtils.js +84 -0
  46. package/lib/commonjs/Date/inputUtils.js.map +1 -0
  47. package/lib/commonjs/TextInputMask.js +11 -10
  48. package/lib/commonjs/TextInputMask.js.map +1 -1
  49. package/lib/commonjs/Time/AmPmSwitcher.js +37 -19
  50. package/lib/commonjs/Time/AmPmSwitcher.js.map +1 -1
  51. package/lib/commonjs/Time/AnalogClock.js +25 -15
  52. package/lib/commonjs/Time/AnalogClock.js.map +1 -1
  53. package/lib/commonjs/Time/AnalogClockHours.js +17 -11
  54. package/lib/commonjs/Time/AnalogClockHours.js.map +1 -1
  55. package/lib/commonjs/Time/AnalogClockMinutes.js +7 -6
  56. package/lib/commonjs/Time/AnalogClockMinutes.js.map +1 -1
  57. package/lib/commonjs/Time/AnimatedClockSwitcher.js +8 -7
  58. package/lib/commonjs/Time/AnimatedClockSwitcher.js.map +1 -1
  59. package/lib/commonjs/Time/TimeInput.js +16 -12
  60. package/lib/commonjs/Time/TimeInput.js.map +1 -1
  61. package/lib/commonjs/Time/TimeInputs.js +12 -11
  62. package/lib/commonjs/Time/TimeInputs.js.map +1 -1
  63. package/lib/commonjs/Time/TimePicker.js +37 -15
  64. package/lib/commonjs/Time/TimePicker.js.map +1 -1
  65. package/lib/commonjs/Time/TimePickerModal.js +19 -15
  66. package/lib/commonjs/Time/TimePickerModal.js.map +1 -1
  67. package/lib/commonjs/Time/timeUtils.js +14 -9
  68. package/lib/commonjs/Time/timeUtils.js.map +1 -1
  69. package/lib/commonjs/index.js +66 -5
  70. package/lib/commonjs/index.js.map +1 -1
  71. package/lib/commonjs/translations/en.js +25 -0
  72. package/lib/commonjs/translations/en.js.map +1 -0
  73. package/lib/commonjs/translations/enGB.js +25 -0
  74. package/lib/commonjs/translations/enGB.js.map +1 -0
  75. package/lib/commonjs/translations/nl.js +25 -0
  76. package/lib/commonjs/translations/nl.js.map +1 -0
  77. package/lib/commonjs/translations/pl.js +25 -0
  78. package/lib/commonjs/translations/pl.js.map +1 -0
  79. package/lib/commonjs/translations/utils.js +31 -0
  80. package/lib/commonjs/translations/utils.js.map +1 -0
  81. package/lib/commonjs/utils.js +19 -9
  82. package/lib/commonjs/utils.js.map +1 -1
  83. package/lib/module/Date/AnimatedCrossView.js +7 -6
  84. package/lib/module/Date/AnimatedCrossView.js.map +1 -1
  85. package/lib/module/Date/AutoSizer.js +4 -3
  86. package/lib/module/Date/AutoSizer.js.map +1 -1
  87. package/lib/module/Date/Calendar.js +46 -39
  88. package/lib/module/Date/Calendar.js.map +1 -1
  89. package/lib/module/Date/CalendarEdit.js +28 -104
  90. package/lib/module/Date/CalendarEdit.js.map +1 -1
  91. package/lib/module/Date/CalendarHeader.js +19 -9
  92. package/lib/module/Date/CalendarHeader.js.map +1 -1
  93. package/lib/module/Date/DatePickerInput.js +88 -18
  94. package/lib/module/Date/DatePickerInput.js.map +1 -1
  95. package/lib/module/Date/DatePickerModalContent.js +5 -2
  96. package/lib/module/Date/DatePickerModalContent.js.map +1 -1
  97. package/lib/module/Date/DatePickerModalContentHeader.js +38 -30
  98. package/lib/module/Date/DatePickerModalContentHeader.js.map +1 -1
  99. package/lib/module/Date/DatePickerModalHeader.js +9 -3
  100. package/lib/module/Date/DatePickerModalHeader.js.map +1 -1
  101. package/lib/module/Date/DatePickerModalHeaderBackground.js +4 -3
  102. package/lib/module/Date/DatePickerModalHeaderBackground.js.map +1 -1
  103. package/lib/module/Date/DateRangeInput.js +22 -22
  104. package/lib/module/Date/DateRangeInput.js.map +1 -1
  105. package/lib/module/Date/Day.js +5 -1
  106. package/lib/module/Date/Day.js.map +1 -1
  107. package/lib/module/Date/DayName.js +4 -3
  108. package/lib/module/Date/DayName.js.map +1 -1
  109. package/lib/module/Date/DayNames.js +5 -4
  110. package/lib/module/Date/DayNames.js.map +1 -1
  111. package/lib/module/Date/DayRange.js +7 -6
  112. package/lib/module/Date/DayRange.js.map +1 -1
  113. package/lib/module/Date/Month.js +54 -45
  114. package/lib/module/Date/Month.js.map +1 -1
  115. package/lib/module/Date/Swiper.js +32 -26
  116. package/lib/module/Date/Swiper.js.map +1 -1
  117. package/lib/module/Date/Swiper.native.js +27 -21
  118. package/lib/module/Date/Swiper.native.js.map +1 -1
  119. package/lib/module/Date/SwiperUtils.js +5 -4
  120. package/lib/module/Date/SwiperUtils.js.map +1 -1
  121. package/lib/module/Date/YearPicker.js +28 -18
  122. package/lib/module/Date/YearPicker.js.map +1 -1
  123. package/lib/module/Date/dateUtils.js +78 -29
  124. package/lib/module/Date/dateUtils.js.map +1 -1
  125. package/lib/module/Date/inputUtils.js +70 -0
  126. package/lib/module/Date/inputUtils.js.map +1 -0
  127. package/lib/module/TextInputMask.js +9 -8
  128. package/lib/module/TextInputMask.js.map +1 -1
  129. package/lib/module/Time/AmPmSwitcher.js +35 -18
  130. package/lib/module/Time/AmPmSwitcher.js.map +1 -1
  131. package/lib/module/Time/AnalogClock.js +23 -14
  132. package/lib/module/Time/AnalogClock.js.map +1 -1
  133. package/lib/module/Time/AnalogClockHours.js +14 -9
  134. package/lib/module/Time/AnalogClockHours.js.map +1 -1
  135. package/lib/module/Time/AnalogClockMinutes.js +5 -4
  136. package/lib/module/Time/AnalogClockMinutes.js.map +1 -1
  137. package/lib/module/Time/AnimatedClockSwitcher.js +6 -5
  138. package/lib/module/Time/AnimatedClockSwitcher.js.map +1 -1
  139. package/lib/module/Time/TimeInput.js +14 -10
  140. package/lib/module/Time/TimeInput.js.map +1 -1
  141. package/lib/module/Time/TimeInputs.js +10 -9
  142. package/lib/module/Time/TimeInputs.js.map +1 -1
  143. package/lib/module/Time/TimePicker.js +32 -12
  144. package/lib/module/Time/TimePicker.js.map +1 -1
  145. package/lib/module/Time/TimePickerModal.js +17 -13
  146. package/lib/module/Time/TimePickerModal.js.map +1 -1
  147. package/lib/module/Time/timeUtils.js +5 -1
  148. package/lib/module/Time/timeUtils.js.map +1 -1
  149. package/lib/module/index.js +6 -0
  150. package/lib/module/index.js.map +1 -1
  151. package/lib/module/translations/en.js +18 -0
  152. package/lib/module/translations/en.js.map +1 -0
  153. package/lib/module/translations/enGB.js +18 -0
  154. package/lib/module/translations/enGB.js.map +1 -0
  155. package/lib/module/translations/nl.js +18 -0
  156. package/lib/module/translations/nl.js.map +1 -0
  157. package/lib/module/translations/pl.js +18 -0
  158. package/lib/module/translations/pl.js.map +1 -0
  159. package/lib/module/translations/utils.js +22 -0
  160. package/lib/module/translations/utils.js.map +1 -0
  161. package/lib/module/utils.js +11 -5
  162. package/lib/module/utils.js.map +1 -1
  163. package/lib/typescript/{src/Date → Date}/AnimatedCrossView.d.ts +0 -0
  164. package/lib/typescript/{src/Date → Date}/AutoSizer.d.ts +0 -0
  165. package/lib/typescript/{src/Date → Date}/Calendar.d.ts +5 -3
  166. package/lib/typescript/{src/Date → Date}/CalendarEdit.d.ts +3 -3
  167. package/lib/typescript/{src/Date → Date}/CalendarHeader.d.ts +1 -1
  168. package/lib/typescript/Date/DatePickerInput.d.ts +18 -0
  169. package/lib/typescript/{src/Date → Date}/DatePickerModal.d.ts +0 -0
  170. package/lib/typescript/{src/Date → Date}/DatePickerModalContent.d.ts +2 -1
  171. package/lib/typescript/{src/Date → Date}/DatePickerModalContentHeader.d.ts +4 -4
  172. package/lib/typescript/{src/Date → Date}/DatePickerModalHeader.d.ts +1 -0
  173. package/lib/typescript/{src/Date → Date}/DatePickerModalHeaderBackground.d.ts +0 -0
  174. package/lib/typescript/Date/DateRangeInput.d.ts +3 -0
  175. package/lib/typescript/{src/Date → Date}/Day.d.ts +0 -0
  176. package/lib/typescript/{src/Date → Date}/DayName.d.ts +0 -0
  177. package/lib/typescript/{src/Date → Date}/DayNames.d.ts +0 -0
  178. package/lib/typescript/{src/Date → Date}/DayRange.d.ts +0 -0
  179. package/lib/typescript/{src/Date → Date}/Month.d.ts +0 -0
  180. package/lib/typescript/{src/Date → Date}/Swiper.d.ts +0 -0
  181. package/lib/typescript/{src/Date → Date}/Swiper.native.d.ts +0 -0
  182. package/lib/typescript/{src/Date → Date}/SwiperUtils.d.ts +1 -1
  183. package/lib/typescript/{src/Date → Date}/Week.d.ts +0 -0
  184. package/lib/typescript/{src/Date → Date}/YearPicker.d.ts +0 -0
  185. package/lib/typescript/{src/Date → Date}/dateUtils.d.ts +15 -0
  186. package/lib/typescript/{src/Date → Date}/dateUtils.test.d.ts +0 -0
  187. package/lib/typescript/Date/inputUtils.d.ts +14 -0
  188. package/lib/typescript/TextInputMask.d.ts +11 -0
  189. package/lib/typescript/Time/AmPmSwitcher.d.ts +4 -0
  190. package/lib/typescript/{src/Time → Time}/AnalogClock.d.ts +1 -1
  191. package/lib/typescript/{src/Time → Time}/AnalogClockHours.d.ts +0 -0
  192. package/lib/typescript/{src/Time → Time}/AnalogClockMinutes.d.ts +0 -0
  193. package/lib/typescript/{src/Time → Time}/AnimatedClockSwitcher.d.ts +0 -0
  194. package/lib/typescript/{src/Time → Time}/TimeInput.d.ts +0 -0
  195. package/lib/typescript/{src/Time → Time}/TimeInputs.d.ts +1 -1
  196. package/lib/typescript/{src/Time → Time}/TimePicker.d.ts +4 -0
  197. package/lib/typescript/{src/Time → Time}/TimePickerModal.d.ts +1 -1
  198. package/lib/typescript/{src/Time → Time}/timeUtils.d.ts +0 -0
  199. package/lib/typescript/index.d.ts +13 -0
  200. package/lib/typescript/translations/en.d.ts +3 -0
  201. package/lib/typescript/translations/enGB.d.ts +3 -0
  202. package/lib/typescript/translations/nl.d.ts +3 -0
  203. package/lib/typescript/translations/pl.d.ts +3 -0
  204. package/lib/typescript/translations/utils.d.ts +18 -0
  205. package/lib/typescript/utils.d.ts +58 -0
  206. package/package.json +39 -38
  207. package/src/.DS_Store +0 -0
  208. package/src/Date/Calendar.tsx +14 -13
  209. package/src/Date/CalendarEdit.tsx +17 -121
  210. package/src/Date/CalendarHeader.tsx +18 -3
  211. package/src/Date/DatePickerInput.tsx +103 -25
  212. package/src/Date/DatePickerModalContent.tsx +5 -1
  213. package/src/Date/DatePickerModalContentHeader.tsx +26 -12
  214. package/src/Date/DatePickerModalHeader.tsx +8 -1
  215. package/src/Date/DateRangeInput.tsx +26 -17
  216. package/src/Date/Day.tsx +4 -0
  217. package/src/Date/Month.tsx +20 -44
  218. package/src/Date/Swiper.tsx +1 -0
  219. package/src/Date/SwiperUtils.ts +1 -1
  220. package/src/Date/YearPicker.tsx +6 -1
  221. package/src/Date/dateUtils.tsx +70 -9
  222. package/src/Date/inputUtils.ts +94 -0
  223. package/src/TextInputMask.tsx +10 -3
  224. package/src/Time/AmPmSwitcher.tsx +20 -11
  225. package/src/Time/AnalogClock.tsx +12 -14
  226. package/src/Time/AnalogClockHours.tsx +14 -5
  227. package/src/Time/AnalogClockMinutes.tsx +4 -1
  228. package/src/Time/TimeInput.tsx +3 -0
  229. package/src/Time/TimeInputs.tsx +1 -5
  230. package/src/Time/TimePicker.tsx +44 -22
  231. package/src/Time/TimePickerModal.tsx +4 -1
  232. package/src/Time/timeUtils.ts +4 -1
  233. package/src/index.tsx +7 -0
  234. package/src/translations/en.ts +20 -0
  235. package/src/translations/enGB.ts +20 -0
  236. package/src/translations/nl.ts +20 -0
  237. package/src/translations/pl.ts +21 -0
  238. package/src/translations/utils.ts +47 -0
  239. package/src/utils.ts +13 -5
  240. package/lib/typescript/src/Date/DatePickerInput.d.ts +0 -1
  241. package/lib/typescript/src/Date/DateRangeInput.d.ts +0 -1
  242. package/lib/typescript/src/TextInputMask.d.ts +0 -3
  243. package/lib/typescript/src/Time/AmPmSwitcher.d.ts +0 -4
  244. package/lib/typescript/src/index.d.ts +0 -6
  245. package/lib/typescript/src/utils.d.ts +0 -7
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import { StyleSheet, View } from 'react-native';
3
3
  import { IconButton, Text, useTheme, TouchableRipple } from 'react-native-paper';
4
4
  import Day, { EmptyDay } from './Day';
5
- import { addMonths, areDatesOnSameDay, daySize, getDaysInMonth, getFirstDayOfMonth, getRealIndex, getGridCount, isDateBetween, gridCounts, showWeekDay, startAtIndex, beginOffset, estimatedMonthHeight, isDateWithinOptionalRange, dateToUnix } from './dateUtils';
5
+ import { addMonths, areDatesOnSameDay, daySize, getDaysInMonth, getFirstDayOfMonth, getRealIndex, getGridCount, isDateBetween, gridCounts, showWeekDay, startAtIndex, beginOffset, estimatedMonthHeight, useRangeChecker } from './dateUtils';
6
6
  import { getCalendarHeaderHeight } from './CalendarHeader';
7
7
  import { dayNamesHeight } from './DayNames';
8
8
  import { useTextColorOnPrimary } from '../utils';
@@ -30,8 +30,10 @@ function Month(props) {
30
30
  const textColorOnPrimary = useTextColorOnPrimary();
31
31
  const realIndex = getRealIndex(index);
32
32
  const isHorizontal = scrollMode === 'horizontal';
33
- const validRangeStart = (validRange === null || validRange === void 0 ? void 0 : validRange.startDate) instanceof Date ? dateToUnix(new Date(validRange === null || validRange === void 0 ? void 0 : validRange.startDate.getFullYear(), validRange === null || validRange === void 0 ? void 0 : validRange.startDate.getMonth(), validRange === null || validRange === void 0 ? void 0 : validRange.startDate.getDate(), 0, 0, 0)) : undefined;
34
- const validRangeEnd = (validRange === null || validRange === void 0 ? void 0 : validRange.endDate) instanceof Date ? dateToUnix(new Date(validRange === null || validRange === void 0 ? void 0 : validRange.endDate.getFullYear(), validRange === null || validRange === void 0 ? void 0 : validRange.endDate.getMonth(), validRange === null || validRange === void 0 ? void 0 : validRange.endDate.getDate(), 23, 59, 59)) : undefined;
33
+ const {
34
+ isDisabled,
35
+ isWithinValidRange
36
+ } = useRangeChecker(validRange);
35
37
  const {
36
38
  monthName,
37
39
  month,
@@ -60,10 +62,11 @@ function Month(props) {
60
62
  month
61
63
  });
62
64
  const emptyDays = dayOfWeek;
63
- return monthGrid(index).map(({
64
- days,
65
- weekGrid
66
- }) => {
65
+ return monthGrid(index).map(_ref => {
66
+ let {
67
+ days,
68
+ weekGrid
69
+ } = _ref;
67
70
  return {
68
71
  weekIndex: weekGrid,
69
72
  generatedDays: days.map((_, dayIndex) => {
@@ -75,7 +78,7 @@ function Month(props) {
75
78
  const day = new Date(year, month, dayOfMonth);
76
79
  const isToday = areDatesOnSameDay(day, today);
77
80
  let inRange = false;
78
- let disabled = false;
81
+ let disabled = isDisabled(day);
79
82
  let selected = false;
80
83
  let leftCrop = dayOfMonth === 1;
81
84
  let rightCrop = dayOfMonth === daysInMonth;
@@ -144,19 +147,14 @@ function Month(props) {
144
147
  if (inRange && !leftCrop && !rightCrop) {
145
148
  selected = false;
146
149
  }
147
- } //
148
-
150
+ }
149
151
  } else if (mode === 'single') {
150
152
  selected = areDatesOnSameDay(day, date);
151
- } //
152
-
153
+ }
153
154
 
154
- const isWithinOptionalValidRange = isDateWithinOptionalRange(day, {
155
- startUnix: validRangeStart,
156
- endUnix: validRangeEnd
157
- });
155
+ const isWithinOptionalValidRange = isWithinValidRange(day);
158
156
 
159
- if (inRange) {
157
+ if (inRange && !disabled) {
160
158
  disabled = false;
161
159
  }
162
160
 
@@ -182,7 +180,7 @@ function Month(props) {
182
180
  })
183
181
  };
184
182
  });
185
- }, [year, month, index, startDate, endDate, date, dates, validRangeStart, validRangeEnd, mode]);
183
+ }, [year, month, index, isDisabled, mode, isWithinValidRange, startDate, endDate, dates, date]);
186
184
  return /*#__PURE__*/React.createElement(View, {
187
185
  style: [styles.month, {
188
186
  height: getMonthHeight(scrollMode, index)
@@ -195,9 +193,14 @@ function Month(props) {
195
193
  }, /*#__PURE__*/React.createElement(TouchableRipple, {
196
194
  disabled: !isHorizontal,
197
195
  onPress: isHorizontal ? () => onPressYear(year) : undefined,
196
+ accessibilityRole: "button",
197
+ accessibilityLabel: `${monthName} ${year}`,
198
198
  style: [styles.yearButton, {
199
199
  borderRadius: roundness
200
- }]
200
+ }] // RN types bug
201
+ ,
202
+ hasTVPreferredFocus: undefined,
203
+ tvParallaxProperties: undefined
201
204
  }, /*#__PURE__*/React.createElement(View, {
202
205
  style: [styles.yearButtonInner, {
203
206
  borderRadius: roundness
@@ -209,32 +212,38 @@ function Month(props) {
209
212
  style: isHorizontal ? styles.opacity1 : styles.opacity0
210
213
  }, /*#__PURE__*/React.createElement(IconButton, {
211
214
  onPress: isHorizontal ? () => onPressYear(year) : undefined,
212
- icon: selectingYear ? 'chevron-up' : 'chevron-down'
213
- }))))), grid.map(({
214
- weekIndex,
215
- generatedDays
216
- }) => /*#__PURE__*/React.createElement(View, {
217
- style: styles.week,
218
- key: weekIndex
219
- }, generatedDays.filter(gd => showWeekDay(gd.dayIndex, disableWeekDays)).map(gd => gd.beforeWeekDay || gd.afterWeekDay ? /*#__PURE__*/React.createElement(EmptyDay, {
220
- key: gd.dayIndex
221
- }) : /*#__PURE__*/React.createElement(Day, {
222
- key: gd.dayIndex,
223
- theme: theme,
224
- day: gd.dayOfMonth,
225
- month: gd.month,
226
- year: gd.year,
227
- selected: gd.selected,
228
- inRange: gd.inRange,
229
- leftCrop: gd.leftCrop,
230
- rightCrop: gd.rightCrop,
231
- onPressDate: onPressDate,
232
- isToday: gd.isToday,
233
- selectColor: selectColor,
234
- primaryColor: primaryColor,
235
- disabled: gd.disabled,
236
- textColorOnPrimary: textColorOnPrimary
237
- })))));
215
+ icon: selectingYear ? 'chevron-up' : 'chevron-down' // RN types bug
216
+ ,
217
+ hasTVPreferredFocus: undefined,
218
+ tvParallaxProperties: undefined
219
+ }))))), grid.map(_ref2 => {
220
+ let {
221
+ weekIndex,
222
+ generatedDays
223
+ } = _ref2;
224
+ return /*#__PURE__*/React.createElement(View, {
225
+ style: styles.week,
226
+ key: weekIndex
227
+ }, generatedDays.filter(gd => showWeekDay(gd.dayIndex, disableWeekDays)).map(gd => gd.beforeWeekDay || gd.afterWeekDay ? /*#__PURE__*/React.createElement(EmptyDay, {
228
+ key: gd.dayIndex
229
+ }) : /*#__PURE__*/React.createElement(Day, {
230
+ key: gd.dayIndex,
231
+ theme: theme,
232
+ day: gd.dayOfMonth,
233
+ month: gd.month,
234
+ year: gd.year,
235
+ selected: gd.selected,
236
+ inRange: gd.inRange,
237
+ leftCrop: gd.leftCrop,
238
+ rightCrop: gd.rightCrop,
239
+ onPressDate: onPressDate,
240
+ isToday: gd.isToday,
241
+ selectColor: selectColor,
242
+ primaryColor: primaryColor,
243
+ disabled: gd.disabled,
244
+ textColorOnPrimary: textColorOnPrimary
245
+ })));
246
+ }));
238
247
  }
239
248
 
240
249
  export const weekMargin = 6;
@@ -1 +1 @@
1
- {"version":3,"sources":["Month.tsx"],"names":["React","StyleSheet","View","IconButton","Text","useTheme","TouchableRipple","Day","EmptyDay","addMonths","areDatesOnSameDay","daySize","getDaysInMonth","getFirstDayOfMonth","getRealIndex","getGridCount","isDateBetween","gridCounts","showWeekDay","startAtIndex","beginOffset","estimatedMonthHeight","isDateWithinOptionalRange","dateToUnix","getCalendarHeaderHeight","dayNamesHeight","useTextColorOnPrimary","Month","props","index","mode","date","dates","startDate","endDate","onPressYear","selectingYear","onPressDate","scrollMode","primaryColor","selectColor","roundness","disableWeekDays","locale","validRange","theme","textColorOnPrimary","realIndex","isHorizontal","validRangeStart","Date","getFullYear","getMonth","getDate","undefined","validRangeEnd","monthName","month","year","useMemo","md","y","m","formatter","Intl","DateTimeFormat","format","grid","today","daysInMonth","dayOfWeek","emptyDays","monthGrid","map","days","weekGrid","weekIndex","generatedDays","_","dayIndex","isFirstWeek","realDayIndex","beforeWeekDay","dayOfMonth","afterWeekDay","day","isToday","inRange","disabled","selected","leftCrop","rightCrop","isFirstDayOfMonth","isLastDayOfMonth","selectedStartDay","selectedEndDay","safeDates","some","d","yesterday","tomorrow","yesterdaySelected","tomorrowSelected","isWithinOptionalValidRange","startUnix","endUnix","styles","height","getMonthHeight","monthHeader","marginTop","monthHeaderSingleMarginTop","marginBottom","monthHeaderSingleMarginBottom","yearButton","borderRadius","yearButtonInner","monthLabel","fonts","medium","opacity1","opacity0","week","filter","gd","weekMargin","weekSize","montHeaderHeight","monthHeaderSingleHeight","create","flexDirection","justifyContent","overflow","fontSize","opacity","alignSelf","marginLeft","paddingLeft","alignItems","Array","fill","getIndexCount","weeksOffset","off","i","cIndex","getIndexFromHorizontalOffset","offset","width","Math","floor","getIndexFromVerticalOffset","estimatedIndex","ceil","realOffset","getVerticalMonthsOffset","difference","getHorizontalMonthOffset","count","ob","monthsHeight","c","calendarHeight","gc","currentMonthHeight","extraHeight","memo"],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { StyleSheet, View } from 'react-native'\nimport { IconButton, Text, useTheme, TouchableRipple } from 'react-native-paper'\nimport Day, { EmptyDay } from './Day'\n\nimport {\n addMonths,\n areDatesOnSameDay,\n daySize,\n DisableWeekDaysType,\n getDaysInMonth,\n getFirstDayOfMonth,\n getRealIndex,\n getGridCount,\n isDateBetween,\n gridCounts,\n showWeekDay,\n startAtIndex,\n beginOffset,\n estimatedMonthHeight,\n isDateWithinOptionalRange,\n dateToUnix,\n} from './dateUtils'\nimport { getCalendarHeaderHeight } from './CalendarHeader'\nimport type {\n CalendarDate,\n CalendarDates,\n ModeType,\n ValidRangeType,\n} from './Calendar'\nimport { dayNamesHeight } from './DayNames'\nimport { useTextColorOnPrimary } from '../utils'\n\ninterface BaseMonthProps {\n locale: undefined | string\n scrollMode: 'horizontal' | 'vertical'\n disableWeekDays?: DisableWeekDaysType\n mode: ModeType\n index: number\n onPressYear: (year: number) => any\n selectingYear: boolean\n onPressDate: (date: Date) => any\n primaryColor: string\n selectColor: string\n roundness: number\n validRange?: ValidRangeType\n\n // some of these should be required in final implementation\n startDate?: CalendarDate\n endDate?: CalendarDate\n date?: CalendarDate\n dates?: CalendarDates\n}\n\ninterface MonthRangeProps extends BaseMonthProps {\n mode: 'range'\n startDate: CalendarDate\n endDate: CalendarDate\n}\n\ninterface MonthSingleProps extends BaseMonthProps {\n mode: 'single'\n date: CalendarDate\n}\n\ninterface MonthMultiProps extends BaseMonthProps {\n mode: 'multiple'\n dates: CalendarDates\n}\n\nfunction Month(props: MonthSingleProps | MonthRangeProps | MonthMultiProps) {\n const {\n index,\n mode,\n date,\n dates,\n startDate,\n endDate,\n onPressYear,\n selectingYear,\n onPressDate,\n scrollMode,\n primaryColor,\n selectColor,\n roundness,\n disableWeekDays,\n locale,\n validRange,\n } = props\n const theme = useTheme()\n const textColorOnPrimary = useTextColorOnPrimary()\n const realIndex = getRealIndex(index)\n const isHorizontal = scrollMode === 'horizontal'\n\n const validRangeStart =\n validRange?.startDate instanceof Date\n ? dateToUnix(\n new Date(\n validRange?.startDate.getFullYear(),\n validRange?.startDate.getMonth(),\n validRange?.startDate.getDate(),\n 0,\n 0,\n 0\n )\n )\n : undefined\n\n const validRangeEnd =\n validRange?.endDate instanceof Date\n ? dateToUnix(\n new Date(\n validRange?.endDate.getFullYear(),\n validRange?.endDate.getMonth(),\n validRange?.endDate.getDate(),\n 23,\n 59,\n 59\n )\n )\n : undefined\n\n const { monthName, month, year } = React.useMemo(() => {\n const md = addMonths(new Date(), realIndex)\n const y = md.getFullYear()\n const m = md.getMonth()\n const formatter = new Intl.DateTimeFormat(locale, {\n month: 'long',\n })\n return { monthName: formatter.format(md), month: m, year: y }\n }, [realIndex, locale])\n\n const grid = React.useMemo(() => {\n const today = new Date()\n\n const daysInMonth = getDaysInMonth({ year, month })\n const dayOfWeek = getFirstDayOfMonth({ year, month })\n const emptyDays = dayOfWeek\n\n return monthGrid(index).map(({ days, weekGrid }) => {\n return {\n weekIndex: weekGrid,\n generatedDays: days.map((_, dayIndex) => {\n const isFirstWeek = weekGrid === 0\n const realDayIndex = emptyDays - dayIndex\n const beforeWeekDay = isFirstWeek && realDayIndex > 0\n const dayOfMonth = weekGrid * 7 + dayIndex - emptyDays + 1\n const afterWeekDay = dayOfMonth > daysInMonth\n\n const day = new Date(year, month, dayOfMonth)\n const isToday = areDatesOnSameDay(day, today)\n\n let inRange = false\n let disabled = false\n let selected = false\n let leftCrop = dayOfMonth === 1\n let rightCrop = dayOfMonth === daysInMonth\n\n const isFirstDayOfMonth = dayOfMonth === 1\n const isLastDayOfMonth = dayOfMonth === daysInMonth\n if (mode === 'range') {\n const selectedStartDay = areDatesOnSameDay(day, startDate)\n const selectedEndDay = areDatesOnSameDay(day, endDate)\n selected = selectedStartDay || selectedEndDay\n inRange = isDateBetween(day, {\n startDate,\n endDate,\n })\n if (selectedStartDay) {\n leftCrop = true\n }\n if (selectedEndDay) {\n rightCrop = true\n }\n if (dayIndex === 0 && !selectedStartDay) {\n leftCrop = false\n }\n\n if (dayIndex === 6 && !selectedEndDay) {\n rightCrop = false\n }\n\n if (\n (isFirstDayOfMonth && selectedEndDay) ||\n (isLastDayOfMonth && selectedStartDay)\n ) {\n inRange = false\n }\n } else if (mode === 'multiple') {\n const safeDates = dates || []\n selected = safeDates.some((d) => areDatesOnSameDay(day, d))\n\n const yesterday = new Date(year, month, dayOfMonth - 1)\n const tomorrow = new Date(year, month, dayOfMonth + 1)\n\n const yesterdaySelected = safeDates.some((d) =>\n areDatesOnSameDay(d, yesterday)\n )\n const tomorrowSelected = safeDates.some((d) =>\n areDatesOnSameDay(d, tomorrow)\n )\n\n if (selected) {\n if (tomorrowSelected && yesterdaySelected) {\n inRange = true\n }\n if (tomorrowSelected && !yesterdaySelected) {\n inRange = true\n leftCrop = true\n }\n\n if (yesterdaySelected && !tomorrowSelected) {\n inRange = true\n rightCrop = true\n }\n\n if (isFirstDayOfMonth && !tomorrowSelected) {\n inRange = false\n }\n\n if (isLastDayOfMonth && !yesterdaySelected) {\n inRange = false\n }\n\n if (inRange && !leftCrop && !rightCrop) {\n selected = false\n }\n }\n\n //\n } else if (mode === 'single') {\n selected = areDatesOnSameDay(day, date)\n }\n //\n const isWithinOptionalValidRange = isDateWithinOptionalRange(day, {\n startUnix: validRangeStart,\n endUnix: validRangeEnd,\n })\n\n if (inRange) {\n disabled = false\n }\n\n if (!isWithinOptionalValidRange) {\n disabled = true\n }\n\n return {\n beforeWeekDay,\n afterWeekDay,\n year,\n month,\n dayOfMonth,\n dayIndex,\n mode,\n selected,\n inRange,\n leftCrop,\n rightCrop,\n isToday,\n disabled,\n }\n }),\n }\n })\n }, [\n year,\n month,\n index,\n startDate,\n endDate,\n date,\n dates,\n validRangeStart,\n validRangeEnd,\n mode,\n ])\n\n return (\n <View style={[styles.month, { height: getMonthHeight(scrollMode, index) }]}>\n <View\n style={[\n styles.monthHeader,\n isHorizontal\n ? {\n marginTop: monthHeaderSingleMarginTop,\n marginBottom: monthHeaderSingleMarginBottom,\n }\n : null,\n ]}\n >\n <TouchableRipple\n disabled={!isHorizontal}\n onPress={isHorizontal ? () => onPressYear(year) : undefined}\n style={[\n styles.yearButton,\n {\n borderRadius: roundness,\n },\n ]}\n >\n <View\n style={[\n styles.yearButtonInner,\n {\n borderRadius: roundness,\n },\n ]}\n >\n <Text\n style={[styles.monthLabel, theme.fonts.medium]}\n selectable={false}\n >\n {monthName} {year}\n </Text>\n <View style={isHorizontal ? styles.opacity1 : styles.opacity0}>\n <IconButton\n onPress={isHorizontal ? () => onPressYear(year) : undefined}\n icon={selectingYear ? 'chevron-up' : 'chevron-down'}\n />\n </View>\n </View>\n </TouchableRipple>\n </View>\n\n {grid.map(({ weekIndex, generatedDays }) => (\n <View style={styles.week} key={weekIndex}>\n {generatedDays\n .filter((gd) => showWeekDay(gd.dayIndex, disableWeekDays))\n .map((gd) =>\n gd.beforeWeekDay || gd.afterWeekDay ? (\n <EmptyDay key={gd.dayIndex} />\n ) : (\n <Day\n key={gd.dayIndex}\n theme={theme}\n day={gd.dayOfMonth}\n month={gd.month}\n year={gd.year}\n selected={gd.selected}\n inRange={gd.inRange}\n leftCrop={gd.leftCrop}\n rightCrop={gd.rightCrop}\n onPressDate={onPressDate}\n isToday={gd.isToday}\n selectColor={selectColor}\n primaryColor={primaryColor}\n disabled={gd.disabled}\n textColorOnPrimary={textColorOnPrimary}\n />\n )\n )}\n </View>\n ))}\n </View>\n )\n}\n\nexport const weekMargin = 6\nexport const weekSize = daySize + weekMargin\nexport const montHeaderHeight = 56\nexport const monthHeaderSingleMarginTop = 4\nexport const monthHeaderSingleMarginBottom = 8 + 44 + 12\nexport const monthHeaderSingleHeight =\n monthHeaderSingleMarginTop + monthHeaderSingleMarginBottom\n\nconst styles = StyleSheet.create({\n week: {\n flexDirection: 'row',\n marginBottom: weekMargin,\n height: daySize,\n },\n\n month: {},\n\n monthHeader: {\n height: montHeaderHeight,\n justifyContent: 'center',\n overflow: 'hidden',\n },\n monthLabel: { fontSize: 14, opacity: 0.7 },\n yearButton: { alignSelf: 'flex-start', marginLeft: 6 },\n yearButtonInner: {\n paddingLeft: 16,\n flexDirection: 'row',\n alignItems: 'center',\n },\n opacity0: { opacity: 0 },\n opacity1: { opacity: 1 },\n})\n\nconst monthGrid = (index: number) => {\n return Array(getGridCount(index))\n .fill(null)\n .map((_, weekGrid) => {\n const days = Array(7).fill(null)\n return { weekGrid, days }\n })\n}\n\nfunction getIndexCount(index: number): number {\n if (index > startAtIndex) {\n return index - startAtIndex\n }\n\n return -(startAtIndex - index)\n}\n\nfunction weeksOffset(index: number): number {\n if (index === startAtIndex) {\n return 0\n }\n let off = 0\n if (index > startAtIndex) {\n for (let i = 0; i < index - startAtIndex; i++) {\n const cIndex = startAtIndex + i\n off += gridCounts[cIndex] || getGridCount(cIndex)\n }\n } else {\n for (let i = 0; i < startAtIndex - index; i++) {\n const cIndex = startAtIndex - i - 1\n off -= gridCounts[cIndex] || getGridCount(cIndex)\n }\n }\n return off\n}\n\nexport function getIndexFromHorizontalOffset(\n offset: number,\n width: number\n): number {\n return startAtIndex + Math.floor(offset / width)\n}\n\nexport function getIndexFromVerticalOffset(offset: number): number {\n let estimatedIndex = startAtIndex + Math.ceil(offset / estimatedMonthHeight)\n\n const realOffset = getVerticalMonthsOffset(estimatedIndex)\n const difference = (realOffset - beginOffset - offset) / estimatedMonthHeight\n if (difference >= 1 || difference <= -1) {\n estimatedIndex -= Math.floor(difference)\n }\n return estimatedIndex\n}\n\nexport function getHorizontalMonthOffset(index: number, width: number) {\n if (index < 0) {\n return 0\n }\n return width * index\n}\n\nexport function getVerticalMonthsOffset(index: number) {\n const count = getIndexCount(index)\n const ob = weeksOffset(index)\n const monthsHeight = weekSize * ob\n const c = monthsHeight + count * (dayNamesHeight + montHeaderHeight)\n\n return (c || 0) + beginOffset\n}\n\nexport function getMonthHeight(\n scrollMode: 'horizontal' | 'vertical',\n index: number\n): number {\n const calendarHeight = getCalendarHeaderHeight(scrollMode)\n const gc = getGridCount(index)\n\n const currentMonthHeight = weekSize * gc\n const extraHeight =\n scrollMode === 'horizontal' ? monthHeaderSingleHeight : montHeaderHeight\n const c = calendarHeight + currentMonthHeight + extraHeight\n return c || 0\n}\n\nexport default React.memo(Month)\n"]}
1
+ {"version":3,"sources":["Month.tsx"],"names":["React","StyleSheet","View","IconButton","Text","useTheme","TouchableRipple","Day","EmptyDay","addMonths","areDatesOnSameDay","daySize","getDaysInMonth","getFirstDayOfMonth","getRealIndex","getGridCount","isDateBetween","gridCounts","showWeekDay","startAtIndex","beginOffset","estimatedMonthHeight","useRangeChecker","getCalendarHeaderHeight","dayNamesHeight","useTextColorOnPrimary","Month","props","index","mode","date","dates","startDate","endDate","onPressYear","selectingYear","onPressDate","scrollMode","primaryColor","selectColor","roundness","disableWeekDays","locale","validRange","theme","textColorOnPrimary","realIndex","isHorizontal","isDisabled","isWithinValidRange","monthName","month","year","useMemo","md","Date","y","getFullYear","m","getMonth","formatter","Intl","DateTimeFormat","format","grid","today","daysInMonth","dayOfWeek","emptyDays","monthGrid","map","days","weekGrid","weekIndex","generatedDays","_","dayIndex","isFirstWeek","realDayIndex","beforeWeekDay","dayOfMonth","afterWeekDay","day","isToday","inRange","disabled","selected","leftCrop","rightCrop","isFirstDayOfMonth","isLastDayOfMonth","selectedStartDay","selectedEndDay","safeDates","some","d","yesterday","tomorrow","yesterdaySelected","tomorrowSelected","isWithinOptionalValidRange","styles","height","getMonthHeight","monthHeader","marginTop","monthHeaderSingleMarginTop","marginBottom","monthHeaderSingleMarginBottom","undefined","yearButton","borderRadius","yearButtonInner","monthLabel","fonts","medium","opacity1","opacity0","week","filter","gd","weekMargin","weekSize","montHeaderHeight","monthHeaderSingleHeight","create","flexDirection","justifyContent","overflow","fontSize","opacity","alignSelf","marginLeft","paddingLeft","alignItems","Array","fill","getIndexCount","weeksOffset","off","i","cIndex","getIndexFromHorizontalOffset","offset","width","Math","floor","getIndexFromVerticalOffset","estimatedIndex","ceil","realOffset","getVerticalMonthsOffset","difference","getHorizontalMonthOffset","count","ob","monthsHeight","c","calendarHeight","gc","currentMonthHeight","extraHeight","memo"],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { StyleSheet, View } from 'react-native'\nimport { IconButton, Text, useTheme, TouchableRipple } from 'react-native-paper'\nimport Day, { EmptyDay } from './Day'\n\nimport {\n addMonths,\n areDatesOnSameDay,\n daySize,\n DisableWeekDaysType,\n getDaysInMonth,\n getFirstDayOfMonth,\n getRealIndex,\n getGridCount,\n isDateBetween,\n gridCounts,\n showWeekDay,\n startAtIndex,\n beginOffset,\n estimatedMonthHeight,\n useRangeChecker,\n} from './dateUtils'\nimport { getCalendarHeaderHeight } from './CalendarHeader'\nimport type {\n CalendarDate,\n CalendarDates,\n ModeType,\n ValidRangeType,\n} from './Calendar'\nimport { dayNamesHeight } from './DayNames'\nimport { useTextColorOnPrimary } from '../utils'\n\ninterface BaseMonthProps {\n locale: undefined | string\n scrollMode: 'horizontal' | 'vertical'\n disableWeekDays?: DisableWeekDaysType\n mode: ModeType\n index: number\n onPressYear: (year: number) => any\n selectingYear: boolean\n onPressDate: (date: Date) => any\n primaryColor: string\n selectColor: string\n roundness: number\n validRange?: ValidRangeType\n\n // some of these should be required in final implementation\n startDate?: CalendarDate\n endDate?: CalendarDate\n date?: CalendarDate\n dates?: CalendarDates\n}\n\ninterface MonthRangeProps extends BaseMonthProps {\n mode: 'range'\n startDate: CalendarDate\n endDate: CalendarDate\n}\n\ninterface MonthSingleProps extends BaseMonthProps {\n mode: 'single'\n date: CalendarDate\n}\n\ninterface MonthMultiProps extends BaseMonthProps {\n mode: 'multiple'\n dates: CalendarDates\n}\n\nfunction Month(props: MonthSingleProps | MonthRangeProps | MonthMultiProps) {\n const {\n index,\n mode,\n date,\n dates,\n startDate,\n endDate,\n onPressYear,\n selectingYear,\n onPressDate,\n scrollMode,\n primaryColor,\n selectColor,\n roundness,\n disableWeekDays,\n locale,\n validRange,\n } = props\n const theme = useTheme()\n const textColorOnPrimary = useTextColorOnPrimary()\n const realIndex = getRealIndex(index)\n const isHorizontal = scrollMode === 'horizontal'\n const { isDisabled, isWithinValidRange } = useRangeChecker(validRange)\n const { monthName, month, year } = React.useMemo(() => {\n const md = addMonths(new Date(), realIndex)\n const y = md.getFullYear()\n const m = md.getMonth()\n const formatter = new Intl.DateTimeFormat(locale, {\n month: 'long',\n })\n return { monthName: formatter.format(md), month: m, year: y }\n }, [realIndex, locale])\n\n const grid = React.useMemo(() => {\n const today = new Date()\n\n const daysInMonth = getDaysInMonth({ year, month })\n const dayOfWeek = getFirstDayOfMonth({ year, month })\n const emptyDays = dayOfWeek\n\n return monthGrid(index).map(({ days, weekGrid }) => {\n return {\n weekIndex: weekGrid,\n generatedDays: days.map((_, dayIndex) => {\n const isFirstWeek = weekGrid === 0\n const realDayIndex = emptyDays - dayIndex\n const beforeWeekDay = isFirstWeek && realDayIndex > 0\n const dayOfMonth = weekGrid * 7 + dayIndex - emptyDays + 1\n const afterWeekDay = dayOfMonth > daysInMonth\n\n const day = new Date(year, month, dayOfMonth)\n const isToday = areDatesOnSameDay(day, today)\n\n let inRange = false\n let disabled = isDisabled(day)\n let selected = false\n\n let leftCrop = dayOfMonth === 1\n let rightCrop = dayOfMonth === daysInMonth\n\n const isFirstDayOfMonth = dayOfMonth === 1\n const isLastDayOfMonth = dayOfMonth === daysInMonth\n\n if (mode === 'range') {\n const selectedStartDay = areDatesOnSameDay(day, startDate)\n const selectedEndDay = areDatesOnSameDay(day, endDate)\n selected = selectedStartDay || selectedEndDay\n inRange = isDateBetween(day, {\n startDate,\n endDate,\n })\n if (selectedStartDay) {\n leftCrop = true\n }\n if (selectedEndDay) {\n rightCrop = true\n }\n if (dayIndex === 0 && !selectedStartDay) {\n leftCrop = false\n }\n\n if (dayIndex === 6 && !selectedEndDay) {\n rightCrop = false\n }\n\n if (\n (isFirstDayOfMonth && selectedEndDay) ||\n (isLastDayOfMonth && selectedStartDay)\n ) {\n inRange = false\n }\n } else if (mode === 'multiple') {\n const safeDates = dates || []\n selected = safeDates.some((d) => areDatesOnSameDay(day, d))\n\n const yesterday = new Date(year, month, dayOfMonth - 1)\n const tomorrow = new Date(year, month, dayOfMonth + 1)\n\n const yesterdaySelected = safeDates.some((d) =>\n areDatesOnSameDay(d, yesterday)\n )\n const tomorrowSelected = safeDates.some((d) =>\n areDatesOnSameDay(d, tomorrow)\n )\n\n if (selected) {\n if (tomorrowSelected && yesterdaySelected) {\n inRange = true\n }\n if (tomorrowSelected && !yesterdaySelected) {\n inRange = true\n leftCrop = true\n }\n\n if (yesterdaySelected && !tomorrowSelected) {\n inRange = true\n rightCrop = true\n }\n\n if (isFirstDayOfMonth && !tomorrowSelected) {\n inRange = false\n }\n\n if (isLastDayOfMonth && !yesterdaySelected) {\n inRange = false\n }\n\n if (inRange && !leftCrop && !rightCrop) {\n selected = false\n }\n }\n } else if (mode === 'single') {\n selected = areDatesOnSameDay(day, date)\n }\n\n const isWithinOptionalValidRange = isWithinValidRange(day)\n\n if (inRange && !disabled) {\n disabled = false\n }\n\n if (!isWithinOptionalValidRange) {\n disabled = true\n }\n\n return {\n beforeWeekDay,\n afterWeekDay,\n year,\n month,\n dayOfMonth,\n dayIndex,\n mode,\n selected,\n inRange,\n leftCrop,\n rightCrop,\n isToday,\n disabled,\n }\n }),\n }\n })\n }, [\n year,\n month,\n index,\n isDisabled,\n mode,\n isWithinValidRange,\n startDate,\n endDate,\n dates,\n date,\n ])\n\n return (\n <View style={[styles.month, { height: getMonthHeight(scrollMode, index) }]}>\n <View\n style={[\n styles.monthHeader,\n isHorizontal\n ? {\n marginTop: monthHeaderSingleMarginTop,\n marginBottom: monthHeaderSingleMarginBottom,\n }\n : null,\n ]}\n >\n <TouchableRipple\n disabled={!isHorizontal}\n onPress={isHorizontal ? () => onPressYear(year) : undefined}\n accessibilityRole=\"button\"\n accessibilityLabel={`${monthName} ${year}`}\n style={[\n styles.yearButton,\n {\n borderRadius: roundness,\n },\n ]}\n // RN types bug\n hasTVPreferredFocus={undefined}\n tvParallaxProperties={undefined}\n >\n <View\n style={[\n styles.yearButtonInner,\n {\n borderRadius: roundness,\n },\n ]}\n >\n <Text\n style={[styles.monthLabel, theme.fonts.medium]}\n selectable={false}\n >\n {monthName} {year}\n </Text>\n <View style={isHorizontal ? styles.opacity1 : styles.opacity0}>\n <IconButton\n onPress={isHorizontal ? () => onPressYear(year) : undefined}\n icon={selectingYear ? 'chevron-up' : 'chevron-down'}\n // RN types bug\n hasTVPreferredFocus={undefined}\n tvParallaxProperties={undefined}\n />\n </View>\n </View>\n </TouchableRipple>\n </View>\n\n {grid.map(({ weekIndex, generatedDays }) => (\n <View style={styles.week} key={weekIndex}>\n {generatedDays\n .filter((gd) => showWeekDay(gd.dayIndex, disableWeekDays))\n .map((gd) =>\n gd.beforeWeekDay || gd.afterWeekDay ? (\n <EmptyDay key={gd.dayIndex} />\n ) : (\n <Day\n key={gd.dayIndex}\n theme={theme}\n day={gd.dayOfMonth}\n month={gd.month}\n year={gd.year}\n selected={gd.selected}\n inRange={gd.inRange}\n leftCrop={gd.leftCrop}\n rightCrop={gd.rightCrop}\n onPressDate={onPressDate}\n isToday={gd.isToday}\n selectColor={selectColor}\n primaryColor={primaryColor}\n disabled={gd.disabled}\n textColorOnPrimary={textColorOnPrimary}\n />\n )\n )}\n </View>\n ))}\n </View>\n )\n}\n\nexport const weekMargin = 6\nexport const weekSize = daySize + weekMargin\nexport const montHeaderHeight = 56\nexport const monthHeaderSingleMarginTop = 4\nexport const monthHeaderSingleMarginBottom = 8 + 44 + 12\nexport const monthHeaderSingleHeight =\n monthHeaderSingleMarginTop + monthHeaderSingleMarginBottom\n\nconst styles = StyleSheet.create({\n week: {\n flexDirection: 'row',\n marginBottom: weekMargin,\n height: daySize,\n },\n\n month: {},\n\n monthHeader: {\n height: montHeaderHeight,\n justifyContent: 'center',\n overflow: 'hidden',\n },\n monthLabel: { fontSize: 14, opacity: 0.7 },\n yearButton: { alignSelf: 'flex-start', marginLeft: 6 },\n yearButtonInner: {\n paddingLeft: 16,\n flexDirection: 'row',\n alignItems: 'center',\n },\n opacity0: { opacity: 0 },\n opacity1: { opacity: 1 },\n})\n\nconst monthGrid = (index: number) => {\n return Array(getGridCount(index))\n .fill(null)\n .map((_, weekGrid) => {\n const days = Array(7).fill(null)\n return { weekGrid, days }\n })\n}\n\nfunction getIndexCount(index: number): number {\n if (index > startAtIndex) {\n return index - startAtIndex\n }\n\n return -(startAtIndex - index)\n}\n\nfunction weeksOffset(index: number): number {\n if (index === startAtIndex) {\n return 0\n }\n let off = 0\n if (index > startAtIndex) {\n for (let i = 0; i < index - startAtIndex; i++) {\n const cIndex = startAtIndex + i\n off += gridCounts[cIndex] || getGridCount(cIndex)\n }\n } else {\n for (let i = 0; i < startAtIndex - index; i++) {\n const cIndex = startAtIndex - i - 1\n off -= gridCounts[cIndex] || getGridCount(cIndex)\n }\n }\n return off\n}\n\nexport function getIndexFromHorizontalOffset(\n offset: number,\n width: number\n): number {\n return startAtIndex + Math.floor(offset / width)\n}\n\nexport function getIndexFromVerticalOffset(offset: number): number {\n let estimatedIndex = startAtIndex + Math.ceil(offset / estimatedMonthHeight)\n\n const realOffset = getVerticalMonthsOffset(estimatedIndex)\n const difference = (realOffset - beginOffset - offset) / estimatedMonthHeight\n if (difference >= 1 || difference <= -1) {\n estimatedIndex -= Math.floor(difference)\n }\n return estimatedIndex\n}\n\nexport function getHorizontalMonthOffset(index: number, width: number) {\n if (index < 0) {\n return 0\n }\n return width * index\n}\n\nexport function getVerticalMonthsOffset(index: number) {\n const count = getIndexCount(index)\n const ob = weeksOffset(index)\n const monthsHeight = weekSize * ob\n const c = monthsHeight + count * (dayNamesHeight + montHeaderHeight)\n\n return (c || 0) + beginOffset\n}\n\nexport function getMonthHeight(\n scrollMode: 'horizontal' | 'vertical',\n index: number\n): number {\n const calendarHeight = getCalendarHeaderHeight(scrollMode)\n const gc = getGridCount(index)\n\n const currentMonthHeight = weekSize * gc\n const extraHeight =\n scrollMode === 'horizontal' ? monthHeaderSingleHeight : montHeaderHeight\n const c = calendarHeight + currentMonthHeight + extraHeight\n return c || 0\n}\n\nexport default React.memo(Month)\n"]}
@@ -6,14 +6,15 @@ import { useLatest } from '../utils';
6
6
  import { useYearChange } from './SwiperUtils';
7
7
  import AutoSizer from './AutoSizer';
8
8
 
9
- function Swiper({
10
- scrollMode,
11
- renderItem,
12
- renderHeader,
13
- renderFooter,
14
- selectedYear,
15
- initialIndex
16
- }) {
9
+ function Swiper(_ref) {
10
+ let {
11
+ scrollMode,
12
+ renderItem,
13
+ renderHeader,
14
+ renderFooter,
15
+ selectedYear,
16
+ initialIndex
17
+ } = _ref;
17
18
  const isHorizontal = scrollMode === 'horizontal';
18
19
  const [index, setIndex] = React.useState(initialIndex);
19
20
  const onPrev = React.useCallback(() => {
@@ -42,29 +43,34 @@ function Swiper({
42
43
  index,
43
44
  onPrev,
44
45
  onNext
45
- })) : /*#__PURE__*/React.createElement(AutoSizer, null, ({
46
- width,
47
- height
48
- }) => /*#__PURE__*/React.createElement(VerticalScroller, {
49
- width: width,
50
- height: height,
51
- initialIndex: initialIndex,
52
- estimatedHeight: estimatedMonthHeight,
53
- renderItem: renderItem
54
- })), renderFooter && renderFooter(renderProps));
46
+ })) : /*#__PURE__*/React.createElement(AutoSizer, null, _ref2 => {
47
+ let {
48
+ width,
49
+ height
50
+ } = _ref2;
51
+ return /*#__PURE__*/React.createElement(VerticalScroller, {
52
+ width: width,
53
+ height: height,
54
+ initialIndex: initialIndex,
55
+ estimatedHeight: estimatedMonthHeight,
56
+ renderItem: renderItem
57
+ });
58
+ }), renderFooter && renderFooter(renderProps));
55
59
  }
56
60
 
57
61
  const visibleArray = i => [i - 2, i - 1, i, i + 1, i + 2];
58
62
 
59
- function VerticalScroller({
60
- width,
61
- height,
62
- initialIndex,
63
- estimatedHeight,
64
- renderItem
65
- }) {
63
+ function VerticalScroller(_ref3) {
64
+ let {
65
+ width,
66
+ height,
67
+ initialIndex,
68
+ estimatedHeight,
69
+ renderItem
70
+ } = _ref3;
66
71
  const idx = React.useRef(initialIndex);
67
- const [visibleIndexes, setVisibleIndexes] = React.useState(visibleArray(initialIndex));
72
+ const [visibleIndexes, setVisibleIndexes] = React.useState(visibleArray(initialIndex)); // eslint-disable-next-line no-undef
73
+
68
74
  const parentRef = React.useRef(null);
69
75
  useIsomorphicLayoutEffect(() => {
70
76
  const element = parentRef.current;
@@ -1 +1 @@
1
- {"version":3,"sources":["Swiper.tsx"],"names":["React","StyleSheet","View","getIndexFromVerticalOffset","getMonthHeight","getVerticalMonthsOffset","montHeaderHeight","beginOffset","estimatedMonthHeight","totalMonths","useLatest","useYearChange","AutoSizer","Swiper","scrollMode","renderItem","renderHeader","renderFooter","selectedYear","initialIndex","isHorizontal","index","setIndex","useState","onPrev","useCallback","prev","onNext","renderProps","indexRef","newIndex","currentIndexRef","styles","flex1","width","height","visibleArray","i","VerticalScroller","estimatedHeight","idx","useRef","visibleIndexes","setVisibleIndexes","parentRef","useIsomorphicLayoutEffect","element","current","top","scrollTo","setVisibleIndexesThrottled","useDebouncedCallback","onScroll","e","currentTarget","scrollTop","offset","overflow","position","map","vi","willChange","transform","left","right","empty","create","flex","callback","mounted","latest","timerId","useEffect","window","cancelAnimationFrame","args","requestAnimationFrame","useLayoutEffect","memo"],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { StyleSheet, View } from 'react-native'\n\nimport {\n getIndexFromVerticalOffset,\n getMonthHeight,\n getVerticalMonthsOffset,\n montHeaderHeight,\n} from './Month'\n\nimport { beginOffset, estimatedMonthHeight, totalMonths } from './dateUtils'\nimport { useLatest } from '../utils'\nimport { RenderProps, SwiperProps, useYearChange } from './SwiperUtils'\nimport AutoSizer from './AutoSizer'\n\nfunction Swiper({\n scrollMode,\n renderItem,\n renderHeader,\n renderFooter,\n selectedYear,\n initialIndex,\n}: SwiperProps) {\n const isHorizontal = scrollMode === 'horizontal'\n const [index, setIndex] = React.useState(initialIndex)\n\n const onPrev = React.useCallback(() => {\n setIndex((prev) => prev - 1)\n }, [setIndex])\n\n const onNext = React.useCallback(() => {\n setIndex((prev) => prev + 1)\n }, [setIndex])\n\n const renderProps = {\n index,\n onPrev,\n onNext,\n }\n const indexRef = useLatest(index)\n useYearChange(\n (newIndex) => {\n if (newIndex) {\n setIndex(newIndex)\n }\n },\n {\n selectedYear,\n currentIndexRef: indexRef,\n }\n )\n\n return (\n <>\n {renderHeader && renderHeader(renderProps)}\n {isHorizontal ? (\n <View style={styles.flex1}>\n {renderItem({ index, onPrev, onNext })}\n </View>\n ) : (\n <AutoSizer>\n {({ width, height }) => (\n <VerticalScroller\n width={width}\n height={height}\n initialIndex={initialIndex}\n estimatedHeight={estimatedMonthHeight}\n renderItem={renderItem}\n />\n )}\n </AutoSizer>\n )}\n {renderFooter && renderFooter(renderProps)}\n </>\n )\n}\n\nconst visibleArray = (i: number) => [i - 2, i - 1, i, i + 1, i + 2]\n\nfunction VerticalScroller({\n width,\n height,\n initialIndex,\n estimatedHeight,\n renderItem,\n}: {\n renderItem: (renderProps: RenderProps) => any\n width: number\n height: number\n initialIndex: number\n estimatedHeight: number\n}) {\n const idx = React.useRef<number>(initialIndex)\n const [visibleIndexes, setVisibleIndexes] = React.useState<number[]>(\n visibleArray(initialIndex)\n )\n const parentRef = React.useRef<HTMLDivElement | null>(null)\n\n useIsomorphicLayoutEffect(() => {\n const element = parentRef.current\n if (!element) {\n return\n }\n const top = getVerticalMonthsOffset(idx.current) - montHeaderHeight\n\n element.scrollTo({\n top,\n })\n }, [parentRef, idx])\n\n const setVisibleIndexesThrottled = useDebouncedCallback(setVisibleIndexes)\n\n const onScroll = React.useCallback(\n (e: React.UIEvent) => {\n const top = e.currentTarget.scrollTop\n if (top === 0) {\n return\n }\n\n const offset = top - beginOffset\n const index = getIndexFromVerticalOffset(offset)\n\n if (idx.current !== index) {\n idx.current = index\n setVisibleIndexesThrottled(visibleArray(index))\n }\n },\n [setVisibleIndexesThrottled]\n )\n\n return (\n <div\n ref={parentRef}\n style={{\n height,\n width,\n overflow: 'auto',\n }}\n onScroll={onScroll}\n >\n <div\n style={{\n height: estimatedHeight * totalMonths,\n position: 'relative',\n }}\n >\n {[0, 1, 2, 3, 4].map((vi) => (\n <div\n key={vi}\n style={{\n willChange: 'transform',\n transform: `translateY(${getVerticalMonthsOffset(\n visibleIndexes[vi]\n )}px)`,\n left: 0,\n right: 0,\n position: 'absolute',\n height: getMonthHeight('vertical', visibleIndexes[vi]),\n // transform: `translateY(${getMonthsOffset('vertical', vi)}px)`,\n }}\n >\n {renderItem({\n index: visibleIndexes[vi],\n onPrev: empty,\n onNext: empty,\n })}\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nconst empty = () => null\n\nconst styles = StyleSheet.create({\n flex1: {\n flex: 1,\n },\n})\n\nexport function useDebouncedCallback(callback: any): any {\n const mounted = React.useRef<boolean>(true)\n const latest = useLatest(callback)\n const timerId = React.useRef<any>(null)\n\n React.useEffect(() => {\n return () => {\n mounted.current = false\n if (timerId.current) {\n window.cancelAnimationFrame(timerId.current)\n }\n }\n }, [mounted, timerId])\n\n return React.useCallback(\n (args: any) => {\n if (timerId.current) {\n window.cancelAnimationFrame(timerId.current)\n }\n timerId.current = window.requestAnimationFrame(function () {\n if (mounted.current) {\n latest.current(args)\n }\n })\n },\n [mounted, timerId, latest]\n )\n}\n\nconst useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect\n\nexport default React.memo(Swiper)\n"]}
1
+ {"version":3,"sources":["Swiper.tsx"],"names":["React","StyleSheet","View","getIndexFromVerticalOffset","getMonthHeight","getVerticalMonthsOffset","montHeaderHeight","beginOffset","estimatedMonthHeight","totalMonths","useLatest","useYearChange","AutoSizer","Swiper","scrollMode","renderItem","renderHeader","renderFooter","selectedYear","initialIndex","isHorizontal","index","setIndex","useState","onPrev","useCallback","prev","onNext","renderProps","indexRef","newIndex","currentIndexRef","styles","flex1","width","height","visibleArray","i","VerticalScroller","estimatedHeight","idx","useRef","visibleIndexes","setVisibleIndexes","parentRef","useIsomorphicLayoutEffect","element","current","top","scrollTo","setVisibleIndexesThrottled","useDebouncedCallback","onScroll","e","currentTarget","scrollTop","offset","overflow","position","map","vi","willChange","transform","left","right","empty","create","flex","callback","mounted","latest","timerId","useEffect","window","cancelAnimationFrame","args","requestAnimationFrame","useLayoutEffect","memo"],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { StyleSheet, View } from 'react-native'\n\nimport {\n getIndexFromVerticalOffset,\n getMonthHeight,\n getVerticalMonthsOffset,\n montHeaderHeight,\n} from './Month'\n\nimport { beginOffset, estimatedMonthHeight, totalMonths } from './dateUtils'\nimport { useLatest } from '../utils'\nimport { RenderProps, SwiperProps, useYearChange } from './SwiperUtils'\nimport AutoSizer from './AutoSizer'\n\nfunction Swiper({\n scrollMode,\n renderItem,\n renderHeader,\n renderFooter,\n selectedYear,\n initialIndex,\n}: SwiperProps) {\n const isHorizontal = scrollMode === 'horizontal'\n const [index, setIndex] = React.useState(initialIndex)\n\n const onPrev = React.useCallback(() => {\n setIndex((prev) => prev - 1)\n }, [setIndex])\n\n const onNext = React.useCallback(() => {\n setIndex((prev) => prev + 1)\n }, [setIndex])\n\n const renderProps = {\n index,\n onPrev,\n onNext,\n }\n const indexRef = useLatest(index)\n useYearChange(\n (newIndex) => {\n if (newIndex) {\n setIndex(newIndex)\n }\n },\n {\n selectedYear,\n currentIndexRef: indexRef,\n }\n )\n\n return (\n <>\n {renderHeader && renderHeader(renderProps)}\n {isHorizontal ? (\n <View style={styles.flex1}>\n {renderItem({ index, onPrev, onNext })}\n </View>\n ) : (\n <AutoSizer>\n {({ width, height }) => (\n <VerticalScroller\n width={width}\n height={height}\n initialIndex={initialIndex}\n estimatedHeight={estimatedMonthHeight}\n renderItem={renderItem}\n />\n )}\n </AutoSizer>\n )}\n {renderFooter && renderFooter(renderProps)}\n </>\n )\n}\n\nconst visibleArray = (i: number) => [i - 2, i - 1, i, i + 1, i + 2]\n\nfunction VerticalScroller({\n width,\n height,\n initialIndex,\n estimatedHeight,\n renderItem,\n}: {\n renderItem: (renderProps: RenderProps) => any\n width: number\n height: number\n initialIndex: number\n estimatedHeight: number\n}) {\n const idx = React.useRef<number>(initialIndex)\n const [visibleIndexes, setVisibleIndexes] = React.useState<number[]>(\n visibleArray(initialIndex)\n )\n // eslint-disable-next-line no-undef\n const parentRef = React.useRef<HTMLDivElement | null>(null)\n\n useIsomorphicLayoutEffect(() => {\n const element = parentRef.current\n if (!element) {\n return\n }\n const top = getVerticalMonthsOffset(idx.current) - montHeaderHeight\n\n element.scrollTo({\n top,\n })\n }, [parentRef, idx])\n\n const setVisibleIndexesThrottled = useDebouncedCallback(setVisibleIndexes)\n\n const onScroll = React.useCallback(\n (e: React.UIEvent) => {\n const top = e.currentTarget.scrollTop\n if (top === 0) {\n return\n }\n\n const offset = top - beginOffset\n const index = getIndexFromVerticalOffset(offset)\n\n if (idx.current !== index) {\n idx.current = index\n setVisibleIndexesThrottled(visibleArray(index))\n }\n },\n [setVisibleIndexesThrottled]\n )\n\n return (\n <div\n ref={parentRef}\n style={{\n height,\n width,\n overflow: 'auto',\n }}\n onScroll={onScroll}\n >\n <div\n style={{\n height: estimatedHeight * totalMonths,\n position: 'relative',\n }}\n >\n {[0, 1, 2, 3, 4].map((vi) => (\n <div\n key={vi}\n style={{\n willChange: 'transform',\n transform: `translateY(${getVerticalMonthsOffset(\n visibleIndexes[vi]\n )}px)`,\n left: 0,\n right: 0,\n position: 'absolute',\n height: getMonthHeight('vertical', visibleIndexes[vi]),\n // transform: `translateY(${getMonthsOffset('vertical', vi)}px)`,\n }}\n >\n {renderItem({\n index: visibleIndexes[vi],\n onPrev: empty,\n onNext: empty,\n })}\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nconst empty = () => null\n\nconst styles = StyleSheet.create({\n flex1: {\n flex: 1,\n },\n})\n\nexport function useDebouncedCallback(callback: any): any {\n const mounted = React.useRef<boolean>(true)\n const latest = useLatest(callback)\n const timerId = React.useRef<any>(null)\n\n React.useEffect(() => {\n return () => {\n mounted.current = false\n if (timerId.current) {\n window.cancelAnimationFrame(timerId.current)\n }\n }\n }, [mounted, timerId])\n\n return React.useCallback(\n (args: any) => {\n if (timerId.current) {\n window.cancelAnimationFrame(timerId.current)\n }\n timerId.current = window.requestAnimationFrame(function () {\n if (mounted.current) {\n latest.current(args)\n }\n })\n },\n [mounted, timerId, latest]\n )\n}\n\nconst useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect\n\nexport default React.memo(Swiper)\n"]}
@@ -15,10 +15,12 @@ const styles = StyleSheet.create({
15
15
  }
16
16
  });
17
17
 
18
- function getVisibleArray(i, {
19
- isHorizontal,
20
- height
21
- }) {
18
+ function getVisibleArray(i, _ref) {
19
+ let {
20
+ isHorizontal,
21
+ height
22
+ } = _ref;
23
+
22
24
  if (isHorizontal || height < 700) {
23
25
  return [i - 1, i, i + 1];
24
26
  }
@@ -27,25 +29,29 @@ function getVisibleArray(i, {
27
29
  }
28
30
 
29
31
  function Swiper(props) {
30
- return /*#__PURE__*/React.createElement(AutoSizer, null, ({
31
- width,
32
- height
33
- }) => /*#__PURE__*/React.createElement(SwiperInner, _extends({}, props, {
34
- width: width,
35
- height: height
36
- })));
32
+ return /*#__PURE__*/React.createElement(AutoSizer, null, _ref2 => {
33
+ let {
34
+ width,
35
+ height
36
+ } = _ref2;
37
+ return /*#__PURE__*/React.createElement(SwiperInner, _extends({}, props, {
38
+ width: width,
39
+ height: height
40
+ }));
41
+ });
37
42
  }
38
43
 
39
- function SwiperInner({
40
- scrollMode,
41
- renderItem,
42
- renderHeader,
43
- renderFooter,
44
- selectedYear,
45
- initialIndex,
46
- width,
47
- height
48
- }) {
44
+ function SwiperInner(_ref3) {
45
+ let {
46
+ scrollMode,
47
+ renderItem,
48
+ renderHeader,
49
+ renderFooter,
50
+ selectedYear,
51
+ initialIndex,
52
+ width,
53
+ height
54
+ } = _ref3;
49
55
  const idx = React.useRef(initialIndex);
50
56
  const isHorizontal = scrollMode === 'horizontal';
51
57
  const [visibleIndexes, setVisibleIndexes] = React.useState(getVisibleArray(initialIndex, {
@@ -1 +1 @@
1
- {"version":3,"sources":["Swiper.native.tsx"],"names":["React","ScrollView","StyleSheet","View","getHorizontalMonthOffset","getIndexFromVerticalOffset","getMonthHeight","getVerticalMonthsOffset","montHeaderHeight","useYearChange","beginOffset","estimatedMonthHeight","totalMonths","AutoSizer","styles","create","viewPager","flex","inner","position","getVisibleArray","i","isHorizontal","height","Swiper","props","width","SwiperInner","scrollMode","renderItem","renderHeader","renderFooter","selectedYear","initialIndex","idx","useRef","visibleIndexes","setVisibleIndexes","useState","parentRef","scrollTo","useCallback","index","animated","current","offset","y","x","onPrev","onNext","scrollToInitial","onMomentumScrollEnd","e","contentOffset","nativeEvent","viewSize","layoutMeasurement","newIndex","Math","floor","renderProps","currentIndexRef","Array","length","fill","undefined","map","_","vi","top","left","right","bottom","memo"],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport {\n NativeScrollEvent,\n NativeSyntheticEvent,\n ScrollView,\n StyleSheet,\n View,\n} from 'react-native'\nimport {\n getHorizontalMonthOffset,\n getIndexFromVerticalOffset,\n getMonthHeight,\n getVerticalMonthsOffset,\n montHeaderHeight,\n} from './Month'\n\nimport { SwiperProps, useYearChange } from './SwiperUtils'\nimport { beginOffset, estimatedMonthHeight, totalMonths } from './dateUtils'\nimport AutoSizer from './AutoSizer'\n\nconst styles = StyleSheet.create({\n viewPager: {\n flex: 1,\n },\n inner: {\n position: 'relative',\n },\n})\n\nfunction getVisibleArray(\n i: number,\n { isHorizontal, height }: { isHorizontal: boolean; height: number }\n) {\n if (isHorizontal || height < 700) {\n return [i - 1, i, i + 1]\n }\n return [i - 2, i - 1, i, i + 1, i + 2]\n}\n\nfunction Swiper(props: SwiperProps) {\n return (\n <AutoSizer>\n {({ width, height }) => (\n <SwiperInner {...props} width={width} height={height} />\n )}\n </AutoSizer>\n )\n}\n\nfunction SwiperInner({\n scrollMode,\n renderItem,\n renderHeader,\n renderFooter,\n selectedYear,\n initialIndex,\n width,\n height,\n}: SwiperProps & { width: number; height: number }) {\n const idx = React.useRef<number>(initialIndex)\n const isHorizontal = scrollMode === 'horizontal'\n const [visibleIndexes, setVisibleIndexes] = React.useState<number[]>(\n getVisibleArray(initialIndex, { isHorizontal, height })\n )\n\n const parentRef = React.useRef<ScrollView | null>(null)\n\n const scrollTo = React.useCallback(\n (index: number, animated: boolean) => {\n idx.current = index\n setVisibleIndexes(getVisibleArray(index, { isHorizontal, height }))\n\n if (!parentRef.current) {\n return\n }\n const offset = isHorizontal\n ? getHorizontalMonthOffset(index, width)\n : getVerticalMonthsOffset(index) - montHeaderHeight\n\n if (isHorizontal) {\n parentRef.current.scrollTo({\n y: 0,\n x: offset,\n animated,\n })\n } else {\n parentRef.current.scrollTo({\n y: offset,\n x: 0,\n animated,\n })\n }\n },\n [parentRef, isHorizontal, width, height]\n )\n\n const onPrev = React.useCallback(() => {\n scrollTo(idx.current - 1, true)\n }, [scrollTo, idx])\n\n const onNext = React.useCallback(() => {\n scrollTo(idx.current + 1, true)\n }, [scrollTo, idx])\n\n const scrollToInitial = React.useCallback(() => {\n scrollTo(idx.current, false)\n }, [scrollTo])\n\n const onMomentumScrollEnd = React.useCallback(\n (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n const contentOffset = e.nativeEvent.contentOffset\n const viewSize = e.nativeEvent.layoutMeasurement\n const newIndex = isHorizontal\n ? Math.floor(contentOffset.x / viewSize.width)\n : getIndexFromVerticalOffset(contentOffset.y - beginOffset)\n\n if (newIndex === 0) {\n return\n }\n\n if (idx.current !== newIndex) {\n idx.current = newIndex\n setVisibleIndexes(getVisibleArray(newIndex, { isHorizontal, height }))\n }\n },\n [idx, height, isHorizontal]\n )\n\n const renderProps = {\n index: 0,\n onPrev,\n onNext,\n }\n\n useYearChange(\n (newIndex) => {\n if (newIndex) {\n scrollTo(newIndex, false)\n }\n },\n {\n selectedYear,\n currentIndexRef: idx,\n }\n )\n\n return (\n <>\n <ScrollView\n ref={parentRef}\n horizontal={isHorizontal}\n pagingEnabled={isHorizontal}\n style={styles.viewPager}\n onMomentumScrollEnd={onMomentumScrollEnd}\n onScrollEndDrag={onMomentumScrollEnd}\n onLayout={scrollToInitial}\n showsHorizontalScrollIndicator={false}\n showsVerticalScrollIndicator={false}\n decelerationRate=\"fast\"\n scrollEventThrottle={10}\n >\n <View\n style={[\n styles.inner,\n {\n height: isHorizontal\n ? height\n : estimatedMonthHeight * totalMonths,\n width: isHorizontal ? width * totalMonths : width,\n },\n ]}\n >\n {visibleIndexes\n ? new Array(visibleIndexes.length).fill(undefined).map((_, vi) => (\n <View\n key={vi}\n style={{\n top: isHorizontal\n ? 0\n : getVerticalMonthsOffset(visibleIndexes[vi]),\n left: isHorizontal\n ? getHorizontalMonthOffset(visibleIndexes[vi], width)\n : 0,\n right: isHorizontal ? undefined : 0,\n bottom: isHorizontal ? 0 : undefined,\n position: 'absolute',\n width: isHorizontal ? width : undefined,\n height: isHorizontal\n ? undefined\n : getMonthHeight(scrollMode, visibleIndexes[vi]),\n }}\n >\n {renderItem({\n index: visibleIndexes[vi],\n onPrev: onPrev,\n onNext: onNext,\n })}\n </View>\n ))\n : null}\n </View>\n </ScrollView>\n {renderHeader && renderHeader(renderProps)}\n {renderFooter && renderFooter(renderProps)}\n </>\n )\n}\n\nexport default React.memo(Swiper)\n"]}
1
+ {"version":3,"sources":["Swiper.native.tsx"],"names":["React","ScrollView","StyleSheet","View","getHorizontalMonthOffset","getIndexFromVerticalOffset","getMonthHeight","getVerticalMonthsOffset","montHeaderHeight","useYearChange","beginOffset","estimatedMonthHeight","totalMonths","AutoSizer","styles","create","viewPager","flex","inner","position","getVisibleArray","i","isHorizontal","height","Swiper","props","width","SwiperInner","scrollMode","renderItem","renderHeader","renderFooter","selectedYear","initialIndex","idx","useRef","visibleIndexes","setVisibleIndexes","useState","parentRef","scrollTo","useCallback","index","animated","current","offset","y","x","onPrev","onNext","scrollToInitial","onMomentumScrollEnd","e","contentOffset","nativeEvent","viewSize","layoutMeasurement","newIndex","Math","floor","renderProps","currentIndexRef","Array","length","fill","undefined","map","_","vi","top","left","right","bottom","memo"],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport {\n NativeScrollEvent,\n NativeSyntheticEvent,\n ScrollView,\n StyleSheet,\n View,\n} from 'react-native'\nimport {\n getHorizontalMonthOffset,\n getIndexFromVerticalOffset,\n getMonthHeight,\n getVerticalMonthsOffset,\n montHeaderHeight,\n} from './Month'\n\nimport { SwiperProps, useYearChange } from './SwiperUtils'\nimport { beginOffset, estimatedMonthHeight, totalMonths } from './dateUtils'\nimport AutoSizer from './AutoSizer'\n\nconst styles = StyleSheet.create({\n viewPager: {\n flex: 1,\n },\n inner: {\n position: 'relative',\n },\n})\n\nfunction getVisibleArray(\n i: number,\n { isHorizontal, height }: { isHorizontal: boolean; height: number }\n) {\n if (isHorizontal || height < 700) {\n return [i - 1, i, i + 1]\n }\n return [i - 2, i - 1, i, i + 1, i + 2]\n}\n\nfunction Swiper(props: SwiperProps) {\n return (\n <AutoSizer>\n {({ width, height }) => (\n <SwiperInner {...props} width={width} height={height} />\n )}\n </AutoSizer>\n )\n}\n\nfunction SwiperInner({\n scrollMode,\n renderItem,\n renderHeader,\n renderFooter,\n selectedYear,\n initialIndex,\n width,\n height,\n}: SwiperProps & { width: number; height: number }) {\n const idx = React.useRef<number>(initialIndex)\n const isHorizontal = scrollMode === 'horizontal'\n const [visibleIndexes, setVisibleIndexes] = React.useState<number[]>(\n getVisibleArray(initialIndex, { isHorizontal, height })\n )\n\n const parentRef = React.useRef<ScrollView | null>(null)\n\n const scrollTo = React.useCallback(\n (index: number, animated: boolean) => {\n idx.current = index\n setVisibleIndexes(getVisibleArray(index, { isHorizontal, height }))\n\n if (!parentRef.current) {\n return\n }\n const offset = isHorizontal\n ? getHorizontalMonthOffset(index, width)\n : getVerticalMonthsOffset(index) - montHeaderHeight\n\n if (isHorizontal) {\n parentRef.current.scrollTo({\n y: 0,\n x: offset,\n animated,\n })\n } else {\n parentRef.current.scrollTo({\n y: offset,\n x: 0,\n animated,\n })\n }\n },\n [parentRef, isHorizontal, width, height]\n )\n\n const onPrev = React.useCallback(() => {\n scrollTo(idx.current - 1, true)\n }, [scrollTo, idx])\n\n const onNext = React.useCallback(() => {\n scrollTo(idx.current + 1, true)\n }, [scrollTo, idx])\n\n const scrollToInitial = React.useCallback(() => {\n scrollTo(idx.current, false)\n }, [scrollTo])\n\n const onMomentumScrollEnd = React.useCallback(\n (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n const contentOffset = e.nativeEvent.contentOffset\n const viewSize = e.nativeEvent.layoutMeasurement\n const newIndex = isHorizontal\n ? Math.floor(contentOffset.x / viewSize.width)\n : getIndexFromVerticalOffset(contentOffset.y - beginOffset)\n\n if (newIndex === 0) {\n return\n }\n\n if (idx.current !== newIndex) {\n idx.current = newIndex\n setVisibleIndexes(getVisibleArray(newIndex, { isHorizontal, height }))\n }\n },\n [idx, height, isHorizontal]\n )\n\n const renderProps = {\n index: 0,\n onPrev,\n onNext,\n }\n\n useYearChange(\n (newIndex) => {\n if (newIndex) {\n scrollTo(newIndex, false)\n }\n },\n {\n selectedYear,\n currentIndexRef: idx,\n }\n )\n\n return (\n <>\n <ScrollView\n ref={parentRef}\n horizontal={isHorizontal}\n pagingEnabled={isHorizontal}\n style={styles.viewPager}\n onMomentumScrollEnd={onMomentumScrollEnd}\n onScrollEndDrag={onMomentumScrollEnd}\n onLayout={scrollToInitial}\n showsHorizontalScrollIndicator={false}\n showsVerticalScrollIndicator={false}\n decelerationRate=\"fast\"\n scrollEventThrottle={10}\n >\n <View\n style={[\n styles.inner,\n {\n height: isHorizontal\n ? height\n : estimatedMonthHeight * totalMonths,\n width: isHorizontal ? width * totalMonths : width,\n },\n ]}\n >\n {visibleIndexes\n ? new Array(visibleIndexes.length).fill(undefined).map((_, vi) => (\n <View\n key={vi}\n style={{\n top: isHorizontal\n ? 0\n : getVerticalMonthsOffset(visibleIndexes[vi]),\n left: isHorizontal\n ? getHorizontalMonthOffset(visibleIndexes[vi], width)\n : 0,\n right: isHorizontal ? undefined : 0,\n bottom: isHorizontal ? 0 : undefined,\n position: 'absolute',\n width: isHorizontal ? width : undefined,\n height: isHorizontal\n ? undefined\n : getMonthHeight(scrollMode, visibleIndexes[vi]),\n }}\n >\n {renderItem({\n index: visibleIndexes[vi],\n onPrev: onPrev,\n onNext: onNext,\n })}\n </View>\n ))\n : null}\n </View>\n </ScrollView>\n {renderHeader && renderHeader(renderProps)}\n {renderFooter && renderFooter(renderProps)}\n </>\n )\n}\n\nexport default React.memo(Swiper)\n"]}
@@ -1,10 +1,11 @@
1
1
  import { useLatest } from '../utils';
2
2
  import * as React from 'react';
3
3
  import { addMonths, differenceInMonths, getRealIndex, startAtIndex } from './dateUtils';
4
- export function useYearChange(onChange, {
5
- selectedYear,
6
- currentIndexRef
7
- }) {
4
+ export function useYearChange(onChange, _ref) {
5
+ let {
6
+ selectedYear,
7
+ currentIndexRef
8
+ } = _ref;
8
9
  const onChangeRef = useLatest(onChange);
9
10
  React.useEffect(() => {
10
11
  if (selectedYear) {
@@ -1 +1 @@
1
- {"version":3,"sources":["SwiperUtils.ts"],"names":["useLatest","React","addMonths","differenceInMonths","getRealIndex","startAtIndex","useYearChange","onChange","selectedYear","currentIndexRef","onChangeRef","useEffect","currentIndex","current","currentDate","Date","setFullYear","today","months","newIndex"],"mappings":"AACA,SAASA,SAAT,QAA0B,UAA1B;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,SACEC,SADF,EAEEC,kBAFF,EAGEC,YAHF,EAIEC,YAJF,QAKO,aALP;AAsBA,OAAO,SAASC,aAAT,CACLC,QADK,EAEL;AACEC,EAAAA,YADF;AAEEC,EAAAA;AAFF,CAFK,EASL;AACA,QAAMC,WAAW,GAAGV,SAAS,CAACO,QAAD,CAA7B;AACAN,EAAAA,KAAK,CAACU,SAAN,CAAgB,MAAM;AACpB,QAAIH,YAAJ,EAAkB;AAChB,YAAMI,YAAY,GAAGH,eAAe,CAACI,OAAhB,IAA2B,CAAhD;AACA,YAAMC,WAAW,GAAGZ,SAAS,CAAC,IAAIa,IAAJ,EAAD,EAAaX,YAAY,CAACQ,YAAD,CAAzB,CAA7B;AACAE,MAAAA,WAAW,CAACE,WAAZ,CAAwBR,YAAxB;AAEA,YAAMS,KAAK,GAAG,IAAIF,IAAJ,EAAd;AACA,YAAMG,MAAM,GAAGf,kBAAkB,CAACc,KAAD,EAAQH,WAAR,CAAjC;AAEA,YAAMK,QAAQ,GAAGd,YAAY,GAAGa,MAAhC;;AACA,UAAIN,YAAY,KAAKO,QAArB,EAA+B;AAC7BT,QAAAA,WAAW,CAACG,OAAZ,CAAoBM,QAApB;AACD;AACF;AACF,GAdD,EAcG,CAACV,eAAD,EAAkBC,WAAlB,EAA+BF,YAA/B,CAdH;AAeD","sourcesContent":["import { MutableRefObject } from 'react'\nimport { useLatest } from '../utils'\nimport * as React from 'react'\nimport {\n addMonths,\n differenceInMonths,\n getRealIndex,\n startAtIndex,\n} from './dateUtils'\n\nexport type RenderProps = {\n index: number\n onNext: () => any\n onPrev: () => any\n}\n\nexport type SwiperProps = {\n initialIndex: number\n scrollMode: 'horizontal' | 'vertical'\n renderItem: (renderProps: RenderProps) => any\n renderHeader?: (renderProps: RenderProps) => any\n renderFooter?: (renderProps: RenderProps) => any\n selectedYear: number | undefined\n}\n\nexport function useYearChange(\n onChange: (index: number | undefined) => void,\n {\n selectedYear,\n currentIndexRef,\n }: {\n currentIndexRef: MutableRefObject<number>\n selectedYear: number | undefined\n }\n) {\n const onChangeRef = useLatest(onChange)\n React.useEffect(() => {\n if (selectedYear) {\n const currentIndex = currentIndexRef.current || 0\n const currentDate = addMonths(new Date(), getRealIndex(currentIndex))\n currentDate.setFullYear(selectedYear)\n\n const today = new Date()\n const months = differenceInMonths(today, currentDate)\n\n const newIndex = startAtIndex + months\n if (currentIndex !== newIndex) {\n onChangeRef.current(newIndex)\n }\n }\n }, [currentIndexRef, onChangeRef, selectedYear])\n}\n"]}
1
+ {"version":3,"sources":["SwiperUtils.ts"],"names":["useLatest","React","addMonths","differenceInMonths","getRealIndex","startAtIndex","useYearChange","onChange","selectedYear","currentIndexRef","onChangeRef","useEffect","currentIndex","current","currentDate","Date","setFullYear","today","months","newIndex"],"mappings":"AACA,SAASA,SAAT,QAA0B,UAA1B;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,SACEC,SADF,EAEEC,kBAFF,EAGEC,YAHF,EAIEC,YAJF,QAKO,aALP;AAsBA,OAAO,SAASC,aAAT,CACLC,QADK,QASL;AAAA,MAPA;AACEC,IAAAA,YADF;AAEEC,IAAAA;AAFF,GAOA;AACA,QAAMC,WAAW,GAAGV,SAAS,CAACO,QAAD,CAA7B;AACAN,EAAAA,KAAK,CAACU,SAAN,CAAgB,MAAM;AACpB,QAAIH,YAAJ,EAAkB;AAChB,YAAMI,YAAY,GAAGH,eAAe,CAACI,OAAhB,IAA2B,CAAhD;AACA,YAAMC,WAAW,GAAGZ,SAAS,CAAC,IAAIa,IAAJ,EAAD,EAAaX,YAAY,CAACQ,YAAD,CAAzB,CAA7B;AACAE,MAAAA,WAAW,CAACE,WAAZ,CAAwBR,YAAxB;AAEA,YAAMS,KAAK,GAAG,IAAIF,IAAJ,EAAd;AACA,YAAMG,MAAM,GAAGf,kBAAkB,CAACc,KAAD,EAAQH,WAAR,CAAjC;AAEA,YAAMK,QAAQ,GAAGd,YAAY,GAAGa,MAAhC;;AACA,UAAIN,YAAY,KAAKO,QAArB,EAA+B;AAC7BT,QAAAA,WAAW,CAACG,OAAZ,CAAoBM,QAApB;AACD;AACF;AACF,GAdD,EAcG,CAACV,eAAD,EAAkBC,WAAlB,EAA+BF,YAA/B,CAdH;AAeD","sourcesContent":["import type { MutableRefObject } from 'react'\nimport { useLatest } from '../utils'\nimport * as React from 'react'\nimport {\n addMonths,\n differenceInMonths,\n getRealIndex,\n startAtIndex,\n} from './dateUtils'\n\nexport type RenderProps = {\n index: number\n onNext: () => any\n onPrev: () => any\n}\n\nexport type SwiperProps = {\n initialIndex: number\n scrollMode: 'horizontal' | 'vertical'\n renderItem: (renderProps: RenderProps) => any\n renderHeader?: (renderProps: RenderProps) => any\n renderFooter?: (renderProps: RenderProps) => any\n selectedYear: number | undefined\n}\n\nexport function useYearChange(\n onChange: (index: number | undefined) => void,\n {\n selectedYear,\n currentIndexRef,\n }: {\n currentIndexRef: MutableRefObject<number>\n selectedYear: number | undefined\n }\n) {\n const onChangeRef = useLatest(onChange)\n React.useEffect(() => {\n if (selectedYear) {\n const currentIndex = currentIndexRef.current || 0\n const currentDate = addMonths(new Date(), getRealIndex(currentIndex))\n currentDate.setFullYear(selectedYear)\n\n const today = new Date()\n const months = differenceInMonths(today, currentDate)\n\n const newIndex = startAtIndex + months\n if (currentIndex !== newIndex) {\n onChangeRef.current(newIndex)\n }\n }\n }, [currentIndexRef, onChangeRef, selectedYear])\n}\n"]}