react-native-paper-dates 0.5.1 → 0.8.1
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.
- package/README.md +13 -3
- package/lib/commonjs/Date/AnimatedCrossView.js +7 -6
- package/lib/commonjs/Date/AnimatedCrossView.js.map +1 -1
- package/lib/commonjs/Date/AutoSizer.js +4 -3
- package/lib/commonjs/Date/AutoSizer.js.map +1 -1
- package/lib/commonjs/Date/Calendar.js +37 -31
- package/lib/commonjs/Date/Calendar.js.map +1 -1
- package/lib/commonjs/Date/CalendarEdit.js +18 -14
- package/lib/commonjs/Date/CalendarEdit.js.map +1 -1
- package/lib/commonjs/Date/CalendarHeader.js +21 -10
- package/lib/commonjs/Date/CalendarHeader.js.map +1 -1
- package/lib/commonjs/Date/DatePickerInput.js +29 -23
- package/lib/commonjs/Date/DatePickerInput.js.map +1 -1
- package/lib/commonjs/Date/DatePickerModalContent.js +4 -0
- package/lib/commonjs/Date/DatePickerModalContent.js.map +1 -1
- package/lib/commonjs/Date/DatePickerModalContentHeader.js +34 -26
- package/lib/commonjs/Date/DatePickerModalContentHeader.js.map +1 -1
- package/lib/commonjs/Date/DatePickerModalHeader.js +8 -1
- package/lib/commonjs/Date/DatePickerModalHeader.js.map +1 -1
- package/lib/commonjs/Date/DatePickerModalHeaderBackground.js +4 -3
- package/lib/commonjs/Date/DatePickerModalHeaderBackground.js.map +1 -1
- package/lib/commonjs/Date/DateRangeInput.js +13 -8
- package/lib/commonjs/Date/DateRangeInput.js.map +1 -1
- package/lib/commonjs/Date/Day.js +5 -1
- package/lib/commonjs/Date/Day.js.map +1 -1
- package/lib/commonjs/Date/DayName.js +4 -3
- package/lib/commonjs/Date/DayName.js.map +1 -1
- package/lib/commonjs/Date/DayNames.js +5 -4
- package/lib/commonjs/Date/DayNames.js.map +1 -1
- package/lib/commonjs/Date/DayRange.js +7 -6
- package/lib/commonjs/Date/DayRange.js.map +1 -1
- package/lib/commonjs/Date/Month.js +47 -34
- package/lib/commonjs/Date/Month.js.map +1 -1
- package/lib/commonjs/Date/Swiper.js +33 -27
- package/lib/commonjs/Date/Swiper.js.map +1 -1
- package/lib/commonjs/Date/Swiper.native.js +27 -21
- package/lib/commonjs/Date/Swiper.native.js.map +1 -1
- package/lib/commonjs/Date/SwiperUtils.js +5 -4
- package/lib/commonjs/Date/SwiperUtils.js.map +1 -1
- package/lib/commonjs/Date/YearPicker.js +28 -18
- package/lib/commonjs/Date/YearPicker.js.map +1 -1
- package/lib/commonjs/Date/dateUtils.js +49 -37
- package/lib/commonjs/Date/dateUtils.js.map +1 -1
- package/lib/commonjs/Date/inputUtils.js +8 -7
- package/lib/commonjs/Date/inputUtils.js.map +1 -1
- package/lib/commonjs/TextInputMask.js +7 -6
- package/lib/commonjs/TextInputMask.js.map +1 -1
- package/lib/commonjs/Time/AmPmSwitcher.js +12 -10
- package/lib/commonjs/Time/AmPmSwitcher.js.map +1 -1
- package/lib/commonjs/Time/AnalogClock.js +12 -7
- package/lib/commonjs/Time/AnalogClock.js.map +1 -1
- package/lib/commonjs/Time/AnalogClockHours.js +5 -4
- package/lib/commonjs/Time/AnalogClockHours.js.map +1 -1
- package/lib/commonjs/Time/AnalogClockMinutes.js +5 -4
- package/lib/commonjs/Time/AnalogClockMinutes.js.map +1 -1
- package/lib/commonjs/Time/AnimatedClockSwitcher.js +6 -5
- package/lib/commonjs/Time/AnimatedClockSwitcher.js.map +1 -1
- package/lib/commonjs/Time/TimeInput.js +14 -10
- package/lib/commonjs/Time/TimeInput.js.map +1 -1
- package/lib/commonjs/Time/TimeInputs.js +10 -9
- package/lib/commonjs/Time/TimeInputs.js.map +1 -1
- package/lib/commonjs/Time/TimePicker.js +10 -9
- package/lib/commonjs/Time/TimePicker.js.map +1 -1
- package/lib/commonjs/Time/TimePickerModal.js +23 -16
- package/lib/commonjs/Time/TimePickerModal.js.map +1 -1
- package/lib/commonjs/Time/timeUtils.js +7 -6
- package/lib/commonjs/Time/timeUtils.js.map +1 -1
- package/lib/commonjs/index.js +38 -11
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/translations/en.js +6 -1
- package/lib/commonjs/translations/en.js.map +1 -1
- package/lib/commonjs/translations/enGB.js +25 -0
- package/lib/commonjs/translations/enGB.js.map +1 -0
- package/lib/commonjs/translations/nl.js +6 -1
- package/lib/commonjs/translations/nl.js.map +1 -1
- package/lib/commonjs/translations/pl.js +25 -0
- package/lib/commonjs/translations/pl.js.map +1 -0
- package/lib/commonjs/translations/pt.js +25 -0
- package/lib/commonjs/translations/pt.js.map +1 -0
- package/lib/commonjs/translations/utils.js.map +1 -1
- package/lib/commonjs/utils.js +4 -4
- package/lib/module/Date/AnimatedCrossView.js +7 -6
- package/lib/module/Date/AnimatedCrossView.js.map +1 -1
- package/lib/module/Date/AutoSizer.js +4 -3
- package/lib/module/Date/AutoSizer.js.map +1 -1
- package/lib/module/Date/Calendar.js +37 -31
- package/lib/module/Date/Calendar.js.map +1 -1
- package/lib/module/Date/CalendarEdit.js +18 -14
- package/lib/module/Date/CalendarEdit.js.map +1 -1
- package/lib/module/Date/CalendarHeader.js +19 -9
- package/lib/module/Date/CalendarHeader.js.map +1 -1
- package/lib/module/Date/DatePickerInput.js +29 -23
- package/lib/module/Date/DatePickerInput.js.map +1 -1
- package/lib/module/Date/DatePickerModalContent.js +4 -0
- package/lib/module/Date/DatePickerModalContent.js.map +1 -1
- package/lib/module/Date/DatePickerModalContentHeader.js +32 -24
- package/lib/module/Date/DatePickerModalContentHeader.js.map +1 -1
- package/lib/module/Date/DatePickerModalHeader.js +8 -1
- package/lib/module/Date/DatePickerModalHeader.js.map +1 -1
- package/lib/module/Date/DatePickerModalHeaderBackground.js +4 -3
- package/lib/module/Date/DatePickerModalHeaderBackground.js.map +1 -1
- package/lib/module/Date/DateRangeInput.js +13 -8
- package/lib/module/Date/DateRangeInput.js.map +1 -1
- package/lib/module/Date/Day.js +5 -1
- package/lib/module/Date/Day.js.map +1 -1
- package/lib/module/Date/DayName.js +4 -3
- package/lib/module/Date/DayName.js.map +1 -1
- package/lib/module/Date/DayNames.js +5 -4
- package/lib/module/Date/DayNames.js.map +1 -1
- package/lib/module/Date/DayRange.js +7 -6
- package/lib/module/Date/DayRange.js.map +1 -1
- package/lib/module/Date/Month.js +43 -31
- package/lib/module/Date/Month.js.map +1 -1
- package/lib/module/Date/Swiper.js +32 -26
- package/lib/module/Date/Swiper.js.map +1 -1
- package/lib/module/Date/Swiper.native.js +27 -21
- package/lib/module/Date/Swiper.native.js.map +1 -1
- package/lib/module/Date/SwiperUtils.js +5 -4
- package/lib/module/Date/SwiperUtils.js.map +1 -1
- package/lib/module/Date/YearPicker.js +28 -18
- package/lib/module/Date/YearPicker.js.map +1 -1
- package/lib/module/Date/dateUtils.js +33 -25
- package/lib/module/Date/dateUtils.js.map +1 -1
- package/lib/module/Date/inputUtils.js +8 -7
- package/lib/module/Date/inputUtils.js.map +1 -1
- package/lib/module/TextInputMask.js +7 -6
- package/lib/module/TextInputMask.js.map +1 -1
- package/lib/module/Time/AmPmSwitcher.js +12 -10
- package/lib/module/Time/AmPmSwitcher.js.map +1 -1
- package/lib/module/Time/AnalogClock.js +12 -7
- package/lib/module/Time/AnalogClock.js.map +1 -1
- package/lib/module/Time/AnalogClockHours.js +5 -4
- package/lib/module/Time/AnalogClockHours.js.map +1 -1
- package/lib/module/Time/AnalogClockMinutes.js +5 -4
- package/lib/module/Time/AnalogClockMinutes.js.map +1 -1
- package/lib/module/Time/AnimatedClockSwitcher.js +6 -5
- package/lib/module/Time/AnimatedClockSwitcher.js.map +1 -1
- package/lib/module/Time/TimeInput.js +14 -10
- package/lib/module/Time/TimeInput.js.map +1 -1
- package/lib/module/Time/TimeInputs.js +10 -9
- package/lib/module/Time/TimeInputs.js.map +1 -1
- package/lib/module/Time/TimePicker.js +10 -9
- package/lib/module/Time/TimePicker.js.map +1 -1
- package/lib/module/Time/TimePickerModal.js +23 -16
- package/lib/module/Time/TimePickerModal.js.map +1 -1
- package/lib/module/index.js +3 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/translations/en.js +6 -1
- package/lib/module/translations/en.js.map +1 -1
- package/lib/module/translations/enGB.js +18 -0
- package/lib/module/translations/enGB.js.map +1 -0
- package/lib/module/translations/nl.js +6 -1
- package/lib/module/translations/nl.js.map +1 -1
- package/lib/module/translations/pl.js +18 -0
- package/lib/module/translations/pl.js.map +1 -0
- package/lib/module/translations/pt.js +18 -0
- package/lib/module/translations/pt.js.map +1 -0
- package/lib/module/translations/utils.js.map +1 -1
- package/lib/typescript/Date/DatePickerInput.d.ts +9 -9
- package/lib/typescript/Date/DatePickerModalContentHeader.d.ts +1 -0
- package/lib/typescript/Date/DatePickerModalHeader.d.ts +1 -0
- package/lib/typescript/TextInputMask.d.ts +3 -3
- package/lib/typescript/Time/AmPmSwitcher.d.ts +1 -1
- package/lib/typescript/Time/AnalogClock.d.ts +1 -1
- package/lib/typescript/Time/TimeInputs.d.ts +1 -1
- package/lib/typescript/Time/TimePickerModal.d.ts +3 -2
- package/lib/typescript/index.d.ts +3 -0
- package/lib/typescript/translations/enGB.d.ts +3 -0
- package/lib/typescript/translations/pl.d.ts +3 -0
- package/lib/typescript/translations/pt.d.ts +3 -0
- package/lib/typescript/translations/utils.d.ts +5 -0
- package/package.json +19 -24
- package/src/Date/CalendarEdit.tsx +3 -0
- package/src/Date/CalendarHeader.tsx +17 -2
- package/src/Date/DatePickerInput.tsx +8 -3
- package/src/Date/DatePickerModalContent.tsx +2 -0
- package/src/Date/DatePickerModalContentHeader.tsx +13 -3
- package/src/Date/DatePickerModalHeader.tsx +6 -0
- package/src/Date/DateRangeInput.tsx +7 -1
- package/src/Date/Day.tsx +4 -0
- package/src/Date/Month.tsx +8 -0
- package/src/Date/Swiper.tsx +1 -0
- package/src/Date/YearPicker.tsx +6 -1
- package/src/Time/AmPmSwitcher.tsx +1 -1
- package/src/Time/AnalogClock.tsx +5 -5
- package/src/Time/AnalogClockMinutes.tsx +4 -1
- package/src/Time/TimeInput.tsx +3 -0
- package/src/Time/TimeInputs.tsx +1 -5
- package/src/Time/TimePickerModal.tsx +11 -3
- package/src/index.tsx +3 -0
- package/src/translations/en.ts +5 -0
- package/src/translations/enGB.ts +20 -0
- package/src/translations/nl.ts +5 -0
- package/src/translations/pl.ts +21 -0
- package/src/translations/pt.ts +20 -0
- package/src/translations/utils.ts +5 -0
- package/src/.DS_Store +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DayNames.tsx"],"names":["React","StyleSheet","View","DayName","useTheme","showWeekDay","dayNamesHeight","weekdays","Date","DayNames","disableWeekDays","locale","theme","shortDayNames","useMemo","formatter","Intl","DateTimeFormat","weekday","map","date","format","styles","dayNames","backgroundColor","colors","surface","filter","_","dayIndex","dayName","i","create","height","flexDirection","alignItems","memo"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,UAAT,EAAqBC,IAArB,QAAiC,cAAjC;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,SAASC,QAAT,QAAyB,oBAAzB;AACA,SAA8BC,WAA9B,QAAiD,aAAjD;AAEA,OAAO,MAAMC,cAAc,GAAG,EAAvB,C,CAEP;;AACA,MAAMC,QAAQ,GAAG,CACf,IAAIC,IAAJ,CAAS,IAAT,EAAe,CAAf,EAAkB,CAAlB,CADe,EAEf,IAAIA,IAAJ,CAAS,IAAT,EAAe,CAAf,EAAkB,CAAlB,CAFe,EAGf,IAAIA,IAAJ,CAAS,IAAT,EAAe,CAAf,EAAkB,CAAlB,CAHe,EAIf,IAAIA,IAAJ,CAAS,IAAT,EAAe,CAAf,EAAkB,CAAlB,CAJe,EAKf,IAAIA,IAAJ,CAAS,IAAT,EAAe,CAAf,EAAkB,CAAlB,CALe,EAMf,IAAIA,IAAJ,CAAS,IAAT,EAAe,CAAf,EAAkB,CAAlB,CANe,EAOf,IAAIA,IAAJ,CAAS,IAAT,EAAe,CAAf,EAAkB,CAAlB,CAPe,CAAjB;;AAUA,SAASC,QAAT,
|
|
1
|
+
{"version":3,"sources":["DayNames.tsx"],"names":["React","StyleSheet","View","DayName","useTheme","showWeekDay","dayNamesHeight","weekdays","Date","DayNames","disableWeekDays","locale","theme","shortDayNames","useMemo","formatter","Intl","DateTimeFormat","weekday","map","date","format","styles","dayNames","backgroundColor","colors","surface","filter","_","dayIndex","dayName","i","create","height","flexDirection","alignItems","memo"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,UAAT,EAAqBC,IAArB,QAAiC,cAAjC;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,SAASC,QAAT,QAAyB,oBAAzB;AACA,SAA8BC,WAA9B,QAAiD,aAAjD;AAEA,OAAO,MAAMC,cAAc,GAAG,EAAvB,C,CAEP;;AACA,MAAMC,QAAQ,GAAG,CACf,IAAIC,IAAJ,CAAS,IAAT,EAAe,CAAf,EAAkB,CAAlB,CADe,EAEf,IAAIA,IAAJ,CAAS,IAAT,EAAe,CAAf,EAAkB,CAAlB,CAFe,EAGf,IAAIA,IAAJ,CAAS,IAAT,EAAe,CAAf,EAAkB,CAAlB,CAHe,EAIf,IAAIA,IAAJ,CAAS,IAAT,EAAe,CAAf,EAAkB,CAAlB,CAJe,EAKf,IAAIA,IAAJ,CAAS,IAAT,EAAe,CAAf,EAAkB,CAAlB,CALe,EAMf,IAAIA,IAAJ,CAAS,IAAT,EAAe,CAAf,EAAkB,CAAlB,CANe,EAOf,IAAIA,IAAJ,CAAS,IAAT,EAAe,CAAf,EAAkB,CAAlB,CAPe,CAAjB;;AAUA,SAASC,QAAT,OAMG;AAAA,MANe;AAChBC,IAAAA,eADgB;AAEhBC,IAAAA;AAFgB,GAMf;AACD,QAAMC,KAAK,GAAGR,QAAQ,EAAtB;AACA,QAAMS,aAAa,GAAGb,KAAK,CAACc,OAAN,CAAwB,MAAM;AAClD,UAAMC,SAAS,GAAG,IAAIC,IAAI,CAACC,cAAT,CAAwBN,MAAxB,EAAgC;AAChDO,MAAAA,OAAO,EAAE;AADuC,KAAhC,CAAlB;AAGA,WAAOX,QAAQ,CAACY,GAAT,CAAcC,IAAD,IAAUL,SAAS,CAACM,MAAV,CAAiBD,IAAjB,CAAvB,CAAP;AACD,GALqB,EAKnB,CAACT,MAAD,CALmB,CAAtB;AAOA,sBACE,oBAAC,IAAD;AACE,IAAA,KAAK,EAAE,CAACW,MAAM,CAACC,QAAR,EAAkB;AAAEC,MAAAA,eAAe,EAAEZ,KAAK,CAACa,MAAN,CAAaC;AAAhC,KAAlB,CADT;AAEE,IAAA,aAAa,EAAE;AAFjB,KAIGb,aAAa,CACXc,MADF,CACS,CAACC,CAAD,EAAIC,QAAJ,KAAiBxB,WAAW,CAACwB,QAAD,EAAWnB,eAAX,CADrC,EAEES,GAFF,CAEM,CAACW,OAAD,EAAUC,CAAV,kBACH,oBAAC,OAAD;AAAS,IAAA,GAAG,EAAG,GAAED,OAAQ,IAAGC,CAAE,EAA9B;AAAiC,IAAA,KAAK,EAAED;AAAxC,IAHH,CAJH,CADF;AAYD;;AACD,MAAMR,MAAM,GAAGrB,UAAU,CAAC+B,MAAX,CAAkB;AAC/BT,EAAAA,QAAQ,EAAE;AACRU,IAAAA,MAAM,EAAE3B,cADA;AAER4B,IAAAA,aAAa,EAAE,KAFP;AAGRC,IAAAA,UAAU,EAAE,QAHJ;AAIRX,IAAAA,eAAe,EAAE;AAJT;AADqB,CAAlB,CAAf;AAQA,4BAAexB,KAAK,CAACoC,IAAN,CAAW3B,QAAX,CAAf","sourcesContent":["import * as React from 'react'\nimport { StyleSheet, View } from 'react-native'\nimport DayName from './DayName'\nimport { useTheme } from 'react-native-paper'\nimport { DisableWeekDaysType, showWeekDay } from './dateUtils'\n\nexport const dayNamesHeight = 44\n\n// TODO: wait for a better Intl api ;-)\nconst weekdays = [\n new Date(2020, 7, 2),\n new Date(2020, 7, 3),\n new Date(2020, 7, 4),\n new Date(2020, 7, 5),\n new Date(2020, 7, 6),\n new Date(2020, 7, 7),\n new Date(2020, 7, 8),\n]\n\nfunction DayNames({\n disableWeekDays,\n locale,\n}: {\n locale: undefined | string\n disableWeekDays?: DisableWeekDaysType\n}) {\n const theme = useTheme()\n const shortDayNames = React.useMemo<string[]>(() => {\n const formatter = new Intl.DateTimeFormat(locale, {\n weekday: 'narrow',\n })\n return weekdays.map((date) => formatter.format(date))\n }, [locale])\n\n return (\n <View\n style={[styles.dayNames, { backgroundColor: theme.colors.surface }]}\n pointerEvents={'none'}\n >\n {shortDayNames\n .filter((_, dayIndex) => showWeekDay(dayIndex, disableWeekDays))\n .map((dayName, i) => (\n <DayName key={`${dayName}_${i}`} label={dayName} />\n ))}\n </View>\n )\n}\nconst styles = StyleSheet.create({\n dayNames: {\n height: dayNamesHeight,\n flexDirection: 'row',\n alignItems: 'center',\n backgroundColor: '#fff',\n },\n})\nexport default React.memo(DayNames)\n"]}
|
|
@@ -2,12 +2,13 @@ import * as React from 'react';
|
|
|
2
2
|
import { StyleSheet, View } from 'react-native';
|
|
3
3
|
import { daySize } from './dateUtils';
|
|
4
4
|
|
|
5
|
-
function DayRange({
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
function DayRange(_ref) {
|
|
6
|
+
let {
|
|
7
|
+
leftCrop,
|
|
8
|
+
rightCrop,
|
|
9
|
+
inRange,
|
|
10
|
+
selectColor
|
|
11
|
+
} = _ref;
|
|
11
12
|
const bothWays = inRange && leftCrop && rightCrop;
|
|
12
13
|
const isCrop = inRange && (leftCrop || rightCrop) && !(leftCrop && rightCrop);
|
|
13
14
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DayRange.tsx"],"names":["React","StyleSheet","View","daySize","DayRange","leftCrop","rightCrop","inRange","selectColor","bothWays","isCrop","absoluteFill","styles","rangeRoot","rangeRootBoth","backgroundColor","flex1","minWidth","minHeight","leftRadius","rightRadius","create","borderBottomLeftRadius","borderTopLeftRadius","borderBottomRightRadius","borderTopRightRadius","borderRadius","flex","flexDirection","memo"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,UAAT,EAAqBC,IAArB,QAAiC,cAAjC;AACA,SAASC,OAAT,QAAwB,aAAxB;;AAEA,SAASC,QAAT,
|
|
1
|
+
{"version":3,"sources":["DayRange.tsx"],"names":["React","StyleSheet","View","daySize","DayRange","leftCrop","rightCrop","inRange","selectColor","bothWays","isCrop","absoluteFill","styles","rangeRoot","rangeRootBoth","backgroundColor","flex1","minWidth","minHeight","leftRadius","rightRadius","create","borderBottomLeftRadius","borderTopLeftRadius","borderBottomRightRadius","borderTopRightRadius","borderRadius","flex","flexDirection","memo"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,UAAT,EAAqBC,IAArB,QAAiC,cAAjC;AACA,SAASC,OAAT,QAAwB,aAAxB;;AAEA,SAASC,QAAT,OAUG;AAAA,MAVe;AAChBC,IAAAA,QADgB;AAEhBC,IAAAA,SAFgB;AAGhBC,IAAAA,OAHgB;AAIhBC,IAAAA;AAJgB,GAUf;AACD,QAAMC,QAAQ,GAAGF,OAAO,IAAIF,QAAX,IAAuBC,SAAxC;AACA,QAAMI,MAAM,GAAGH,OAAO,KAAKF,QAAQ,IAAIC,SAAjB,CAAP,IAAsC,EAAED,QAAQ,IAAIC,SAAd,CAArD;;AAEA,MAAIC,OAAO,IAAIG,MAAf,EAAuB;AACrB,wBACE,oBAAC,IAAD;AACE,MAAA,aAAa,EAAC,MADhB;AAEE,MAAA,KAAK,EAAE,CACLT,UAAU,CAACU,YADN,EAELC,MAAM,CAACC,SAFF,EAGLJ,QAAQ,IAAIG,MAAM,CAACE,aAHd,EAILP,OAAO,IAAI,CAACG,MAAZ,GACI;AACEK,QAAAA,eAAe,EAAEP;AADnB,OADJ,GAII,IARC;AAFT,OAaGE,MAAM,iBACL,uDACE,oBAAC,IAAD;AACE,MAAA,KAAK,EAAE,CACLE,MAAM,CAACI,KADF,EAELV,SAAS,GACL;AACES,QAAAA,eAAe,EAAEP;AADnB,OADK,GAIL,IANC;AADT,MADF,eAWE,oBAAC,IAAD;AACE,MAAA,KAAK,EAAE,CACL;AACEO,QAAAA,eAAe,EAAEP,WADnB;AAEES,QAAAA,QAAQ,EAAEd,OAFZ;AAGEe,QAAAA,SAAS,EAAEf;AAHb,OADK,EAMLE,QAAQ,GAAGO,MAAM,CAACO,UAAV,GAAuB,IAN1B,EAOLb,SAAS,GAAGM,MAAM,CAACQ,WAAV,GAAwB,IAP5B;AADT,MAXF,eAsBE,oBAAC,IAAD;AACE,MAAA,KAAK,EAAE,CACLR,MAAM,CAACI,KADF,EAELX,QAAQ,GACJ;AACEU,QAAAA,eAAe,EAAEP;AADnB,OADI,GAIJ,IANC;AADT,MAtBF,CAdJ,CADF;AAmDD;;AACD,SAAO,IAAP;AACD;;AAED,MAAMI,MAAM,GAAGX,UAAU,CAACoB,MAAX,CAAkB;AAC/BF,EAAAA,UAAU,EAAE;AACVG,IAAAA,sBAAsB,EAAEnB,OAAO,GAAG,CADxB;AAEVoB,IAAAA,mBAAmB,EAAEpB,OAAO,GAAG;AAFrB,GADmB;AAK/BiB,EAAAA,WAAW,EAAE;AACXI,IAAAA,uBAAuB,EAAErB,OAAO,GAAG,CADxB;AAEXsB,IAAAA,oBAAoB,EAAEtB,OAAO,GAAG;AAFrB,GALkB;AAS/BW,EAAAA,aAAa,EAAE;AACbY,IAAAA,YAAY,EAAEvB,OAAO,GAAG;AADX,GATgB;AAY/Ba,EAAAA,KAAK,EAAE;AACLW,IAAAA,IAAI,EAAE;AADD,GAZwB;AAe/Bd,EAAAA,SAAS,EAAE;AACTe,IAAAA,aAAa,EAAE;AADN;AAfoB,CAAlB,CAAf;AAoBA,4BAAe5B,KAAK,CAAC6B,IAAN,CAAWzB,QAAX,CAAf","sourcesContent":["import * as React from 'react'\nimport { StyleSheet, View } from 'react-native'\nimport { daySize } from './dateUtils'\n\nfunction DayRange({\n leftCrop,\n rightCrop,\n inRange,\n selectColor,\n}: {\n leftCrop: boolean\n rightCrop: boolean\n inRange: boolean\n selectColor: string\n}) {\n const bothWays = inRange && leftCrop && rightCrop\n const isCrop = inRange && (leftCrop || rightCrop) && !(leftCrop && rightCrop)\n\n if (inRange || isCrop) {\n return (\n <View\n pointerEvents=\"none\"\n style={[\n StyleSheet.absoluteFill,\n styles.rangeRoot,\n bothWays && styles.rangeRootBoth,\n inRange && !isCrop\n ? {\n backgroundColor: selectColor,\n }\n : null,\n ]}\n >\n {isCrop && (\n <>\n <View\n style={[\n styles.flex1,\n rightCrop\n ? {\n backgroundColor: selectColor,\n }\n : null,\n ]}\n />\n <View\n style={[\n {\n backgroundColor: selectColor,\n minWidth: daySize,\n minHeight: daySize,\n },\n leftCrop ? styles.leftRadius : null,\n rightCrop ? styles.rightRadius : null,\n ]}\n />\n <View\n style={[\n styles.flex1,\n leftCrop\n ? {\n backgroundColor: selectColor,\n }\n : null,\n ]}\n />\n </>\n )}\n </View>\n )\n }\n return null\n}\n\nconst styles = StyleSheet.create({\n leftRadius: {\n borderBottomLeftRadius: daySize / 2,\n borderTopLeftRadius: daySize / 2,\n },\n rightRadius: {\n borderBottomRightRadius: daySize / 2,\n borderTopRightRadius: daySize / 2,\n },\n rangeRootBoth: {\n borderRadius: daySize / 2,\n },\n flex1: {\n flex: 1,\n },\n rangeRoot: {\n flexDirection: 'row',\n },\n})\n\nexport default React.memo(DayRange)\n"]}
|
package/lib/module/Date/Month.js
CHANGED
|
@@ -62,10 +62,11 @@ function Month(props) {
|
|
|
62
62
|
month
|
|
63
63
|
});
|
|
64
64
|
const emptyDays = dayOfWeek;
|
|
65
|
-
return monthGrid(index).map(
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
65
|
+
return monthGrid(index).map(_ref => {
|
|
66
|
+
let {
|
|
67
|
+
days,
|
|
68
|
+
weekGrid
|
|
69
|
+
} = _ref;
|
|
69
70
|
return {
|
|
70
71
|
weekIndex: weekGrid,
|
|
71
72
|
generatedDays: days.map((_, dayIndex) => {
|
|
@@ -192,9 +193,14 @@ function Month(props) {
|
|
|
192
193
|
}, /*#__PURE__*/React.createElement(TouchableRipple, {
|
|
193
194
|
disabled: !isHorizontal,
|
|
194
195
|
onPress: isHorizontal ? () => onPressYear(year) : undefined,
|
|
196
|
+
accessibilityRole: "button",
|
|
197
|
+
accessibilityLabel: `${monthName} ${year}`,
|
|
195
198
|
style: [styles.yearButton, {
|
|
196
199
|
borderRadius: roundness
|
|
197
|
-
}]
|
|
200
|
+
}] // RN types bug
|
|
201
|
+
,
|
|
202
|
+
hasTVPreferredFocus: undefined,
|
|
203
|
+
tvParallaxProperties: undefined
|
|
198
204
|
}, /*#__PURE__*/React.createElement(View, {
|
|
199
205
|
style: [styles.yearButtonInner, {
|
|
200
206
|
borderRadius: roundness
|
|
@@ -206,32 +212,38 @@ function Month(props) {
|
|
|
206
212
|
style: isHorizontal ? styles.opacity1 : styles.opacity0
|
|
207
213
|
}, /*#__PURE__*/React.createElement(IconButton, {
|
|
208
214
|
onPress: isHorizontal ? () => onPressYear(year) : undefined,
|
|
209
|
-
icon: selectingYear ? 'chevron-up' : 'chevron-down'
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
})
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
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
|
+
}));
|
|
235
247
|
}
|
|
236
248
|
|
|
237
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","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 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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,UAAT,EAAqBC,IAArB,QAAiC,cAAjC;AAEA,SACEC,0BADF,EAEEC,cAFF,EAGEC,uBAHF,EAIEC,gBAJF,QAKO,SALP;AAOA,SAASC,WAAT,EAAsBC,oBAAtB,EAA4CC,WAA5C,QAA+D,aAA/D;AACA,SAASC,SAAT,QAA0B,UAA1B;AACA,SAAmCC,aAAnC,QAAwD,eAAxD;AACA,OAAOC,SAAP,MAAsB,aAAtB;;AAEA,SAASC,MAAT,CAAgB;AACdC,EAAAA,UADc;AAEdC,EAAAA,UAFc;AAGdC,EAAAA,YAHc;AAIdC,EAAAA,YAJc;AAKdC,EAAAA,YALc;AAMdC,EAAAA;AANc,CAAhB,EAOgB;AACd,QAAMC,YAAY,GAAGN,UAAU,KAAK,YAApC;AACA,QAAM,CAACO,KAAD,EAAQC,QAAR,IAAoBtB,KAAK,CAACuB,QAAN,CAAeJ,YAAf,CAA1B;AAEA,QAAMK,MAAM,GAAGxB,KAAK,CAACyB,WAAN,CAAkB,MAAM;AACrCH,IAAAA,QAAQ,CAAEI,IAAD,IAAUA,IAAI,GAAG,CAAlB,CAAR;AACD,GAFc,EAEZ,CAACJ,QAAD,CAFY,CAAf;AAIA,QAAMK,MAAM,GAAG3B,KAAK,CAACyB,WAAN,CAAkB,MAAM;AACrCH,IAAAA,QAAQ,CAAEI,IAAD,IAAUA,IAAI,GAAG,CAAlB,CAAR;AACD,GAFc,EAEZ,CAACJ,QAAD,CAFY,CAAf;AAIA,QAAMM,WAAW,GAAG;AAClBP,IAAAA,KADkB;AAElBG,IAAAA,MAFkB;AAGlBG,IAAAA;AAHkB,GAApB;AAKA,QAAME,QAAQ,GAAGnB,SAAS,CAACW,KAAD,CAA1B;AACAV,EAAAA,aAAa,CACVmB,QAAD,IAAc;AACZ,QAAIA,QAAJ,EAAc;AACZR,MAAAA,QAAQ,CAACQ,QAAD,CAAR;AACD;AACF,GALU,EAMX;AACEZ,IAAAA,YADF;AAEEa,IAAAA,eAAe,EAAEF;AAFnB,GANW,CAAb;AAYA,sBACE,0CACGb,YAAY,IAAIA,YAAY,CAACY,WAAD,CAD/B,EAEGR,YAAY,gBACX,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAEY,MAAM,CAACC;AAApB,KACGlB,UAAU,CAAC;AAAEM,IAAAA,KAAF;AAASG,IAAAA,MAAT;AAAiBG,IAAAA;AAAjB,GAAD,CADb,CADW,gBAKX,oBAAC,SAAD,QACG,CAAC;AAAEO,IAAAA,KAAF;AAASC,IAAAA;AAAT,GAAD,kBACC,oBAAC,gBAAD;AACE,IAAA,KAAK,EAAED,KADT;AAEE,IAAA,MAAM,EAAEC,MAFV;AAGE,IAAA,YAAY,EAAEhB,YAHhB;AAIE,IAAA,eAAe,EAAEX,oBAJnB;AAKE,IAAA,UAAU,EAAEO;AALd,IAFJ,CAPJ,EAmBGE,YAAY,IAAIA,YAAY,CAACW,WAAD,CAnB/B,CADF;AAuBD;;AAED,MAAMQ,YAAY,GAAIC,CAAD,IAAe,CAACA,CAAC,GAAG,CAAL,EAAQA,CAAC,GAAG,CAAZ,EAAeA,CAAf,EAAkBA,CAAC,GAAG,CAAtB,EAAyBA,CAAC,GAAG,CAA7B,CAApC;;AAEA,SAASC,gBAAT,CAA0B;AACxBJ,EAAAA,KADwB;AAExBC,EAAAA,MAFwB;AAGxBhB,EAAAA,YAHwB;AAIxBoB,EAAAA,eAJwB;AAKxBxB,EAAAA;AALwB,CAA1B,EAYG;AACD,QAAMyB,GAAG,GAAGxC,KAAK,CAACyC,MAAN,CAAqBtB,YAArB,CAAZ;AACA,QAAM,CAACuB,cAAD,EAAiBC,iBAAjB,IAAsC3C,KAAK,CAACuB,QAAN,CAC1Ca,YAAY,CAACjB,YAAD,CAD8B,CAA5C;AAGA,QAAMyB,SAAS,GAAG5C,KAAK,CAACyC,MAAN,CAAoC,IAApC,CAAlB;AAEAI,EAAAA,yBAAyB,CAAC,MAAM;AAC9B,UAAMC,OAAO,GAAGF,SAAS,CAACG,OAA1B;;AACA,QAAI,CAACD,OAAL,EAAc;AACZ;AACD;;AACD,UAAME,GAAG,GAAG3C,uBAAuB,CAACmC,GAAG,CAACO,OAAL,CAAvB,GAAuCzC,gBAAnD;AAEAwC,IAAAA,OAAO,CAACG,QAAR,CAAiB;AACfD,MAAAA;AADe,KAAjB;AAGD,GAVwB,EAUtB,CAACJ,SAAD,EAAYJ,GAAZ,CAVsB,CAAzB;AAYA,QAAMU,0BAA0B,GAAGC,oBAAoB,CAACR,iBAAD,CAAvD;AAEA,QAAMS,QAAQ,GAAGpD,KAAK,CAACyB,WAAN,CACd4B,CAAD,IAAsB;AACpB,UAAML,GAAG,GAAGK,CAAC,CAACC,aAAF,CAAgBC,SAA5B;;AACA,QAAIP,GAAG,KAAK,CAAZ,EAAe;AACb;AACD;;AAED,UAAMQ,MAAM,GAAGR,GAAG,GAAGzC,WAArB;AACA,UAAMc,KAAK,GAAGlB,0BAA0B,CAACqD,MAAD,CAAxC;;AAEA,QAAIhB,GAAG,CAACO,OAAJ,KAAgB1B,KAApB,EAA2B;AACzBmB,MAAAA,GAAG,CAACO,OAAJ,GAAc1B,KAAd;AACA6B,MAAAA,0BAA0B,CAACd,YAAY,CAACf,KAAD,CAAb,CAA1B;AACD;AACF,GAdc,EAef,CAAC6B,0BAAD,CAfe,CAAjB;AAkBA,sBACE;AACE,IAAA,GAAG,EAAEN,SADP;AAEE,IAAA,KAAK,EAAE;AACLT,MAAAA,MADK;AAELD,MAAAA,KAFK;AAGLuB,MAAAA,QAAQ,EAAE;AAHL,KAFT;AAOE,IAAA,QAAQ,EAAEL;AAPZ,kBASE;AACE,IAAA,KAAK,EAAE;AACLjB,MAAAA,MAAM,EAAEI,eAAe,GAAG9B,WADrB;AAELiD,MAAAA,QAAQ,EAAE;AAFL;AADT,KAMG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgBC,GAAhB,CAAqBC,EAAD,iBACnB;AACE,IAAA,GAAG,EAAEA,EADP;AAEE,IAAA,KAAK,EAAE;AACLC,MAAAA,UAAU,EAAE,WADP;AAELC,MAAAA,SAAS,EAAG,cAAazD,uBAAuB,CAC9CqC,cAAc,CAACkB,EAAD,CADgC,CAE9C,KAJG;AAKLG,MAAAA,IAAI,EAAE,CALD;AAMLC,MAAAA,KAAK,EAAE,CANF;AAOLN,MAAAA,QAAQ,EAAE,UAPL;AAQLvB,MAAAA,MAAM,EAAE/B,cAAc,CAAC,UAAD,EAAasC,cAAc,CAACkB,EAAD,CAA3B,CARjB,CASL;;AATK;AAFT,KAcG7C,UAAU,CAAC;AACVM,IAAAA,KAAK,EAAEqB,cAAc,CAACkB,EAAD,CADX;AAEVpC,IAAAA,MAAM,EAAEyC,KAFE;AAGVtC,IAAAA,MAAM,EAAEsC;AAHE,GAAD,CAdb,CADD,CANH,CATF,CADF;AAyCD;;AAED,MAAMA,KAAK,GAAG,MAAM,IAApB;;AAEA,MAAMjC,MAAM,GAAG/B,UAAU,CAACiE,MAAX,CAAkB;AAC/BjC,EAAAA,KAAK,EAAE;AACLkC,IAAAA,IAAI,EAAE;AADD;AADwB,CAAlB,CAAf;AAMA,OAAO,SAAShB,oBAAT,CAA8BiB,QAA9B,EAAkD;AACvD,QAAMC,OAAO,GAAGrE,KAAK,CAACyC,MAAN,CAAsB,IAAtB,CAAhB;AACA,QAAM6B,MAAM,GAAG5D,SAAS,CAAC0D,QAAD,CAAxB;AACA,QAAMG,OAAO,GAAGvE,KAAK,CAACyC,MAAN,CAAkB,IAAlB,CAAhB;AAEAzC,EAAAA,KAAK,CAACwE,SAAN,CAAgB,MAAM;AACpB,WAAO,MAAM;AACXH,MAAAA,OAAO,CAACtB,OAAR,GAAkB,KAAlB;;AACA,UAAIwB,OAAO,CAACxB,OAAZ,EAAqB;AACnB0B,QAAAA,MAAM,CAACC,oBAAP,CAA4BH,OAAO,CAACxB,OAApC;AACD;AACF,KALD;AAMD,GAPD,EAOG,CAACsB,OAAD,EAAUE,OAAV,CAPH;AASA,SAAOvE,KAAK,CAACyB,WAAN,CACJkD,IAAD,IAAe;AACb,QAAIJ,OAAO,CAACxB,OAAZ,EAAqB;AACnB0B,MAAAA,MAAM,CAACC,oBAAP,CAA4BH,OAAO,CAACxB,OAApC;AACD;;AACDwB,IAAAA,OAAO,CAACxB,OAAR,GAAkB0B,MAAM,CAACG,qBAAP,CAA6B,YAAY;AACzD,UAAIP,OAAO,CAACtB,OAAZ,EAAqB;AACnBuB,QAAAA,MAAM,CAACvB,OAAP,CAAe4B,IAAf;AACD;AACF,KAJiB,CAAlB;AAKD,GAVI,EAWL,CAACN,OAAD,EAAUE,OAAV,EAAmBD,MAAnB,CAXK,CAAP;AAaD;AAED,MAAMzB,yBAAyB,GAC7B,OAAO4B,MAAP,KAAkB,WAAlB,GAAgCzE,KAAK,CAAC6E,eAAtC,GAAwD7E,KAAK,CAACwE,SADhE;AAGA,4BAAexE,KAAK,CAAC8E,IAAN,CAAWjE,MAAX,CAAf","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
|
-
|
|
20
|
-
|
|
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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
|
|
6
|
-
|
|
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,
|
|
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"]}
|