react-native-paper-dates 0.11.15 → 0.14.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.
- package/lib/commonjs/Date/CalendarEdit.js +8 -4
- package/lib/commonjs/Date/CalendarEdit.js.map +1 -1
- package/lib/commonjs/Date/DatePickerInput.js +4 -2
- package/lib/commonjs/Date/DatePickerInput.js.map +1 -1
- package/lib/commonjs/Date/DatePickerInput.shared.js.map +1 -1
- package/lib/commonjs/Date/DatePickerInputWithoutModal.js +14 -1
- package/lib/commonjs/Date/DatePickerInputWithoutModal.js.map +1 -1
- package/lib/commonjs/Date/DatePickerModal.js +2 -0
- package/lib/commonjs/Date/DatePickerModal.js.map +1 -1
- package/lib/commonjs/Date/DatePickerModalContent.js +4 -2
- package/lib/commonjs/Date/DatePickerModalContent.js.map +1 -1
- package/lib/commonjs/Date/DatePickerModalContentHeader.js +6 -4
- package/lib/commonjs/Date/DatePickerModalContentHeader.js.map +1 -1
- package/lib/commonjs/Date/Swiper.js +6 -4
- package/lib/commonjs/Date/Swiper.js.map +1 -1
- package/lib/commonjs/Date/Swiper.native.js +2 -1
- package/lib/commonjs/Date/Swiper.native.js.map +1 -1
- package/lib/commonjs/Date/YearPicker.js +3 -0
- package/lib/commonjs/Date/YearPicker.js.map +1 -1
- package/lib/commonjs/TextInputMask.js +2 -0
- package/lib/commonjs/TextInputMask.js.map +1 -1
- package/lib/commonjs/Time/AnalogClock.js +7 -3
- package/lib/commonjs/Time/AnalogClock.js.map +1 -1
- package/lib/commonjs/Time/AnalogClockHours.js +4 -9
- package/lib/commonjs/Time/AnalogClockHours.js.map +1 -1
- package/lib/commonjs/Time/TimeInput.js +2 -1
- package/lib/commonjs/Time/TimeInput.js.map +1 -1
- package/lib/commonjs/Time/TimeInputs.js +4 -1
- package/lib/commonjs/Time/TimeInputs.js.map +1 -1
- package/lib/commonjs/Time/TimePicker.js +9 -2
- package/lib/commonjs/Time/TimePicker.js.map +1 -1
- package/lib/commonjs/Time/TimePickerModal.js +5 -1
- package/lib/commonjs/Time/TimePickerModal.js.map +1 -1
- package/lib/commonjs/index.js +9 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/translations/he.js +25 -0
- package/lib/commonjs/translations/he.js.map +1 -0
- package/lib/module/Date/CalendarEdit.js +8 -4
- package/lib/module/Date/CalendarEdit.js.map +1 -1
- package/lib/module/Date/DatePickerInput.js +4 -2
- package/lib/module/Date/DatePickerInput.js.map +1 -1
- package/lib/module/Date/DatePickerInput.shared.js.map +1 -1
- package/lib/module/Date/DatePickerInputWithoutModal.js +14 -1
- package/lib/module/Date/DatePickerInputWithoutModal.js.map +1 -1
- package/lib/module/Date/DatePickerModal.js +2 -0
- package/lib/module/Date/DatePickerModal.js.map +1 -1
- package/lib/module/Date/DatePickerModalContent.js +4 -2
- package/lib/module/Date/DatePickerModalContent.js.map +1 -1
- package/lib/module/Date/DatePickerModalContentHeader.js +6 -4
- package/lib/module/Date/DatePickerModalContentHeader.js.map +1 -1
- package/lib/module/Date/Swiper.js +6 -4
- package/lib/module/Date/Swiper.js.map +1 -1
- package/lib/module/Date/Swiper.native.js +2 -1
- package/lib/module/Date/Swiper.native.js.map +1 -1
- package/lib/module/Date/YearPicker.js +4 -1
- package/lib/module/Date/YearPicker.js.map +1 -1
- package/lib/module/TextInputMask.js +2 -0
- package/lib/module/TextInputMask.js.map +1 -1
- package/lib/module/Time/AnalogClock.js +7 -3
- package/lib/module/Time/AnalogClock.js.map +1 -1
- package/lib/module/Time/AnalogClockHours.js +4 -8
- package/lib/module/Time/AnalogClockHours.js.map +1 -1
- package/lib/module/Time/TimeInput.js +2 -1
- package/lib/module/Time/TimeInput.js.map +1 -1
- package/lib/module/Time/TimeInputs.js +4 -1
- package/lib/module/Time/TimeInputs.js.map +1 -1
- package/lib/module/Time/TimePicker.js +9 -2
- package/lib/module/Time/TimePicker.js.map +1 -1
- package/lib/module/Time/TimePickerModal.js +5 -1
- package/lib/module/Time/TimePickerModal.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/translations/he.js +18 -0
- package/lib/module/translations/he.js.map +1 -0
- package/lib/typescript/Date/CalendarEdit.d.ts +2 -1
- package/lib/typescript/Date/DatePickerInput.d.ts +1 -1
- package/lib/typescript/Date/DatePickerInput.shared.d.ts +2 -1
- package/lib/typescript/Date/DatePickerInputWithoutModal.d.ts +8 -7
- package/lib/typescript/Date/DatePickerModal.d.ts +1 -0
- package/lib/typescript/Date/DatePickerModalContent.d.ts +1 -0
- package/lib/typescript/Date/DatePickerModalContentHeader.d.ts +2 -0
- package/lib/typescript/TextInputMask.d.ts +5 -6
- package/lib/typescript/Time/TimeInput.d.ts +1 -0
- package/lib/typescript/Time/TimeInputs.d.ts +2 -1
- package/lib/typescript/Time/TimePicker.d.ts +3 -1
- package/lib/typescript/Time/TimePickerModal.d.ts +3 -1
- package/lib/typescript/index.d.ts +1 -0
- package/lib/typescript/translations/he.d.ts +3 -0
- package/package.json +26 -25
- package/src/Date/CalendarEdit.tsx +5 -0
- package/src/Date/DatePickerInput.shared.tsx +2 -1
- package/src/Date/DatePickerInput.tsx +2 -0
- package/src/Date/DatePickerInputWithoutModal.tsx +14 -0
- package/src/Date/DatePickerModal.tsx +3 -0
- package/src/Date/DatePickerModalContent.tsx +3 -0
- package/src/Date/DatePickerModalContentHeader.tsx +9 -3
- package/src/Date/Swiper.native.tsx +1 -0
- package/src/Date/Swiper.tsx +3 -1
- package/src/Date/YearPicker.tsx +4 -1
- package/src/TextInputMask.tsx +2 -0
- package/src/Time/AnalogClock.tsx +7 -6
- package/src/Time/AnalogClockHours.tsx +10 -6
- package/src/Time/TimeInput.tsx +3 -1
- package/src/Time/TimeInputs.tsx +4 -0
- package/src/Time/TimePicker.tsx +9 -1
- package/src/Time/TimePickerModal.tsx +6 -0
- package/src/index.tsx +1 -0
- package/src/translations/he.ts +21 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","StyleSheet","IconButton","Text","useTheme","useHeaderTextColor","Color","getTranslation","getLabel","locale","mode","configuredLabel","DatePickerModalContentHeader","props","onToggle","collapsed","moreLabel","uppercase","editIcon","calendarIcon","theme","label","color","supportingTextColor","isV3","colors","onSurfaceVariant","allowEditing","textFont","fonts","labelMedium","medium","styles","header","toUpperCase","headerContentContainer","fill","onSurface","HeaderContentSingle","state","emptyLabel","lighterColor","fade","rgb","toString","dateColor","date","formatter","useMemo","Intl","DateTimeFormat","month","day","singleHeaderText","format","HeaderContentMulti","dateCount","dates","length","map","join","HeaderContentRange","headerSeparator","startLabel","endLabel","startColor","startDate","endColor","endDate","rangeHeaderText","create","flex","animated","paddingBottom","elevation","safeContent","height","alignItems","flexDirection","paddingLeft","paddingRight","marginTop","letterSpacing","fontSize","excludeInRangeHeaderText","excludeInRangeHeaderTextSmall","marginLeft","appbarHeader","column","row"],"sources":["DatePickerModalContentHeader.tsx"],"sourcesContent":["import * as React from 'react'\nimport { View, StyleSheet } from 'react-native'\nimport { IconButton, MD2Theme, Text, useTheme } from 'react-native-paper'\nimport type { ModeType } from './Calendar'\nimport type { LocalState } from './DatePickerModalContent'\nimport { useHeaderTextColor } from '../utils'\nimport Color from 'color'\nimport { getTranslation } from '../translations/utils'\n\nexport interface HeaderPickProps {\n moreLabel?: string\n label?: string\n emptyLabel?: string\n saveLabel?: string\n uppercase?: boolean\n headerSeparator?: string\n startLabel?: string\n endLabel?: string\n editIcon?: string\n calendarIcon?: string\n closeIcon?: string\n}\n\nexport interface HeaderContentProps extends HeaderPickProps {\n state: LocalState\n mode: ModeType\n collapsed: boolean\n onToggle: () => any\n locale: string | undefined\n}\n\nfunction getLabel(\n locale: string | undefined,\n mode: ModeType,\n configuredLabel?: string\n) {\n if (configuredLabel) {\n return configuredLabel\n }\n if (mode === 'range') {\n return getTranslation(locale, 'selectRange')\n }\n if (mode === 'multiple') {\n return getTranslation(locale, 'selectMultiple')\n }\n if (mode === 'single') {\n return getTranslation(locale, 'selectSingle')\n }\n return '...?'\n}\n\nexport default function DatePickerModalContentHeader(\n props: HeaderContentProps\n) {\n const {\n onToggle,\n collapsed,\n mode,\n moreLabel,\n uppercase,\n editIcon,\n calendarIcon,\n } = props\n const theme = useTheme()\n const label = getLabel(props.locale, props.mode, props.label)\n\n const color = useHeaderTextColor()\n const supportingTextColor = theme.isV3 ? theme.colors.onSurfaceVariant : color\n const allowEditing = mode !== 'multiple'\n\n let textFont = theme?.isV3\n ? theme.fonts.labelMedium\n : (theme as any as MD2Theme).fonts.medium\n\n return (\n <View style={styles.header}>\n <View>\n <Text\n style={[styles.label, { color: supportingTextColor, ...textFont }]}\n >\n {uppercase ? label.toUpperCase() : label}\n </Text>\n <View style={styles.headerContentContainer}>\n {mode === 'range' ? (\n <HeaderContentRange {...props} color={color} />\n ) : null}\n {mode === 'single' ? (\n <HeaderContentSingle {...props} color={color} />\n ) : null}\n {mode === 'multiple' ? (\n <HeaderContentMulti\n {...props}\n color={color}\n moreLabel={moreLabel}\n />\n ) : null}\n </View>\n </View>\n <View style={styles.fill} />\n {allowEditing ? (\n <IconButton\n icon={\n collapsed\n ? editIcon ?? theme.isV3\n ? 'pencil-outline'\n : 'pencil'\n : calendarIcon ?? theme.isV3\n ? 'calendar-blank'\n : 'calendar'\n }\n accessibilityLabel={\n collapsed\n ? getTranslation(props.locale, 'typeInDate')\n : getTranslation(props.locale, 'pickDateFromCalendar')\n }\n iconColor={theme.isV3 ? theme.colors.onSurface : color}\n onPress={onToggle}\n />\n ) : null}\n </View>\n )\n}\n\nexport function HeaderContentSingle({\n state,\n emptyLabel = ' ',\n color,\n locale,\n}: HeaderContentProps & { color: string }) {\n const theme = useTheme()\n const lighterColor = Color(color).fade(0.5).rgb().toString()\n const dateColor = state.date\n ? theme.isV3\n ? theme.colors.onSurface\n : color\n : lighterColor\n\n const formatter = React.useMemo(() => {\n return new Intl.DateTimeFormat(locale, {\n month: 'short',\n day: 'numeric',\n })\n }, [locale])\n\n return (\n <Text style={[styles.singleHeaderText, { color: dateColor }]}>\n {state.date ? formatter.format(state.date) : emptyLabel}\n </Text>\n )\n}\n\nexport function HeaderContentMulti({\n state,\n emptyLabel = ' ',\n moreLabel = 'more',\n color,\n locale,\n}: HeaderContentProps & { color: string; moreLabel: string | undefined }) {\n const theme = useTheme()\n const dateCount = state.dates?.length || 0\n const lighterColor = Color(color).fade(0.5).rgb().toString()\n const dateColor = dateCount\n ? theme.isV3\n ? theme.colors.onSurface\n : color\n : lighterColor\n\n const formatter = React.useMemo(() => {\n return new Intl.DateTimeFormat(locale, {\n month: 'short',\n day: 'numeric',\n })\n }, [locale])\n\n let label = emptyLabel\n if (dateCount) {\n if (dateCount <= 2) {\n label = state.dates!.map((date) => formatter.format(date)).join(', ')\n } else {\n label =\n formatter.format(state.dates![0]) + ` (+ ${dateCount - 1} ${moreLabel})`\n }\n }\n\n return (\n <Text style={[styles.singleHeaderText, { color: dateColor }]}>{label}</Text>\n )\n}\n\nexport function HeaderContentRange({\n locale,\n state,\n headerSeparator = '-',\n startLabel = 'Start',\n endLabel = 'End',\n color,\n}: HeaderContentProps & { color: string }) {\n const theme = useTheme()\n const formatter = React.useMemo(() => {\n return new Intl.DateTimeFormat(locale, {\n month: 'short',\n day: 'numeric',\n })\n }, [locale])\n\n const lighterColor = Color(color).fade(0.5).rgb().toString()\n const startColor = state.startDate\n ? theme.isV3\n ? theme.colors.onSurface\n : color\n : lighterColor\n const endColor = state.endDate\n ? theme.isV3\n ? theme.colors.onSurface\n : color\n : lighterColor\n\n return (\n <>\n <Text style={[styles.rangeHeaderText, { color: startColor }]}>\n {state.startDate ? formatter.format(state.startDate) : startLabel}\n </Text>\n <Text style={[styles.headerSeparator, { color }]}>{headerSeparator}</Text>\n <Text style={[styles.rangeHeaderText, { color: endColor }]}>\n {state.endDate ? formatter.format(state.endDate) : endLabel}\n </Text>\n </>\n )\n}\n\nconst styles = StyleSheet.create({\n fill: {\n flex: 1,\n },\n animated: {\n paddingBottom: 0,\n elevation: 4,\n },\n safeContent: {\n paddingBottom: 0,\n },\n header: {\n height: 75,\n alignItems: 'center',\n flexDirection: 'row',\n paddingLeft: 24,\n paddingRight: 12,\n },\n headerContentContainer: { marginTop: 5, flexDirection: 'row' },\n label: { color: '#fff', letterSpacing: 1, fontSize: 13 },\n singleHeaderText: { color: '#fff', fontSize: 25 },\n rangeHeaderText: { color: '#fff', fontSize: 25 },\n excludeInRangeHeaderText: { fontSize: 25 },\n excludeInRangeHeaderTextSmall: {\n fontSize: 14,\n marginTop: -3,\n marginLeft: 3,\n },\n headerSeparator: {\n color: 'rgba(255,255,255,1)',\n fontSize: 25,\n paddingLeft: 6,\n paddingRight: 6,\n },\n appbarHeader: {\n elevation: 0,\n },\n column: { flexDirection: 'column' },\n row: { flexDirection: 'row' },\n})\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","IconButton","Text","useTheme","useHeaderTextColor","Color","getTranslation","getLabel","locale","mode","configuredLabel","DatePickerModalContentHeader","props","onToggle","collapsed","moreLabel","uppercase","editIcon","calendarIcon","inputDate","allowEditing","theme","label","color","isAllowEditing","undefined","supportingTextColor","isV3","colors","onSurfaceVariant","textFont","fonts","labelMedium","medium","styles","header","toUpperCase","headerContentContainer","fill","onSurface","HeaderContentSingle","state","emptyLabel","lighterColor","fade","rgb","toString","dateColor","date","formatter","useMemo","Intl","DateTimeFormat","month","day","singleHeaderText","format","HeaderContentMulti","dateCount","dates","length","map","join","HeaderContentRange","headerSeparator","startLabel","endLabel","startColor","startDate","endColor","endDate","rangeHeaderText","create","flex","animated","paddingBottom","elevation","safeContent","height","alignItems","flexDirection","paddingLeft","paddingRight","marginTop","letterSpacing","fontSize","excludeInRangeHeaderText","excludeInRangeHeaderTextSmall","marginLeft","appbarHeader","column","row"],"sources":["DatePickerModalContentHeader.tsx"],"sourcesContent":["import * as React from 'react'\nimport { View, StyleSheet } from 'react-native'\nimport { IconButton, MD2Theme, Text, useTheme } from 'react-native-paper'\nimport type { ModeType } from './Calendar'\nimport type { LocalState } from './DatePickerModalContent'\nimport { useHeaderTextColor } from '../utils'\nimport Color from 'color'\nimport { getTranslation } from '../translations/utils'\n\nexport interface HeaderPickProps {\n moreLabel?: string\n label?: string\n emptyLabel?: string\n saveLabel?: string\n uppercase?: boolean\n headerSeparator?: string\n startLabel?: string\n endLabel?: string\n editIcon?: string\n calendarIcon?: string\n closeIcon?: string\n allowEditing?: boolean\n}\n\nexport interface HeaderContentProps extends HeaderPickProps {\n state: LocalState\n mode: ModeType\n collapsed: boolean\n onToggle: () => any\n locale: string | undefined\n inputDate?: boolean\n}\n\nfunction getLabel(\n locale: string | undefined,\n mode: ModeType,\n configuredLabel?: string\n) {\n if (configuredLabel) {\n return configuredLabel\n }\n if (mode === 'range') {\n return getTranslation(locale, 'selectRange')\n }\n if (mode === 'multiple') {\n return getTranslation(locale, 'selectMultiple')\n }\n if (mode === 'single') {\n return getTranslation(locale, 'selectSingle')\n }\n return '...?'\n}\n\nexport default function DatePickerModalContentHeader(\n props: HeaderContentProps\n) {\n const {\n onToggle,\n collapsed,\n mode,\n moreLabel,\n uppercase,\n editIcon,\n calendarIcon,\n inputDate,\n allowEditing,\n } = props\n const theme = useTheme()\n const label = getLabel(props.locale, props.mode, props.label)\n\n const color = useHeaderTextColor()\n\n const isAllowEditing = allowEditing && mode !== 'multiple' && inputDate !== undefined\n\n const supportingTextColor = theme.isV3 ? theme.colors.onSurfaceVariant : color\n\n const textFont = theme?.isV3\n ? theme.fonts.labelMedium\n : (theme as any as MD2Theme).fonts.medium\n\n return (\n <View style={styles.header}>\n <View>\n <Text\n style={[styles.label, { color: supportingTextColor, ...textFont }]}\n >\n {uppercase ? label.toUpperCase() : label}\n </Text>\n <View style={styles.headerContentContainer}>\n {mode === 'range' ? (\n <HeaderContentRange {...props} color={color} />\n ) : null}\n {mode === 'single' ? (\n <HeaderContentSingle {...props} color={color} />\n ) : null}\n {mode === 'multiple' ? (\n <HeaderContentMulti\n {...props}\n color={color}\n moreLabel={moreLabel}\n />\n ) : null}\n </View>\n </View>\n <View style={styles.fill} />\n {isAllowEditing ? (\n <IconButton\n icon={\n collapsed\n ? editIcon ?? theme.isV3\n ? 'pencil-outline'\n : 'pencil'\n : calendarIcon ?? theme.isV3\n ? 'calendar-blank'\n : 'calendar'\n }\n accessibilityLabel={\n collapsed\n ? getTranslation(props.locale, 'typeInDate')\n : getTranslation(props.locale, 'pickDateFromCalendar')\n }\n iconColor={theme.isV3 ? theme.colors.onSurface : color}\n onPress={onToggle}\n />\n ) : null}\n </View>\n )\n}\n\nexport function HeaderContentSingle({\n state,\n emptyLabel = ' ',\n color,\n locale,\n}: HeaderContentProps & { color: string }) {\n const theme = useTheme()\n const lighterColor = Color(color).fade(0.5).rgb().toString()\n const dateColor = state.date\n ? theme.isV3\n ? theme.colors.onSurface\n : color\n : lighterColor\n\n const formatter = React.useMemo(() => {\n return new Intl.DateTimeFormat(locale, {\n month: 'short',\n day: 'numeric',\n })\n }, [locale])\n\n return (\n <Text style={[styles.singleHeaderText, { color: dateColor }]}>\n {state.date ? formatter.format(state.date) : emptyLabel}\n </Text>\n )\n}\n\nexport function HeaderContentMulti({\n state,\n emptyLabel = ' ',\n moreLabel = 'more',\n color,\n locale,\n}: HeaderContentProps & { color: string; moreLabel: string | undefined }) {\n const theme = useTheme()\n const dateCount = state.dates?.length || 0\n const lighterColor = Color(color).fade(0.5).rgb().toString()\n const dateColor = dateCount\n ? theme.isV3\n ? theme.colors.onSurface\n : color\n : lighterColor\n\n const formatter = React.useMemo(() => {\n return new Intl.DateTimeFormat(locale, {\n month: 'short',\n day: 'numeric',\n })\n }, [locale])\n\n let label = emptyLabel\n if (dateCount) {\n if (dateCount <= 2) {\n label = state.dates!.map((date) => formatter.format(date)).join(', ')\n } else {\n label =\n formatter.format(state.dates![0]) + ` (+ ${dateCount - 1} ${moreLabel})`\n }\n }\n\n return (\n <Text style={[styles.singleHeaderText, { color: dateColor }]}>{label}</Text>\n )\n}\n\nexport function HeaderContentRange({\n locale,\n state,\n headerSeparator = '-',\n startLabel = 'Start',\n endLabel = 'End',\n color,\n}: HeaderContentProps & { color: string }) {\n const theme = useTheme()\n const formatter = React.useMemo(() => {\n return new Intl.DateTimeFormat(locale, {\n month: 'short',\n day: 'numeric',\n })\n }, [locale])\n\n const lighterColor = Color(color).fade(0.5).rgb().toString()\n const startColor = state.startDate\n ? theme.isV3\n ? theme.colors.onSurface\n : color\n : lighterColor\n const endColor = state.endDate\n ? theme.isV3\n ? theme.colors.onSurface\n : color\n : lighterColor\n\n return (\n <>\n <Text style={[styles.rangeHeaderText, { color: startColor }]}>\n {state.startDate ? formatter.format(state.startDate) : startLabel}\n </Text>\n <Text style={[styles.headerSeparator, { color }]}>{headerSeparator}</Text>\n <Text style={[styles.rangeHeaderText, { color: endColor }]}>\n {state.endDate ? formatter.format(state.endDate) : endLabel}\n </Text>\n </>\n )\n}\n\nconst styles = StyleSheet.create({\n fill: {\n flex: 1,\n },\n animated: {\n paddingBottom: 0,\n elevation: 4,\n },\n safeContent: {\n paddingBottom: 0,\n },\n header: {\n height: 75,\n alignItems: 'center',\n flexDirection: 'row',\n paddingLeft: 24,\n paddingRight: 12,\n },\n headerContentContainer: { marginTop: 5, flexDirection: 'row' },\n label: { color: '#fff', letterSpacing: 1, fontSize: 13 },\n singleHeaderText: { color: '#fff', fontSize: 25 },\n rangeHeaderText: { color: '#fff', fontSize: 25 },\n excludeInRangeHeaderText: { fontSize: 25 },\n excludeInRangeHeaderTextSmall: {\n fontSize: 14,\n marginTop: -3,\n marginLeft: 3,\n },\n headerSeparator: {\n color: 'rgba(255,255,255,1)',\n fontSize: 25,\n paddingLeft: 6,\n paddingRight: 6,\n },\n appbarHeader: {\n elevation: 0,\n },\n column: { flexDirection: 'column' },\n row: { flexDirection: 'row' },\n})\n"],"mappings":"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"}
|
|
@@ -69,8 +69,7 @@ function VerticalScroller(_ref3) {
|
|
|
69
69
|
renderItem
|
|
70
70
|
} = _ref3;
|
|
71
71
|
const idx = React.useRef(initialIndex);
|
|
72
|
-
const [visibleIndexes, setVisibleIndexes] = React.useState(visibleArray(initialIndex));
|
|
73
|
-
|
|
72
|
+
const [visibleIndexes, setVisibleIndexes] = React.useState(visibleArray(initialIndex));
|
|
74
73
|
const parentRef = React.useRef(null);
|
|
75
74
|
useIsomorphicLayoutEffect(() => {
|
|
76
75
|
const element = parentRef.current;
|
|
@@ -101,7 +100,8 @@ function VerticalScroller(_ref3) {
|
|
|
101
100
|
}
|
|
102
101
|
}, [setVisibleIndexesThrottled]);
|
|
103
102
|
return /*#__PURE__*/React.createElement("div", {
|
|
104
|
-
ref: parentRef
|
|
103
|
+
ref: parentRef // eslint-disable-next-line react-native/no-inline-styles
|
|
104
|
+
,
|
|
105
105
|
style: {
|
|
106
106
|
height,
|
|
107
107
|
width,
|
|
@@ -109,12 +109,14 @@ function VerticalScroller(_ref3) {
|
|
|
109
109
|
},
|
|
110
110
|
onScroll: onScroll
|
|
111
111
|
}, /*#__PURE__*/React.createElement("div", {
|
|
112
|
+
// eslint-disable-next-line react-native/no-inline-styles
|
|
112
113
|
style: {
|
|
113
114
|
height: estimatedHeight * totalMonths,
|
|
114
115
|
position: 'relative'
|
|
115
116
|
}
|
|
116
117
|
}, [0, 1, 2, 3, 4].map(vi => /*#__PURE__*/React.createElement("div", {
|
|
117
|
-
key: vi
|
|
118
|
+
key: vi // eslint-disable-next-line react-native/no-inline-styles
|
|
119
|
+
,
|
|
118
120
|
style: {
|
|
119
121
|
willChange: 'transform',
|
|
120
122
|
transform: `translateY(${getVerticalMonthsOffset(visibleIndexes[vi])}px)`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"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"],"sources":["Swiper.tsx"],"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 }}\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"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"],"sources":["Swiper.tsx"],"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 // eslint-disable-next-line react-native/no-inline-styles\n style={{\n height,\n width,\n overflow: 'auto',\n }}\n onScroll={onScroll}\n >\n <div\n // eslint-disable-next-line react-native/no-inline-styles\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 // eslint-disable-next-line react-native/no-inline-styles\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 }}\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"],"mappings":"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"}
|
|
@@ -144,7 +144,8 @@ function SwiperInner(_ref3) {
|
|
|
144
144
|
width: isHorizontal ? width * totalMonths : width
|
|
145
145
|
}]
|
|
146
146
|
}, visibleIndexes ? new Array(visibleIndexes.length).fill(undefined).map((_, vi) => /*#__PURE__*/React.createElement(View, {
|
|
147
|
-
key: vi
|
|
147
|
+
key: vi // eslint-disable-next-line react-native/no-inline-styles
|
|
148
|
+
,
|
|
148
149
|
style: {
|
|
149
150
|
top: isHorizontal ? 0 : getVerticalMonthsOffset(visibleIndexes[vi]),
|
|
150
151
|
left: isHorizontal ? getHorizontalMonthOffset(visibleIndexes[vi], width) : 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"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"],"sources":["Swiper.native.tsx"],"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 scrollsToTop={false}\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"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"],"sources":["Swiper.native.tsx"],"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 scrollsToTop={false}\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 // eslint-disable-next-line react-native/no-inline-styles\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"],"mappings":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAGEC,UAHF,EAIEC,UAJF,EAKEC,IALF,QAMO,cANP;AAOA,SACEC,wBADF,EAEEC,0BAFF,EAGEC,cAHF,EAIEC,uBAJF,EAKEC,gBALF,QAMO,SANP;AAQA,SAAsBC,aAAtB,QAA2C,eAA3C;AACA,SAASC,WAAT,EAAsBC,oBAAtB,EAA4CC,WAA5C,QAA+D,aAA/D;AACA,OAAOC,SAAP,MAAsB,aAAtB;AAEA,MAAMC,MAAM,GAAGZ,UAAU,CAACa,MAAX,CAAkB;EAC/BC,SAAS,EAAE;IACTC,IAAI,EAAE;EADG,CADoB;EAI/BC,KAAK,EAAE;IACLC,QAAQ,EAAE;EADL;AAJwB,CAAlB,CAAf;;AASA,SAASC,eAAT,CACEC,CADF,QAGE;EAAA,IADA;IAAEC,YAAF;IAAgBC;EAAhB,CACA;;EACA,IAAID,YAAY,IAAIC,MAAM,GAAG,GAA7B,EAAkC;IAChC,OAAO,CAACF,CAAC,GAAG,CAAL,EAAQA,CAAR,EAAWA,CAAC,GAAG,CAAf,CAAP;EACD;;EACD,OAAO,CAACA,CAAC,GAAG,CAAL,EAAQA,CAAC,GAAG,CAAZ,EAAeA,CAAf,EAAkBA,CAAC,GAAG,CAAtB,EAAyBA,CAAC,GAAG,CAA7B,CAAP;AACD;;AAED,SAASG,MAAT,CAAgBC,KAAhB,EAAoC;EAClC,oBACE,oBAAC,SAAD,QACG;IAAA,IAAC;MAAEC,KAAF;MAASH;IAAT,CAAD;IAAA,oBACC,oBAAC,WAAD,eAAiBE,KAAjB;MAAwB,KAAK,EAAEC,KAA/B;MAAsC,MAAM,EAAEH;IAA9C,GADD;EAAA,CADH,CADF;AAOD;;AAED,SAASI,WAAT,QASoD;EAAA,IAT/B;IACnBC,UADmB;IAEnBC,UAFmB;IAGnBC,YAHmB;IAInBC,YAJmB;IAKnBC,YALmB;IAMnBC,YANmB;IAOnBP,KAPmB;IAQnBH;EARmB,CAS+B;EAClD,MAAMW,GAAG,GAAGlC,KAAK,CAACmC,MAAN,CAAqBF,YAArB,CAAZ;EACA,MAAMX,YAAY,GAAGM,UAAU,KAAK,YAApC;EACA,MAAM,CAACQ,cAAD,EAAiBC,iBAAjB,IAAsCrC,KAAK,CAACsC,QAAN,CAC1ClB,eAAe,CAACa,YAAD,EAAe;IAAEX,YAAF;IAAgBC;EAAhB,CAAf,CAD2B,CAA5C;EAIA,MAAMgB,SAAS,GAAGvC,KAAK,CAACmC,MAAN,CAAgC,IAAhC,CAAlB;EAEA,MAAMK,QAAQ,GAAGxC,KAAK,CAACyC,WAAN,CACf,CAACC,KAAD,EAAgBC,QAAhB,KAAsC;IACpCT,GAAG,CAACU,OAAJ,GAAcF,KAAd;IACAL,iBAAiB,CAACjB,eAAe,CAACsB,KAAD,EAAQ;MAAEpB,YAAF;MAAgBC;IAAhB,CAAR,CAAhB,CAAjB;;IAEA,IAAI,CAACgB,SAAS,CAACK,OAAf,EAAwB;MACtB;IACD;;IACD,MAAMC,MAAM,GAAGvB,YAAY,GACvBlB,wBAAwB,CAACsC,KAAD,EAAQhB,KAAR,CADD,GAEvBnB,uBAAuB,CAACmC,KAAD,CAAvB,GAAiClC,gBAFrC;;IAIA,IAAIc,YAAJ,EAAkB;MAChBiB,SAAS,CAACK,OAAV,CAAkBJ,QAAlB,CAA2B;QACzBM,CAAC,EAAE,CADsB;QAEzBC,CAAC,EAAEF,MAFsB;QAGzBF;MAHyB,CAA3B;IAKD,CAND,MAMO;MACLJ,SAAS,CAACK,OAAV,CAAkBJ,QAAlB,CAA2B;QACzBM,CAAC,EAAED,MADsB;QAEzBE,CAAC,EAAE,CAFsB;QAGzBJ;MAHyB,CAA3B;IAKD;EACF,CAzBc,EA0Bf,CAACJ,SAAD,EAAYjB,YAAZ,EAA0BI,KAA1B,EAAiCH,MAAjC,CA1Be,CAAjB;EA6BA,MAAMyB,MAAM,GAAGhD,KAAK,CAACyC,WAAN,CAAkB,MAAM;IACrCD,QAAQ,CAACN,GAAG,CAACU,OAAJ,GAAc,CAAf,EAAkB,IAAlB,CAAR;EACD,CAFc,EAEZ,CAACJ,QAAD,EAAWN,GAAX,CAFY,CAAf;EAIA,MAAMe,MAAM,GAAGjD,KAAK,CAACyC,WAAN,CAAkB,MAAM;IACrCD,QAAQ,CAACN,GAAG,CAACU,OAAJ,GAAc,CAAf,EAAkB,IAAlB,CAAR;EACD,CAFc,EAEZ,CAACJ,QAAD,EAAWN,GAAX,CAFY,CAAf;EAIA,MAAMgB,eAAe,GAAGlD,KAAK,CAACyC,WAAN,CAAkB,MAAM;IAC9CD,QAAQ,CAACN,GAAG,CAACU,OAAL,EAAc,KAAd,CAAR;EACD,CAFuB,EAErB,CAACJ,QAAD,CAFqB,CAAxB;EAIA,MAAMW,mBAAmB,GAAGnD,KAAK,CAACyC,WAAN,CACzBW,CAAD,IAAgD;IAC9C,MAAMC,aAAa,GAAGD,CAAC,CAACE,WAAF,CAAcD,aAApC;IACA,MAAME,QAAQ,GAAGH,CAAC,CAACE,WAAF,CAAcE,iBAA/B;IACA,MAAMC,QAAQ,GAAGnC,YAAY,GACzBoC,IAAI,CAACC,KAAL,CAAWN,aAAa,CAACN,CAAd,GAAkBQ,QAAQ,CAAC7B,KAAtC,CADyB,GAEzBrB,0BAA0B,CAACgD,aAAa,CAACP,CAAd,GAAkBpC,WAAnB,CAF9B;;IAIA,IAAI+C,QAAQ,KAAK,CAAjB,EAAoB;MAClB;IACD;;IAED,IAAIvB,GAAG,CAACU,OAAJ,KAAgBa,QAApB,EAA8B;MAC5BvB,GAAG,CAACU,OAAJ,GAAca,QAAd;MACApB,iBAAiB,CAACjB,eAAe,CAACqC,QAAD,EAAW;QAAEnC,YAAF;QAAgBC;MAAhB,CAAX,CAAhB,CAAjB;IACD;EACF,CAhByB,EAiB1B,CAACW,GAAD,EAAMX,MAAN,EAAcD,YAAd,CAjB0B,CAA5B;EAoBA,MAAMsC,WAAW,GAAG;IAClBlB,KAAK,EAAE,CADW;IAElBM,MAFkB;IAGlBC;EAHkB,CAApB;EAMAxC,aAAa,CACVgD,QAAD,IAAc;IACZ,IAAIA,QAAJ,EAAc;MACZjB,QAAQ,CAACiB,QAAD,EAAW,KAAX,CAAR;IACD;EACF,CALU,EAMX;IACEzB,YADF;IAEE6B,eAAe,EAAE3B;EAFnB,CANW,CAAb;EAYA,oBACE,uDACE,oBAAC,UAAD;IACE,YAAY,EAAE,KADhB;IAEE,GAAG,EAAEK,SAFP;IAGE,UAAU,EAAEjB,YAHd;IAIE,aAAa,EAAEA,YAJjB;IAKE,KAAK,EAAER,MAAM,CAACE,SALhB;IAME,mBAAmB,EAAEmC,mBANvB;IAOE,eAAe,EAAEA,mBAPnB;IAQE,QAAQ,EAAED,eARZ;IASE,8BAA8B,EAAE,KATlC;IAUE,4BAA4B,EAAE,KAVhC;IAWE,gBAAgB,EAAC,MAXnB;IAYE,mBAAmB,EAAE;EAZvB,gBAcE,oBAAC,IAAD;IACE,KAAK,EAAE,CACLpC,MAAM,CAACI,KADF,EAEL;MACEK,MAAM,EAAED,YAAY,GAChBC,MADgB,GAEhBZ,oBAAoB,GAAGC,WAH7B;MAIEc,KAAK,EAAEJ,YAAY,GAAGI,KAAK,GAAGd,WAAX,GAAyBc;IAJ9C,CAFK;EADT,GAWGU,cAAc,GACX,IAAI0B,KAAJ,CAAU1B,cAAc,CAAC2B,MAAzB,EAAiCC,IAAjC,CAAsCC,SAAtC,EAAiDC,GAAjD,CAAqD,CAACC,CAAD,EAAIC,EAAJ,kBACnD,oBAAC,IAAD;IACE,GAAG,EAAEA,EADP,CAEE;IAFF;IAGE,KAAK,EAAE;MACLC,GAAG,EAAE/C,YAAY,GACb,CADa,GAEbf,uBAAuB,CAAC6B,cAAc,CAACgC,EAAD,CAAf,CAHtB;MAILE,IAAI,EAAEhD,YAAY,GACdlB,wBAAwB,CAACgC,cAAc,CAACgC,EAAD,CAAf,EAAqB1C,KAArB,CADV,GAEd,CANC;MAOL6C,KAAK,EAAEjD,YAAY,GAAG2C,SAAH,GAAe,CAP7B;MAQLO,MAAM,EAAElD,YAAY,GAAG,CAAH,GAAO2C,SARtB;MASL9C,QAAQ,EAAE,UATL;MAULO,KAAK,EAAEJ,YAAY,GAAGI,KAAH,GAAWuC,SAVzB;MAWL1C,MAAM,EAAED,YAAY,GAChB2C,SADgB,GAEhB3D,cAAc,CAACsB,UAAD,EAAaQ,cAAc,CAACgC,EAAD,CAA3B;IAbb;EAHT,GAmBGvC,UAAU,CAAC;IACVa,KAAK,EAAEN,cAAc,CAACgC,EAAD,CADX;IAEVpB,MAAM,EAAEA,MAFE;IAGVC,MAAM,EAAEA;EAHE,CAAD,CAnBb,CADF,CADW,GA4BX,IAvCN,CAdF,CADF,EAyDGnB,YAAY,IAAIA,YAAY,CAAC8B,WAAD,CAzD/B,EA0DG7B,YAAY,IAAIA,YAAY,CAAC6B,WAAD,CA1D/B,CADF;AA8DD;;AAED,4BAAe5D,KAAK,CAACyE,IAAN,CAAWjD,MAAX,CAAf"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { FlatList, StyleSheet, View } from 'react-native';
|
|
2
|
+
import { FlatList, StyleSheet, View, ScrollView } from 'react-native';
|
|
3
3
|
import { Text, TouchableRipple, useTheme } from 'react-native-paper';
|
|
4
4
|
import { range } from '../utils';
|
|
5
5
|
const ITEM_HEIGHT = 62;
|
|
@@ -33,6 +33,9 @@ export default function YearPicker(_ref) {
|
|
|
33
33
|
ref: flatList,
|
|
34
34
|
style: styles.list,
|
|
35
35
|
data: years,
|
|
36
|
+
renderScrollComponent: sProps => {
|
|
37
|
+
return /*#__PURE__*/React.createElement(ScrollView, sProps);
|
|
38
|
+
},
|
|
36
39
|
renderItem: _ref2 => {
|
|
37
40
|
let {
|
|
38
41
|
item
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","FlatList","StyleSheet","View","Text","TouchableRipple","useTheme","range","ITEM_HEIGHT","YearPicker","selectedYear","selectingYear","onPressYear","startYear","endYear","theme","flatList","useRef","years","isNaN","useEffect","current","indexToGo","scrollToOffset","offset","animated","absoluteFill","styles","root","backgroundColor","colors","surface","opacity1","opacity0","list","item","YearPure","year","selected","textFont","isV3","fonts","bodyLarge","medium","String","yearButton","yearInner","primary","yearLabel","color","onPrimary","onSurfaceVariant","undefined","Year","memo","create","flex","top","zIndex","marginLeft","marginRight","height","justifyContent","borderRadius","overflow","alignItems","fontSize","opacity"],"sources":["YearPicker.tsx"],"sourcesContent":["import * as React from 'react'\nimport { FlatList, StyleSheet, View } from 'react-native'\nimport { MD2Theme, Text, TouchableRipple, useTheme } from 'react-native-paper'\nimport { range } from '../utils'\n\nconst ITEM_HEIGHT = 62\n\nexport default function YearPicker({\n selectedYear,\n selectingYear,\n onPressYear,\n startYear,\n endYear,\n}: {\n selectedYear: number | undefined\n selectingYear: boolean\n onPressYear: (year: number) => any\n startYear: number\n endYear: number\n}) {\n const theme = useTheme()\n const flatList = React.useRef<FlatList<number> | null>(null)\n const years = range(\n isNaN(startYear) ? 1800 : startYear,\n isNaN(endYear) ? 2200 : endYear\n )\n\n // scroll to selected year\n React.useEffect(() => {\n if (flatList.current && selectedYear) {\n const indexToGo = selectedYear - startYear\n flatList.current.scrollToOffset({\n offset: (indexToGo / 3) * ITEM_HEIGHT - ITEM_HEIGHT,\n animated: false,\n })\n }\n }, [flatList, selectedYear, startYear])\n\n return (\n <View\n style={[\n StyleSheet.absoluteFill,\n styles.root,\n { backgroundColor: theme.colors.surface },\n selectingYear ? styles.opacity1 : styles.opacity0,\n ]}\n pointerEvents={selectingYear ? 'auto' : 'none'}\n >\n <FlatList<number>\n ref={flatList}\n style={styles.list}\n data={years}\n renderItem={({ item }) => (\n <Year\n year={item}\n selected={selectedYear === item}\n onPressYear={onPressYear}\n />\n )}\n keyExtractor={(item) => `${item}`}\n numColumns={3}\n />\n </View>\n )\n}\n\nfunction YearPure({\n year,\n selected,\n onPressYear,\n}: {\n year: number\n selected: boolean\n onPressYear: (newYear: number) => any\n}) {\n const theme = useTheme()\n\n let textFont = theme?.isV3\n ? theme.fonts.bodyLarge\n : (theme as any as MD2Theme).fonts.medium\n\n return (\n <View style={styles.year}>\n <TouchableRipple\n onPress={() => onPressYear(year)}\n accessibilityRole=\"button\"\n accessibilityLabel={String(year)}\n style={styles.yearButton}\n >\n <View\n style={[\n styles.yearInner,\n selected ? { backgroundColor: theme.colors.primary } : null,\n ]}\n >\n <Text\n style={[\n styles.yearLabel,\n selected\n ? // eslint-disable-next-line react-native/no-inline-styles\n { color: theme.isV3 ? theme.colors.onPrimary : '#fff' }\n : {\n color: theme.isV3\n ? theme.colors.onSurfaceVariant\n : undefined,\n },\n { ...textFont },\n ]}\n selectable={false}\n >\n {year}\n </Text>\n </View>\n </TouchableRipple>\n </View>\n )\n}\nconst Year = React.memo(YearPure)\n\nconst styles = StyleSheet.create({\n root: {\n flex: 1,\n top: 56,\n zIndex: 100,\n },\n\n list: {\n flex: 1,\n },\n year: {\n flex: 1,\n marginLeft: 16,\n marginRight: 16,\n height: ITEM_HEIGHT,\n justifyContent: 'center',\n },\n yearButton: {\n borderRadius: 46 / 2,\n overflow: 'hidden',\n },\n yearInner: {\n borderRadius: 46 / 2,\n height: 46,\n alignItems: 'center',\n justifyContent: 'center',\n },\n yearLabel: {\n fontSize: 16,\n },\n opacity0: {\n opacity: 0,\n },\n opacity1: {\n opacity: 1,\n },\n})\n"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,QAAT,EAAmBC,UAAnB,EAA+BC,IAA/B,
|
|
1
|
+
{"version":3,"names":["React","FlatList","StyleSheet","View","ScrollView","Text","TouchableRipple","useTheme","range","ITEM_HEIGHT","YearPicker","selectedYear","selectingYear","onPressYear","startYear","endYear","theme","flatList","useRef","years","isNaN","useEffect","current","indexToGo","scrollToOffset","offset","animated","absoluteFill","styles","root","backgroundColor","colors","surface","opacity1","opacity0","list","sProps","item","YearPure","year","selected","textFont","isV3","fonts","bodyLarge","medium","String","yearButton","yearInner","primary","yearLabel","color","onPrimary","onSurfaceVariant","undefined","Year","memo","create","flex","top","zIndex","marginLeft","marginRight","height","justifyContent","borderRadius","overflow","alignItems","fontSize","opacity"],"sources":["YearPicker.tsx"],"sourcesContent":["import * as React from 'react'\nimport { FlatList, StyleSheet, View, ScrollView } from 'react-native'\nimport { MD2Theme, Text, TouchableRipple, useTheme } from 'react-native-paper'\nimport { range } from '../utils'\n\nconst ITEM_HEIGHT = 62\n\nexport default function YearPicker({\n selectedYear,\n selectingYear,\n onPressYear,\n startYear,\n endYear,\n}: {\n selectedYear: number | undefined\n selectingYear: boolean\n onPressYear: (year: number) => any\n startYear: number\n endYear: number\n}) {\n const theme = useTheme()\n const flatList = React.useRef<FlatList<number> | null>(null)\n const years = range(\n isNaN(startYear) ? 1800 : startYear,\n isNaN(endYear) ? 2200 : endYear\n )\n\n // scroll to selected year\n React.useEffect(() => {\n if (flatList.current && selectedYear) {\n const indexToGo = selectedYear - startYear\n flatList.current.scrollToOffset({\n offset: (indexToGo / 3) * ITEM_HEIGHT - ITEM_HEIGHT,\n animated: false,\n })\n }\n }, [flatList, selectedYear, startYear])\n\n return (\n <View\n style={[\n StyleSheet.absoluteFill,\n styles.root,\n { backgroundColor: theme.colors.surface },\n selectingYear ? styles.opacity1 : styles.opacity0,\n ]}\n pointerEvents={selectingYear ? 'auto' : 'none'}\n >\n <FlatList<number>\n ref={flatList}\n style={styles.list}\n data={years}\n renderScrollComponent={(sProps) => {\n return <ScrollView {...sProps} />\n }}\n renderItem={({ item }) => (\n <Year\n year={item}\n selected={selectedYear === item}\n onPressYear={onPressYear}\n />\n )}\n keyExtractor={(item) => `${item}`}\n numColumns={3}\n />\n </View>\n )\n}\n\nfunction YearPure({\n year,\n selected,\n onPressYear,\n}: {\n year: number\n selected: boolean\n onPressYear: (newYear: number) => any\n}) {\n const theme = useTheme()\n\n let textFont = theme?.isV3\n ? theme.fonts.bodyLarge\n : (theme as any as MD2Theme).fonts.medium\n\n return (\n <View style={styles.year}>\n <TouchableRipple\n onPress={() => onPressYear(year)}\n accessibilityRole=\"button\"\n accessibilityLabel={String(year)}\n style={styles.yearButton}\n >\n <View\n style={[\n styles.yearInner,\n selected ? { backgroundColor: theme.colors.primary } : null,\n ]}\n >\n <Text\n style={[\n styles.yearLabel,\n selected\n ? // eslint-disable-next-line react-native/no-inline-styles\n { color: theme.isV3 ? theme.colors.onPrimary : '#fff' }\n : {\n color: theme.isV3\n ? theme.colors.onSurfaceVariant\n : undefined,\n },\n { ...textFont },\n ]}\n selectable={false}\n >\n {year}\n </Text>\n </View>\n </TouchableRipple>\n </View>\n )\n}\nconst Year = React.memo(YearPure)\n\nconst styles = StyleSheet.create({\n root: {\n flex: 1,\n top: 56,\n zIndex: 100,\n },\n\n list: {\n flex: 1,\n },\n year: {\n flex: 1,\n marginLeft: 16,\n marginRight: 16,\n height: ITEM_HEIGHT,\n justifyContent: 'center',\n },\n yearButton: {\n borderRadius: 46 / 2,\n overflow: 'hidden',\n },\n yearInner: {\n borderRadius: 46 / 2,\n height: 46,\n alignItems: 'center',\n justifyContent: 'center',\n },\n yearLabel: {\n fontSize: 16,\n },\n opacity0: {\n opacity: 0,\n },\n opacity1: {\n opacity: 1,\n },\n})\n"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,QAAT,EAAmBC,UAAnB,EAA+BC,IAA/B,EAAqCC,UAArC,QAAuD,cAAvD;AACA,SAAmBC,IAAnB,EAAyBC,eAAzB,EAA0CC,QAA1C,QAA0D,oBAA1D;AACA,SAASC,KAAT,QAAsB,UAAtB;AAEA,MAAMC,WAAW,GAAG,EAApB;AAEA,eAAe,SAASC,UAAT,OAYZ;EAAA,IAZgC;IACjCC,YADiC;IAEjCC,aAFiC;IAGjCC,WAHiC;IAIjCC,SAJiC;IAKjCC;EALiC,CAYhC;EACD,MAAMC,KAAK,GAAGT,QAAQ,EAAtB;EACA,MAAMU,QAAQ,GAAGjB,KAAK,CAACkB,MAAN,CAAsC,IAAtC,CAAjB;EACA,MAAMC,KAAK,GAAGX,KAAK,CACjBY,KAAK,CAACN,SAAD,CAAL,GAAmB,IAAnB,GAA0BA,SADT,EAEjBM,KAAK,CAACL,OAAD,CAAL,GAAiB,IAAjB,GAAwBA,OAFP,CAAnB,CAHC,CAQD;;EACAf,KAAK,CAACqB,SAAN,CAAgB,MAAM;IACpB,IAAIJ,QAAQ,CAACK,OAAT,IAAoBX,YAAxB,EAAsC;MACpC,MAAMY,SAAS,GAAGZ,YAAY,GAAGG,SAAjC;MACAG,QAAQ,CAACK,OAAT,CAAiBE,cAAjB,CAAgC;QAC9BC,MAAM,EAAGF,SAAS,GAAG,CAAb,GAAkBd,WAAlB,GAAgCA,WADV;QAE9BiB,QAAQ,EAAE;MAFoB,CAAhC;IAID;EACF,CARD,EAQG,CAACT,QAAD,EAAWN,YAAX,EAAyBG,SAAzB,CARH;EAUA,oBACE,oBAAC,IAAD;IACE,KAAK,EAAE,CACLZ,UAAU,CAACyB,YADN,EAELC,MAAM,CAACC,IAFF,EAGL;MAAEC,eAAe,EAAEd,KAAK,CAACe,MAAN,CAAaC;IAAhC,CAHK,EAILpB,aAAa,GAAGgB,MAAM,CAACK,QAAV,GAAqBL,MAAM,CAACM,QAJpC,CADT;IAOE,aAAa,EAAEtB,aAAa,GAAG,MAAH,GAAY;EAP1C,gBASE,oBAAC,QAAD;IACE,GAAG,EAAEK,QADP;IAEE,KAAK,EAAEW,MAAM,CAACO,IAFhB;IAGE,IAAI,EAAEhB,KAHR;IAIE,qBAAqB,EAAGiB,MAAD,IAAY;MACjC,oBAAO,oBAAC,UAAD,EAAgBA,MAAhB,CAAP;IACD,CANH;IAOE,UAAU,EAAE;MAAA,IAAC;QAAEC;MAAF,CAAD;MAAA,oBACV,oBAAC,IAAD;QACE,IAAI,EAAEA,IADR;QAEE,QAAQ,EAAE1B,YAAY,KAAK0B,IAF7B;QAGE,WAAW,EAAExB;MAHf,EADU;IAAA,CAPd;IAcE,YAAY,EAAGwB,IAAD,IAAW,GAAEA,IAAK,EAdlC;IAeE,UAAU,EAAE;EAfd,EATF,CADF;AA6BD;;AAED,SAASC,QAAT,QAQG;EAAA,IARe;IAChBC,IADgB;IAEhBC,QAFgB;IAGhB3B;EAHgB,CAQf;EACD,MAAMG,KAAK,GAAGT,QAAQ,EAAtB;EAEA,IAAIkC,QAAQ,GAAGzB,KAAK,SAAL,IAAAA,KAAK,WAAL,IAAAA,KAAK,CAAE0B,IAAP,GACX1B,KAAK,CAAC2B,KAAN,CAAYC,SADD,GAEV5B,KAAD,CAA2B2B,KAA3B,CAAiCE,MAFrC;EAIA,oBACE,oBAAC,IAAD;IAAM,KAAK,EAAEjB,MAAM,CAACW;EAApB,gBACE,oBAAC,eAAD;IACE,OAAO,EAAE,MAAM1B,WAAW,CAAC0B,IAAD,CAD5B;IAEE,iBAAiB,EAAC,QAFpB;IAGE,kBAAkB,EAAEO,MAAM,CAACP,IAAD,CAH5B;IAIE,KAAK,EAAEX,MAAM,CAACmB;EAJhB,gBAME,oBAAC,IAAD;IACE,KAAK,EAAE,CACLnB,MAAM,CAACoB,SADF,EAELR,QAAQ,GAAG;MAAEV,eAAe,EAAEd,KAAK,CAACe,MAAN,CAAakB;IAAhC,CAAH,GAA+C,IAFlD;EADT,gBAME,oBAAC,IAAD;IACE,KAAK,EAAE,CACLrB,MAAM,CAACsB,SADF,EAELV,QAAQ,GACJ;IACA;MAAEW,KAAK,EAAEnC,KAAK,CAAC0B,IAAN,GAAa1B,KAAK,CAACe,MAAN,CAAaqB,SAA1B,GAAsC;IAA/C,CAFI,GAGJ;MACED,KAAK,EAAEnC,KAAK,CAAC0B,IAAN,GACH1B,KAAK,CAACe,MAAN,CAAasB,gBADV,GAEHC;IAHN,CALC,EAUL,EAAE,GAAGb;IAAL,CAVK,CADT;IAaE,UAAU,EAAE;EAbd,GAeGF,IAfH,CANF,CANF,CADF,CADF;AAmCD;;AACD,MAAMgB,IAAI,gBAAGvD,KAAK,CAACwD,IAAN,CAAWlB,QAAX,CAAb;AAEA,MAAMV,MAAM,GAAG1B,UAAU,CAACuD,MAAX,CAAkB;EAC/B5B,IAAI,EAAE;IACJ6B,IAAI,EAAE,CADF;IAEJC,GAAG,EAAE,EAFD;IAGJC,MAAM,EAAE;EAHJ,CADyB;EAO/BzB,IAAI,EAAE;IACJuB,IAAI,EAAE;EADF,CAPyB;EAU/BnB,IAAI,EAAE;IACJmB,IAAI,EAAE,CADF;IAEJG,UAAU,EAAE,EAFR;IAGJC,WAAW,EAAE,EAHT;IAIJC,MAAM,EAAEtD,WAJJ;IAKJuD,cAAc,EAAE;EALZ,CAVyB;EAiB/BjB,UAAU,EAAE;IACVkB,YAAY,EAAE,KAAK,CADT;IAEVC,QAAQ,EAAE;EAFA,CAjBmB;EAqB/BlB,SAAS,EAAE;IACTiB,YAAY,EAAE,KAAK,CADV;IAETF,MAAM,EAAE,EAFC;IAGTI,UAAU,EAAE,QAHH;IAITH,cAAc,EAAE;EAJP,CArBoB;EA2B/Bd,SAAS,EAAE;IACTkB,QAAQ,EAAE;EADD,CA3BoB;EA8B/BlC,QAAQ,EAAE;IACRmC,OAAO,EAAE;EADD,CA9BqB;EAiC/BpC,QAAQ,EAAE;IACRoC,OAAO,EAAE;EADD;AAjCqB,CAAlB,CAAf"}
|
|
@@ -60,6 +60,7 @@ function TextInputWithMask(_ref, ref) {
|
|
|
60
60
|
onChange,
|
|
61
61
|
value,
|
|
62
62
|
mask,
|
|
63
|
+
disabled,
|
|
63
64
|
...rest
|
|
64
65
|
} = _ref;
|
|
65
66
|
const [controlledValue, setControlledValue] = React.useState(value || '');
|
|
@@ -83,6 +84,7 @@ function TextInputWithMask(_ref, ref) {
|
|
|
83
84
|
return /*#__PURE__*/React.createElement(TextInput, _extends({
|
|
84
85
|
ref: ref
|
|
85
86
|
}, rest, {
|
|
87
|
+
disabled: disabled,
|
|
86
88
|
value: controlledValue,
|
|
87
89
|
onChangeText: onInnerChange,
|
|
88
90
|
onChange: e => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","TextInput","splitCharacters","detectCharacter","mask","c","find","ch","includes","enhanceTextWithMask","text","previousValue","isBackSpace","length","splitCharacter","maskParts","split","textParts","finalString","maskPartIndex","partString","maskPart","textPart","maskDigitIndex","currentCharacter","undefined","character","push","join","lastPart","lastMaskPart","TextInputWithMask","ref","onChangeText","onChange","value","rest","controlledValue","setControlledValue","useState","onInnerChange","onInnerBlur","enhancedText","useEffect","e","forwardRef"],"sources":["TextInputMask.tsx"],"sourcesContent":["import * as React from 'react'\nimport { TextInput } from 'react-native-paper'\n\nconst splitCharacters = ['-', '/', '.', '年', ' ']\nfunction detectCharacter(mask: string): string {\n const c = splitCharacters.find((ch) => mask.includes(ch))\n return c || ''\n}\n\nfunction enhanceTextWithMask(\n text: string,\n mask: string,\n previousValue: string\n): string {\n const isBackSpace = previousValue.length > text.length\n const splitCharacter = detectCharacter(mask)\n\n const maskParts = mask.split(splitCharacter)\n const textParts = text.split(splitCharacter)\n\n let finalString: string[] = []\n for (let maskPartIndex = 0; maskPartIndex < mask.length; maskPartIndex++) {\n let partString: string[] = []\n\n const maskPart = maskParts[maskPartIndex]\n const textPart = textParts[maskPartIndex]\n if (!textPart) {\n continue\n }\n\n for (\n let maskDigitIndex = 0;\n maskDigitIndex < maskPart.length;\n maskDigitIndex++\n ) {\n const currentCharacter = textPart[maskDigitIndex]\n\n if (isBackSpace && currentCharacter === undefined) {\n continue\n }\n\n const character = textPart[maskDigitIndex]\n\n if (character !== undefined) {\n partString.push(character)\n }\n }\n\n finalString.push(partString.join(''))\n }\n\n const lastPart = finalString[finalString.length - 1]\n const lastMaskPart = maskParts[finalString.length - 1]\n if (\n // if mask is completed\n finalString.length !== maskParts.length &&\n // or ...\n lastPart &&\n lastMaskPart &&\n lastPart.length === lastMaskPart.length\n ) {\n return (\n finalString.join(splitCharacter) + (isBackSpace ? '' : splitCharacter)\n )\n }\n return finalString.join(splitCharacter)\n}\n\nfunction TextInputWithMask(\n {\n onChangeText,\n onChange,\n value,\n mask,\n ...rest\n }: React.ComponentProps<typeof TextInput> & { mask: string; value: string },\n ref: any\n) {\n const [controlledValue, setControlledValue] = React.useState<string>(\n value || ''\n )\n\n const onInnerChange = (text: string) => {\n if (text.length === mask.length) {\n onChangeText && onChangeText(text)\n }\n setControlledValue(text)\n }\n\n const onInnerBlur = () => {\n const enhancedText = enhanceTextWithMask(value, mask, controlledValue)\n setControlledValue(enhancedText)\n }\n\n React.useEffect(() => {\n setControlledValue(value || '')\n }, [value])\n\n return (\n <TextInput\n ref={ref}\n {...rest}\n value={controlledValue}\n onChangeText={onInnerChange}\n onChange={(e) => {\n onChange && onChange(e)\n }}\n onBlur={onInnerBlur}\n />\n )\n}\n\nexport default React.forwardRef(TextInputWithMask)\n"],"mappings":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,SAAT,QAA0B,oBAA1B;AAEA,MAAMC,eAAe,GAAG,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB,CAAxB;;AACA,SAASC,eAAT,CAAyBC,IAAzB,EAA+C;EAC7C,MAAMC,CAAC,GAAGH,eAAe,CAACI,IAAhB,CAAsBC,EAAD,IAAQH,IAAI,CAACI,QAAL,CAAcD,EAAd,CAA7B,CAAV;EACA,OAAOF,CAAC,IAAI,EAAZ;AACD;;AAED,SAASI,mBAAT,CACEC,IADF,EAEEN,IAFF,EAGEO,aAHF,EAIU;EACR,MAAMC,WAAW,GAAGD,aAAa,CAACE,MAAd,GAAuBH,IAAI,CAACG,MAAhD;EACA,MAAMC,cAAc,GAAGX,eAAe,CAACC,IAAD,CAAtC;EAEA,MAAMW,SAAS,GAAGX,IAAI,CAACY,KAAL,CAAWF,cAAX,CAAlB;EACA,MAAMG,SAAS,GAAGP,IAAI,CAACM,KAAL,CAAWF,cAAX,CAAlB;EAEA,IAAII,WAAqB,GAAG,EAA5B;;EACA,KAAK,IAAIC,aAAa,GAAG,CAAzB,EAA4BA,aAAa,GAAGf,IAAI,CAACS,MAAjD,EAAyDM,aAAa,EAAtE,EAA0E;IACxE,IAAIC,UAAoB,GAAG,EAA3B;IAEA,MAAMC,QAAQ,GAAGN,SAAS,CAACI,aAAD,CAA1B;IACA,MAAMG,QAAQ,GAAGL,SAAS,CAACE,aAAD,CAA1B;;IACA,IAAI,CAACG,QAAL,EAAe;MACb;IACD;;IAED,KACE,IAAIC,cAAc,GAAG,CADvB,EAEEA,cAAc,GAAGF,QAAQ,CAACR,MAF5B,EAGEU,cAAc,EAHhB,EAIE;MACA,MAAMC,gBAAgB,GAAGF,QAAQ,CAACC,cAAD,CAAjC;;MAEA,IAAIX,WAAW,IAAIY,gBAAgB,KAAKC,SAAxC,EAAmD;QACjD;MACD;;MAED,MAAMC,SAAS,GAAGJ,QAAQ,CAACC,cAAD,CAA1B;;MAEA,IAAIG,SAAS,KAAKD,SAAlB,EAA6B;QAC3BL,UAAU,CAACO,IAAX,CAAgBD,SAAhB;MACD;IACF;;IAEDR,WAAW,CAACS,IAAZ,CAAiBP,UAAU,CAACQ,IAAX,CAAgB,EAAhB,CAAjB;EACD;;EAED,MAAMC,QAAQ,GAAGX,WAAW,CAACA,WAAW,CAACL,MAAZ,GAAqB,CAAtB,CAA5B;EACA,MAAMiB,YAAY,GAAGf,SAAS,CAACG,WAAW,CAACL,MAAZ,GAAqB,CAAtB,CAA9B;;EACA,KACE;EACAK,WAAW,CAACL,MAAZ,KAAuBE,SAAS,CAACF,MAAjC,IACA;EACAgB,QAFA,IAGAC,YAHA,IAIAD,QAAQ,CAAChB,MAAT,KAAoBiB,YAAY,CAACjB,MANnC,EAOE;IACA,OACEK,WAAW,CAACU,IAAZ,CAAiBd,cAAjB,KAAoCF,WAAW,GAAG,EAAH,GAAQE,cAAvD,CADF;EAGD;;EACD,OAAOI,WAAW,CAACU,IAAZ,CAAiBd,cAAjB,CAAP;AACD;;AAED,SAASiB,iBAAT,
|
|
1
|
+
{"version":3,"names":["React","TextInput","splitCharacters","detectCharacter","mask","c","find","ch","includes","enhanceTextWithMask","text","previousValue","isBackSpace","length","splitCharacter","maskParts","split","textParts","finalString","maskPartIndex","partString","maskPart","textPart","maskDigitIndex","currentCharacter","undefined","character","push","join","lastPart","lastMaskPart","TextInputWithMask","ref","onChangeText","onChange","value","disabled","rest","controlledValue","setControlledValue","useState","onInnerChange","onInnerBlur","enhancedText","useEffect","e","forwardRef"],"sources":["TextInputMask.tsx"],"sourcesContent":["import * as React from 'react'\nimport { TextInput } from 'react-native-paper'\n\nconst splitCharacters = ['-', '/', '.', '年', ' ']\nfunction detectCharacter(mask: string): string {\n const c = splitCharacters.find((ch) => mask.includes(ch))\n return c || ''\n}\n\nfunction enhanceTextWithMask(\n text: string,\n mask: string,\n previousValue: string\n): string {\n const isBackSpace = previousValue.length > text.length\n const splitCharacter = detectCharacter(mask)\n\n const maskParts = mask.split(splitCharacter)\n const textParts = text.split(splitCharacter)\n\n let finalString: string[] = []\n for (let maskPartIndex = 0; maskPartIndex < mask.length; maskPartIndex++) {\n let partString: string[] = []\n\n const maskPart = maskParts[maskPartIndex]\n const textPart = textParts[maskPartIndex]\n if (!textPart) {\n continue\n }\n\n for (\n let maskDigitIndex = 0;\n maskDigitIndex < maskPart.length;\n maskDigitIndex++\n ) {\n const currentCharacter = textPart[maskDigitIndex]\n\n if (isBackSpace && currentCharacter === undefined) {\n continue\n }\n\n const character = textPart[maskDigitIndex]\n\n if (character !== undefined) {\n partString.push(character)\n }\n }\n\n finalString.push(partString.join(''))\n }\n\n const lastPart = finalString[finalString.length - 1]\n const lastMaskPart = maskParts[finalString.length - 1]\n if (\n // if mask is completed\n finalString.length !== maskParts.length &&\n // or ...\n lastPart &&\n lastMaskPart &&\n lastPart.length === lastMaskPart.length\n ) {\n return (\n finalString.join(splitCharacter) + (isBackSpace ? '' : splitCharacter)\n )\n }\n return finalString.join(splitCharacter)\n}\n\nfunction TextInputWithMask(\n {\n onChangeText,\n onChange,\n value,\n mask,\n disabled,\n ...rest\n }: React.ComponentProps<typeof TextInput> & { mask: string; value: string },\n ref: any\n) {\n const [controlledValue, setControlledValue] = React.useState<string>(\n value || ''\n )\n\n const onInnerChange = (text: string) => {\n if (text.length === mask.length) {\n onChangeText && onChangeText(text)\n }\n setControlledValue(text)\n }\n\n const onInnerBlur = () => {\n const enhancedText = enhanceTextWithMask(value, mask, controlledValue)\n setControlledValue(enhancedText)\n }\n\n React.useEffect(() => {\n setControlledValue(value || '')\n }, [value])\n\n return (\n <TextInput\n ref={ref}\n {...rest}\n disabled={disabled}\n value={controlledValue}\n onChangeText={onInnerChange}\n onChange={(e) => {\n onChange && onChange(e)\n }}\n onBlur={onInnerBlur}\n />\n )\n}\n\nexport default React.forwardRef(TextInputWithMask)\n"],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ function AnalogClock(_ref) {
|
|
|
24
24
|
mode
|
|
25
25
|
} = React.useContext(DisplayModeContext); // used to make pointer shorter if hours are selected and above 12
|
|
26
26
|
|
|
27
|
-
const shortPointer =
|
|
27
|
+
const shortPointer = hours >= 12 && is24Hour;
|
|
28
28
|
const clockRef = React.useRef(null); // Hooks are nice, sometimes... :-)..
|
|
29
29
|
// We need the latest values, since the onPointerMove uses a closure to the function
|
|
30
30
|
|
|
@@ -52,14 +52,18 @@ function AnalogClock(_ref) {
|
|
|
52
52
|
pickedHours += 12;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
if (modeRef.current === 'AM' && pickedHours === 12) {
|
|
55
|
+
if ((modeRef.current === 'AM' || hours24) && pickedHours === 12) {
|
|
56
56
|
pickedHours = 0;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
if (!hours24 && modeRef.current === 'AM' && pickedHours === 12
|
|
59
|
+
if (!hours24 && modeRef.current === 'AM' && pickedHours === 12) {
|
|
60
60
|
pickedHours = 0;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
if (pickedHours === 24) {
|
|
64
|
+
pickedHours = 12;
|
|
65
|
+
}
|
|
66
|
+
|
|
63
67
|
if (hoursRef.current !== pickedHours || final) {
|
|
64
68
|
onChangeRef.current({
|
|
65
69
|
hours: pickedHours,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Color","PanResponder","StyleSheet","View","useTheme","circleSize","clockTypes","getAngle","getHours","getHourType","getHourTypeFromOffset","getMinutes","hourTypes","React","useLatest","AnalogClockHours","AnimatedClockSwitcher","AnalogClockMinutes","DisplayModeContext","AnalogClock","hours","minutes","focused","is24Hour","onChange","theme","mode","useContext","shortPointer","clockRef","useRef","hoursRef","onChangeRef","minutesRef","focusedRef","is24HourRef","modeRef","onPointerMove","useCallback","e","final","x","nativeEvent","locationX","y","locationY","angle","current","hours24","previousHourType","pickedHours","hours12AndPm","hourTypeFromOffset","hours24AndPM","pm","undefined","pickedMinutes","panResponder","create","onPanResponderGrant","onPanResponderMove","onPanResponderRelease","onStartShouldSetPanResponder","returnTrue","onStartShouldSetPanResponderCapture","onMoveShouldSetPanResponder","onMoveShouldSetPanResponderCapture","onPanResponderTerminationRequest","onShouldBlockNativeResponder","dynamicSize","pointerNumber","degreesPerNumber","panHandlers","styles","clock","backgroundColor","isV3","colors","surfaceVariant","dark","surface","lighten","hex","darken","line","primary","transform","rotate","translateX","width","endPoint","absoluteFill","center","middlePoint","height","position","justifyContent","alignItems","borderRadius","right","bottom","memo"],"sources":["AnalogClock.tsx"],"sourcesContent":["import Color from 'color'\nimport {\n GestureResponderEvent,\n PanResponder,\n StyleSheet,\n View,\n} from 'react-native'\nimport { useTheme } from 'react-native-paper'\nimport {\n circleSize,\n clockTypes,\n getAngle,\n getHours,\n getHourType,\n getHourTypeFromOffset,\n getMinutes,\n hourTypes,\n PossibleClockTypes,\n} from './timeUtils'\nimport * as React from 'react'\nimport { useLatest } from '../utils'\nimport AnalogClockHours from './AnalogClockHours'\nimport AnimatedClockSwitcher from './AnimatedClockSwitcher'\nimport AnalogClockMinutes from './AnalogClockMinutes'\nimport { DisplayModeContext } from './TimePicker'\nfunction AnalogClock({\n hours,\n minutes,\n focused,\n is24Hour,\n onChange,\n}: {\n hours: number\n minutes: number\n focused: PossibleClockTypes\n is24Hour: boolean\n onChange: (hoursMinutesAndFocused: {\n hours: number\n minutes: number\n focused?: undefined | PossibleClockTypes\n }) => any\n}) {\n const theme = useTheme()\n const { mode } = React.useContext(DisplayModeContext)\n // used to make pointer shorter if hours are selected and above 12\n const shortPointer = (hours === 0 || hours > 12) && is24Hour\n const clockRef = React.useRef<View | null>(null)\n // Hooks are nice, sometimes... :-)..\n // We need the latest values, since the onPointerMove uses a closure to the function\n const hoursRef = useLatest(hours)\n const onChangeRef = useLatest(onChange)\n const minutesRef = useLatest(minutes)\n const focusedRef = useLatest(focused)\n const is24HourRef = useLatest(is24Hour)\n const modeRef = useLatest(mode)\n const onPointerMove = React.useCallback(\n (e: GestureResponderEvent, final: boolean) => {\n let x = e.nativeEvent.locationX\n let y = e.nativeEvent.locationY\n let angle = getAngle(x, y, circleSize)\n if (focusedRef.current === clockTypes.hours) {\n let hours24 = is24HourRef.current\n let previousHourType = getHourType(hoursRef.current)\n let pickedHours = getHours(angle, previousHourType)\n\n let hours12AndPm = !hours24 && modeRef.current === 'PM'\n\n let hourTypeFromOffset = getHourTypeFromOffset(x, y, circleSize)\n let hours24AndPM = hours24 && hourTypeFromOffset === hourTypes.pm\n\n // Avoiding the \"24h\"\n // Should be 12h for 12 hours and PM mode\n\n if (hours12AndPm || hours24AndPM) {\n pickedHours += 12\n }\n if (modeRef.current === 'AM' && pickedHours === 12) {\n pickedHours = 0\n }\n\n if (\n (!hours24 && modeRef.current === 'AM' && pickedHours === 12) ||\n pickedHours === 24\n ) {\n pickedHours = 0\n }\n\n if (hoursRef.current !== pickedHours || final) {\n onChangeRef.current({\n hours: pickedHours,\n minutes: minutesRef.current,\n focused: final ? clockTypes.minutes : undefined,\n })\n }\n } else if (focusedRef.current === clockTypes.minutes) {\n let pickedMinutes = getMinutes(angle)\n if (minutesRef.current !== pickedMinutes) {\n onChangeRef.current({\n hours: hoursRef.current,\n minutes: pickedMinutes,\n })\n }\n }\n },\n [focusedRef, is24HourRef, hoursRef, onChangeRef, minutesRef, modeRef]\n )\n const panResponder = React.useRef(\n PanResponder.create({\n onPanResponderGrant: (e) => onPointerMove(e, false),\n onPanResponderMove: (e) => onPointerMove(e, false),\n onPanResponderRelease: (e) => onPointerMove(e, true),\n onStartShouldSetPanResponder: returnTrue,\n onStartShouldSetPanResponderCapture: () => false,\n onMoveShouldSetPanResponder: returnTrue,\n onMoveShouldSetPanResponderCapture: returnTrue,\n onPanResponderTerminationRequest: returnTrue,\n onShouldBlockNativeResponder: returnTrue,\n })\n ).current\n const dynamicSize = focused === clockTypes.hours && shortPointer ? 33 : 0\n const pointerNumber = focused === clockTypes.hours ? hours : minutes\n const degreesPerNumber = focused === clockTypes.hours ? 30 : 6\n return (\n <View\n ref={clockRef}\n {...panResponder.panHandlers}\n style={[\n styles.clock,\n {\n backgroundColor: theme.isV3\n ? theme.colors.surfaceVariant\n : theme.dark\n ? Color(theme.colors.surface).lighten(1.4).hex()\n : Color(theme.colors.surface).darken(0.1).hex(),\n },\n ]}\n // @ts-ignore -> https://github.com/necolas/react-native-web/issues/506\n cursor={'pointer'}\n >\n <View\n style={[\n styles.line,\n {\n backgroundColor: theme.colors.primary,\n transform: [\n { rotate: -90 + pointerNumber * degreesPerNumber + 'deg' },\n {\n translateX:\n circleSize / 4 -\n (focused === clockTypes.hours &&\n pointerNumber >= 0 &&\n pointerNumber < 13\n ? 0\n : 4) +\n (focused === clockTypes.minutes ? 4 : 0) -\n dynamicSize / 2,\n },\n ],\n width: circleSize / 2 - 4 - dynamicSize,\n },\n ]}\n pointerEvents=\"none\"\n >\n <View\n style={[styles.endPoint, { backgroundColor: theme.colors.primary }]}\n />\n </View>\n <View\n style={[StyleSheet.absoluteFill, styles.center]}\n pointerEvents=\"none\"\n >\n <View\n style={[\n styles.middlePoint,\n {\n backgroundColor: theme.colors.primary,\n },\n ]}\n />\n </View>\n <AnimatedClockSwitcher\n focused={focused}\n hours={<AnalogClockHours is24Hour={is24Hour} hours={hours} />}\n minutes={<AnalogClockMinutes minutes={minutes} />}\n />\n </View>\n )\n}\nconst styles = StyleSheet.create({\n clock: {\n height: circleSize,\n width: circleSize,\n position: 'relative',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: circleSize / 2,\n },\n middlePoint: {\n borderRadius: 4,\n height: 8,\n width: 8,\n },\n center: { justifyContent: 'center', alignItems: 'center' },\n endPoint: {\n borderRadius: 24,\n height: 48,\n width: 48,\n position: 'absolute',\n right: 0,\n bottom: -23,\n },\n line: {\n position: 'absolute',\n height: 2,\n borderRadius: 4,\n },\n})\nfunction returnTrue() {\n return true\n}\nexport default React.memo(AnalogClock)\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Color","PanResponder","StyleSheet","View","useTheme","circleSize","clockTypes","getAngle","getHours","getHourType","getHourTypeFromOffset","getMinutes","hourTypes","React","useLatest","AnalogClockHours","AnimatedClockSwitcher","AnalogClockMinutes","DisplayModeContext","AnalogClock","hours","minutes","focused","is24Hour","onChange","theme","mode","useContext","shortPointer","clockRef","useRef","hoursRef","onChangeRef","minutesRef","focusedRef","is24HourRef","modeRef","onPointerMove","useCallback","e","final","x","nativeEvent","locationX","y","locationY","angle","current","hours24","previousHourType","pickedHours","hours12AndPm","hourTypeFromOffset","hours24AndPM","pm","undefined","pickedMinutes","panResponder","create","onPanResponderGrant","onPanResponderMove","onPanResponderRelease","onStartShouldSetPanResponder","returnTrue","onStartShouldSetPanResponderCapture","onMoveShouldSetPanResponder","onMoveShouldSetPanResponderCapture","onPanResponderTerminationRequest","onShouldBlockNativeResponder","dynamicSize","pointerNumber","degreesPerNumber","panHandlers","styles","clock","backgroundColor","isV3","colors","surfaceVariant","dark","surface","lighten","hex","darken","line","primary","transform","rotate","translateX","width","endPoint","absoluteFill","center","middlePoint","height","position","justifyContent","alignItems","borderRadius","right","bottom","memo"],"sources":["AnalogClock.tsx"],"sourcesContent":["import Color from 'color'\nimport {\n GestureResponderEvent,\n PanResponder,\n StyleSheet,\n View,\n} from 'react-native'\nimport { useTheme } from 'react-native-paper'\nimport {\n circleSize,\n clockTypes,\n getAngle,\n getHours,\n getHourType,\n getHourTypeFromOffset,\n getMinutes,\n hourTypes,\n PossibleClockTypes,\n} from './timeUtils'\nimport * as React from 'react'\nimport { useLatest } from '../utils'\nimport AnalogClockHours from './AnalogClockHours'\nimport AnimatedClockSwitcher from './AnimatedClockSwitcher'\nimport AnalogClockMinutes from './AnalogClockMinutes'\nimport { DisplayModeContext } from './TimePicker'\nfunction AnalogClock({\n hours,\n minutes,\n focused,\n is24Hour,\n onChange,\n}: {\n hours: number\n minutes: number\n focused: PossibleClockTypes\n is24Hour: boolean\n onChange: (hoursMinutesAndFocused: {\n hours: number\n minutes: number\n focused?: undefined | PossibleClockTypes\n }) => any\n}) {\n const theme = useTheme()\n const { mode } = React.useContext(DisplayModeContext)\n // used to make pointer shorter if hours are selected and above 12\n const shortPointer = hours >= 12 && is24Hour\n const clockRef = React.useRef<View | null>(null)\n // Hooks are nice, sometimes... :-)..\n // We need the latest values, since the onPointerMove uses a closure to the function\n const hoursRef = useLatest(hours)\n const onChangeRef = useLatest(onChange)\n const minutesRef = useLatest(minutes)\n const focusedRef = useLatest(focused)\n const is24HourRef = useLatest(is24Hour)\n const modeRef = useLatest(mode)\n const onPointerMove = React.useCallback(\n (e: GestureResponderEvent, final: boolean) => {\n let x = e.nativeEvent.locationX\n let y = e.nativeEvent.locationY\n let angle = getAngle(x, y, circleSize)\n if (focusedRef.current === clockTypes.hours) {\n let hours24 = is24HourRef.current\n let previousHourType = getHourType(hoursRef.current)\n let pickedHours = getHours(angle, previousHourType)\n\n let hours12AndPm = !hours24 && modeRef.current === 'PM'\n\n let hourTypeFromOffset = getHourTypeFromOffset(x, y, circleSize)\n let hours24AndPM = hours24 && hourTypeFromOffset === hourTypes.pm\n\n // Avoiding the \"24h\"\n // Should be 12h for 12 hours and PM mode\n\n if (hours12AndPm || hours24AndPM) {\n pickedHours += 12\n }\n if ((modeRef.current === 'AM' || hours24) && pickedHours === 12) {\n pickedHours = 0\n }\n\n if (!hours24 && modeRef.current === 'AM' && pickedHours === 12) {\n pickedHours = 0\n }\n\n if (pickedHours === 24) {\n pickedHours = 12\n }\n\n if (hoursRef.current !== pickedHours || final) {\n onChangeRef.current({\n hours: pickedHours,\n minutes: minutesRef.current,\n focused: final ? clockTypes.minutes : undefined,\n })\n }\n } else if (focusedRef.current === clockTypes.minutes) {\n let pickedMinutes = getMinutes(angle)\n if (minutesRef.current !== pickedMinutes) {\n onChangeRef.current({\n hours: hoursRef.current,\n minutes: pickedMinutes,\n })\n }\n }\n },\n [focusedRef, is24HourRef, hoursRef, onChangeRef, minutesRef, modeRef]\n )\n const panResponder = React.useRef(\n PanResponder.create({\n onPanResponderGrant: (e) => onPointerMove(e, false),\n onPanResponderMove: (e) => onPointerMove(e, false),\n onPanResponderRelease: (e) => onPointerMove(e, true),\n onStartShouldSetPanResponder: returnTrue,\n onStartShouldSetPanResponderCapture: () => false,\n onMoveShouldSetPanResponder: returnTrue,\n onMoveShouldSetPanResponderCapture: returnTrue,\n onPanResponderTerminationRequest: returnTrue,\n onShouldBlockNativeResponder: returnTrue,\n })\n ).current\n const dynamicSize = focused === clockTypes.hours && shortPointer ? 33 : 0\n const pointerNumber = focused === clockTypes.hours ? hours : minutes\n const degreesPerNumber = focused === clockTypes.hours ? 30 : 6\n return (\n <View\n ref={clockRef}\n {...panResponder.panHandlers}\n style={[\n styles.clock,\n {\n backgroundColor: theme.isV3\n ? theme.colors.surfaceVariant\n : theme.dark\n ? Color(theme.colors.surface).lighten(1.4).hex()\n : Color(theme.colors.surface).darken(0.1).hex(),\n },\n ]}\n // @ts-ignore -> https://github.com/necolas/react-native-web/issues/506\n cursor={'pointer'}\n >\n <View\n style={[\n styles.line,\n {\n backgroundColor: theme.colors.primary,\n transform: [\n { rotate: -90 + pointerNumber * degreesPerNumber + 'deg' },\n {\n translateX:\n circleSize / 4 -\n (focused === clockTypes.hours &&\n pointerNumber >= 0 &&\n pointerNumber < 13\n ? 0\n : 4) +\n (focused === clockTypes.minutes ? 4 : 0) -\n dynamicSize / 2,\n },\n ],\n width: circleSize / 2 - 4 - dynamicSize,\n },\n ]}\n pointerEvents=\"none\"\n >\n <View\n style={[styles.endPoint, { backgroundColor: theme.colors.primary }]}\n />\n </View>\n <View\n style={[StyleSheet.absoluteFill, styles.center]}\n pointerEvents=\"none\"\n >\n <View\n style={[\n styles.middlePoint,\n {\n backgroundColor: theme.colors.primary,\n },\n ]}\n />\n </View>\n <AnimatedClockSwitcher\n focused={focused}\n hours={<AnalogClockHours is24Hour={is24Hour} hours={hours} />}\n minutes={<AnalogClockMinutes minutes={minutes} />}\n />\n </View>\n )\n}\nconst styles = StyleSheet.create({\n clock: {\n height: circleSize,\n width: circleSize,\n position: 'relative',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: circleSize / 2,\n },\n middlePoint: {\n borderRadius: 4,\n height: 8,\n width: 8,\n },\n center: { justifyContent: 'center', alignItems: 'center' },\n endPoint: {\n borderRadius: 24,\n height: 48,\n width: 48,\n position: 'absolute',\n right: 0,\n bottom: -23,\n },\n line: {\n position: 'absolute',\n height: 2,\n borderRadius: 4,\n },\n})\nfunction returnTrue() {\n return true\n}\nexport default React.memo(AnalogClock)\n"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAEEC,YAFF,EAGEC,UAHF,EAIEC,IAJF,QAKO,cALP;AAMA,SAASC,QAAT,QAAyB,oBAAzB;AACA,SACEC,UADF,EAEEC,UAFF,EAGEC,QAHF,EAIEC,QAJF,EAKEC,WALF,EAMEC,qBANF,EAOEC,UAPF,EAQEC,SARF,QAUO,aAVP;AAWA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,SAASC,SAAT,QAA0B,UAA1B;AACA,OAAOC,gBAAP,MAA6B,oBAA7B;AACA,OAAOC,qBAAP,MAAkC,yBAAlC;AACA,OAAOC,kBAAP,MAA+B,sBAA/B;AACA,SAASC,kBAAT,QAAmC,cAAnC;;AACA,SAASC,WAAT,OAgBG;EAAA,IAhBkB;IACnBC,KADmB;IAEnBC,OAFmB;IAGnBC,OAHmB;IAInBC,QAJmB;IAKnBC;EALmB,CAgBlB;EACD,MAAMC,KAAK,GAAGrB,QAAQ,EAAtB;EACA,MAAM;IAAEsB;EAAF,IAAWb,KAAK,CAACc,UAAN,CAAiBT,kBAAjB,CAAjB,CAFC,CAGD;;EACA,MAAMU,YAAY,GAAGR,KAAK,IAAI,EAAT,IAAeG,QAApC;EACA,MAAMM,QAAQ,GAAGhB,KAAK,CAACiB,MAAN,CAA0B,IAA1B,CAAjB,CALC,CAMD;EACA;;EACA,MAAMC,QAAQ,GAAGjB,SAAS,CAACM,KAAD,CAA1B;EACA,MAAMY,WAAW,GAAGlB,SAAS,CAACU,QAAD,CAA7B;EACA,MAAMS,UAAU,GAAGnB,SAAS,CAACO,OAAD,CAA5B;EACA,MAAMa,UAAU,GAAGpB,SAAS,CAACQ,OAAD,CAA5B;EACA,MAAMa,WAAW,GAAGrB,SAAS,CAACS,QAAD,CAA7B;EACA,MAAMa,OAAO,GAAGtB,SAAS,CAACY,IAAD,CAAzB;EACA,MAAMW,aAAa,GAAGxB,KAAK,CAACyB,WAAN,CACpB,CAACC,CAAD,EAA2BC,KAA3B,KAA8C;IAC5C,IAAIC,CAAC,GAAGF,CAAC,CAACG,WAAF,CAAcC,SAAtB;IACA,IAAIC,CAAC,GAAGL,CAAC,CAACG,WAAF,CAAcG,SAAtB;IACA,IAAIC,KAAK,GAAGvC,QAAQ,CAACkC,CAAD,EAAIG,CAAJ,EAAOvC,UAAP,CAApB;;IACA,IAAI6B,UAAU,CAACa,OAAX,KAAuBzC,UAAU,CAACc,KAAtC,EAA6C;MAC3C,IAAI4B,OAAO,GAAGb,WAAW,CAACY,OAA1B;MACA,IAAIE,gBAAgB,GAAGxC,WAAW,CAACsB,QAAQ,CAACgB,OAAV,CAAlC;MACA,IAAIG,WAAW,GAAG1C,QAAQ,CAACsC,KAAD,EAAQG,gBAAR,CAA1B;MAEA,IAAIE,YAAY,GAAG,CAACH,OAAD,IAAYZ,OAAO,CAACW,OAAR,KAAoB,IAAnD;MAEA,IAAIK,kBAAkB,GAAG1C,qBAAqB,CAAC+B,CAAD,EAAIG,CAAJ,EAAOvC,UAAP,CAA9C;MACA,IAAIgD,YAAY,GAAGL,OAAO,IAAII,kBAAkB,KAAKxC,SAAS,CAAC0C,EAA/D,CAR2C,CAU3C;MACA;;MAEA,IAAIH,YAAY,IAAIE,YAApB,EAAkC;QAChCH,WAAW,IAAI,EAAf;MACD;;MACD,IAAI,CAACd,OAAO,CAACW,OAAR,KAAoB,IAApB,IAA4BC,OAA7B,KAAyCE,WAAW,KAAK,EAA7D,EAAiE;QAC/DA,WAAW,GAAG,CAAd;MACD;;MAED,IAAI,CAACF,OAAD,IAAYZ,OAAO,CAACW,OAAR,KAAoB,IAAhC,IAAwCG,WAAW,KAAK,EAA5D,EAAgE;QAC9DA,WAAW,GAAG,CAAd;MACD;;MAED,IAAIA,WAAW,KAAK,EAApB,EAAwB;QACtBA,WAAW,GAAG,EAAd;MACD;;MAED,IAAInB,QAAQ,CAACgB,OAAT,KAAqBG,WAArB,IAAoCV,KAAxC,EAA+C;QAC7CR,WAAW,CAACe,OAAZ,CAAoB;UAClB3B,KAAK,EAAE8B,WADW;UAElB7B,OAAO,EAAEY,UAAU,CAACc,OAFF;UAGlBzB,OAAO,EAAEkB,KAAK,GAAGlC,UAAU,CAACe,OAAd,GAAwBkC;QAHpB,CAApB;MAKD;IACF,CAnCD,MAmCO,IAAIrB,UAAU,CAACa,OAAX,KAAuBzC,UAAU,CAACe,OAAtC,EAA+C;MACpD,IAAImC,aAAa,GAAG7C,UAAU,CAACmC,KAAD,CAA9B;;MACA,IAAIb,UAAU,CAACc,OAAX,KAAuBS,aAA3B,EAA0C;QACxCxB,WAAW,CAACe,OAAZ,CAAoB;UAClB3B,KAAK,EAAEW,QAAQ,CAACgB,OADE;UAElB1B,OAAO,EAAEmC;QAFS,CAApB;MAID;IACF;EACF,CAjDmB,EAkDpB,CAACtB,UAAD,EAAaC,WAAb,EAA0BJ,QAA1B,EAAoCC,WAApC,EAAiDC,UAAjD,EAA6DG,OAA7D,CAlDoB,CAAtB;EAoDA,MAAMqB,YAAY,GAAG5C,KAAK,CAACiB,MAAN,CACnB7B,YAAY,CAACyD,MAAb,CAAoB;IAClBC,mBAAmB,EAAGpB,CAAD,IAAOF,aAAa,CAACE,CAAD,EAAI,KAAJ,CADvB;IAElBqB,kBAAkB,EAAGrB,CAAD,IAAOF,aAAa,CAACE,CAAD,EAAI,KAAJ,CAFtB;IAGlBsB,qBAAqB,EAAGtB,CAAD,IAAOF,aAAa,CAACE,CAAD,EAAI,IAAJ,CAHzB;IAIlBuB,4BAA4B,EAAEC,UAJZ;IAKlBC,mCAAmC,EAAE,MAAM,KALzB;IAMlBC,2BAA2B,EAAEF,UANX;IAOlBG,kCAAkC,EAAEH,UAPlB;IAQlBI,gCAAgC,EAAEJ,UARhB;IASlBK,4BAA4B,EAAEL;EATZ,CAApB,CADmB,EAYnBhB,OAZF;EAaA,MAAMsB,WAAW,GAAG/C,OAAO,KAAKhB,UAAU,CAACc,KAAvB,IAAgCQ,YAAhC,GAA+C,EAA/C,GAAoD,CAAxE;EACA,MAAM0C,aAAa,GAAGhD,OAAO,KAAKhB,UAAU,CAACc,KAAvB,GAA+BA,KAA/B,GAAuCC,OAA7D;EACA,MAAMkD,gBAAgB,GAAGjD,OAAO,KAAKhB,UAAU,CAACc,KAAvB,GAA+B,EAA/B,GAAoC,CAA7D;EACA,oBACE,oBAAC,IAAD;IACE,GAAG,EAAES;EADP,GAEM4B,YAAY,CAACe,WAFnB;IAGE,KAAK,EAAE,CACLC,MAAM,CAACC,KADF,EAEL;MACEC,eAAe,EAAElD,KAAK,CAACmD,IAAN,GACbnD,KAAK,CAACoD,MAAN,CAAaC,cADA,GAEbrD,KAAK,CAACsD,IAAN,GACA/E,KAAK,CAACyB,KAAK,CAACoD,MAAN,CAAaG,OAAd,CAAL,CAA4BC,OAA5B,CAAoC,GAApC,EAAyCC,GAAzC,EADA,GAEAlF,KAAK,CAACyB,KAAK,CAACoD,MAAN,CAAaG,OAAd,CAAL,CAA4BG,MAA5B,CAAmC,GAAnC,EAAwCD,GAAxC;IALN,CAFK,CAHT,CAaE;IAbF;IAcE,MAAM,EAAE;EAdV,iBAgBE,oBAAC,IAAD;IACE,KAAK,EAAE,CACLT,MAAM,CAACW,IADF,EAEL;MACET,eAAe,EAAElD,KAAK,CAACoD,MAAN,CAAaQ,OADhC;MAEEC,SAAS,EAAE,CACT;QAAEC,MAAM,EAAE,CAAC,EAAD,GAAMjB,aAAa,GAAGC,gBAAtB,GAAyC;MAAnD,CADS,EAET;QACEiB,UAAU,EACRnF,UAAU,GAAG,CAAb,IACCiB,OAAO,KAAKhB,UAAU,CAACc,KAAvB,IACDkD,aAAa,IAAI,CADhB,IAEDA,aAAa,GAAG,EAFf,GAGG,CAHH,GAIG,CALJ,KAMChD,OAAO,KAAKhB,UAAU,CAACe,OAAvB,GAAiC,CAAjC,GAAqC,CANtC,IAOAgD,WAAW,GAAG;MATlB,CAFS,CAFb;MAgBEoB,KAAK,EAAEpF,UAAU,GAAG,CAAb,GAAiB,CAAjB,GAAqBgE;IAhB9B,CAFK,CADT;IAsBE,aAAa,EAAC;EAtBhB,gBAwBE,oBAAC,IAAD;IACE,KAAK,EAAE,CAACI,MAAM,CAACiB,QAAR,EAAkB;MAAEf,eAAe,EAAElD,KAAK,CAACoD,MAAN,CAAaQ;IAAhC,CAAlB;EADT,EAxBF,CAhBF,eA4CE,oBAAC,IAAD;IACE,KAAK,EAAE,CAACnF,UAAU,CAACyF,YAAZ,EAA0BlB,MAAM,CAACmB,MAAjC,CADT;IAEE,aAAa,EAAC;EAFhB,gBAIE,oBAAC,IAAD;IACE,KAAK,EAAE,CACLnB,MAAM,CAACoB,WADF,EAEL;MACElB,eAAe,EAAElD,KAAK,CAACoD,MAAN,CAAaQ;IADhC,CAFK;EADT,EAJF,CA5CF,eAyDE,oBAAC,qBAAD;IACE,OAAO,EAAE/D,OADX;IAEE,KAAK,eAAE,oBAAC,gBAAD;MAAkB,QAAQ,EAAEC,QAA5B;MAAsC,KAAK,EAAEH;IAA7C,EAFT;IAGE,OAAO,eAAE,oBAAC,kBAAD;MAAoB,OAAO,EAAEC;IAA7B;EAHX,EAzDF,CADF;AAiED;;AACD,MAAMoD,MAAM,GAAGvE,UAAU,CAACwD,MAAX,CAAkB;EAC/BgB,KAAK,EAAE;IACLoB,MAAM,EAAEzF,UADH;IAELoF,KAAK,EAAEpF,UAFF;IAGL0F,QAAQ,EAAE,UAHL;IAILC,cAAc,EAAE,QAJX;IAKLC,UAAU,EAAE,QALP;IAMLC,YAAY,EAAE7F,UAAU,GAAG;EANtB,CADwB;EAS/BwF,WAAW,EAAE;IACXK,YAAY,EAAE,CADH;IAEXJ,MAAM,EAAE,CAFG;IAGXL,KAAK,EAAE;EAHI,CATkB;EAc/BG,MAAM,EAAE;IAAEI,cAAc,EAAE,QAAlB;IAA4BC,UAAU,EAAE;EAAxC,CAduB;EAe/BP,QAAQ,EAAE;IACRQ,YAAY,EAAE,EADN;IAERJ,MAAM,EAAE,EAFA;IAGRL,KAAK,EAAE,EAHC;IAIRM,QAAQ,EAAE,UAJF;IAKRI,KAAK,EAAE,CALC;IAMRC,MAAM,EAAE,CAAC;EAND,CAfqB;EAuB/BhB,IAAI,EAAE;IACJW,QAAQ,EAAE,UADN;IAEJD,MAAM,EAAE,CAFJ;IAGJI,YAAY,EAAE;EAHV;AAvByB,CAAlB,CAAf;;AA6BA,SAASnC,UAAT,GAAsB;EACpB,OAAO,IAAP;AACD;;AACD,4BAAelD,KAAK,CAACwF,IAAN,CAAWlF,WAAX,CAAf"}
|
|
@@ -3,16 +3,12 @@ import { View, StyleSheet } from 'react-native';
|
|
|
3
3
|
import { Text } from 'react-native-paper';
|
|
4
4
|
import { circleSize } from './timeUtils';
|
|
5
5
|
import { useTextColorOnPrimary } from '../utils';
|
|
6
|
-
import { DisplayModeContext } from './TimePicker';
|
|
7
6
|
|
|
8
7
|
function AnalogClockHours(_ref) {
|
|
9
8
|
let {
|
|
10
9
|
is24Hour,
|
|
11
10
|
hours
|
|
12
11
|
} = _ref;
|
|
13
|
-
const {
|
|
14
|
-
mode
|
|
15
|
-
} = React.useContext(DisplayModeContext);
|
|
16
12
|
const outerRange = getHourNumbers(false, circleSize, 12, 12);
|
|
17
13
|
const innerRange = getHourNumbers(true, circleSize, 12, 12);
|
|
18
14
|
const color = useTextColorOnPrimary();
|
|
@@ -26,12 +22,12 @@ function AnalogClockHours(_ref) {
|
|
|
26
22
|
}, /*#__PURE__*/React.createElement(View, {
|
|
27
23
|
style: styles.outerHourInner
|
|
28
24
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
29
|
-
style: hours === i + 1 ? {
|
|
25
|
+
style: !is24Hour && i + 1 === hours || hours === i + 1 && hours !== 12 || i + 1 === 12 && hours === 0 ? {
|
|
30
26
|
color
|
|
31
27
|
} : null,
|
|
32
28
|
variant: "bodyLarge",
|
|
33
29
|
selectable: false
|
|
34
|
-
},
|
|
30
|
+
}, is24Hour && i + 1 === 12 ? '00' : i + 1)))), is24Hour ? innerRange.map((a, i) => /*#__PURE__*/React.createElement(View, {
|
|
35
31
|
key: i,
|
|
36
32
|
pointerEvents: "none",
|
|
37
33
|
style: [styles.innerHourRoot, {
|
|
@@ -42,11 +38,11 @@ function AnalogClockHours(_ref) {
|
|
|
42
38
|
style: styles.innerHourInner
|
|
43
39
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
44
40
|
selectable: false,
|
|
45
|
-
style: [i + 13 === hours || i + 13 === 24 && hours ===
|
|
41
|
+
style: [i + 13 === hours || i + 13 === 24 && hours === 12 ? {
|
|
46
42
|
color
|
|
47
43
|
} : null],
|
|
48
44
|
variant: "bodyLarge"
|
|
49
|
-
}, i + 13 === 24 ? '
|
|
45
|
+
}, i + 13 === 24 ? '12' : i + 13)))) : null);
|
|
50
46
|
}
|
|
51
47
|
|
|
52
48
|
const styles = StyleSheet.create({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","StyleSheet","Text","circleSize","useTextColorOnPrimary","
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","Text","circleSize","useTextColorOnPrimary","AnalogClockHours","is24Hour","hours","outerRange","getHourNumbers","innerRange","color","map","a","i","styles","outerHourRoot","top","left","outerHourInner","innerHourRoot","innerHourInner","create","position","justifyContent","alignItems","zIndex","width","height","marginLeft","marginTop","borderRadius","size","count","arrayLength","angle","step","Math","PI","radius","Array","fill","x","round","cos","y","sin","memo"],"sources":["AnalogClockHours.tsx"],"sourcesContent":["import * as React from 'react'\nimport { View, StyleSheet } from 'react-native'\nimport { Text } from 'react-native-paper'\nimport { circleSize } from './timeUtils'\nimport { useTextColorOnPrimary } from '../utils'\n\nfunction AnalogClockHours({\n is24Hour,\n hours,\n}: {\n is24Hour: boolean\n hours: number\n}) {\n const outerRange = getHourNumbers(false, circleSize, 12, 12)\n const innerRange = getHourNumbers(true, circleSize, 12, 12)\n const color = useTextColorOnPrimary()\n\n return (\n <>\n {outerRange.map((a, i) => (\n <View\n key={i}\n pointerEvents=\"none\"\n style={[\n styles.outerHourRoot,\n {\n top: a[1] || 0,\n left: a[0] || 0,\n },\n ]}\n >\n <View style={styles.outerHourInner}>\n {/* Display 00 instead of 12 for AM hours */}\n <Text\n style={\n (!is24Hour && i + 1 === hours) ||\n (hours === i + 1 && hours !== 12) ||\n (i + 1 === 12 && hours === 0)\n ? { color }\n : null\n }\n variant=\"bodyLarge\"\n selectable={false}\n >\n {is24Hour && i + 1 === 12 ? '00' : i + 1}\n </Text>\n </View>\n </View>\n ))}\n {is24Hour\n ? innerRange.map((a, i) => (\n <View\n key={i}\n pointerEvents=\"none\"\n style={[\n styles.innerHourRoot,\n {\n top: a[1] || 0,\n left: a[0] || 0,\n },\n ]}\n >\n <View style={styles.innerHourInner}>\n <Text\n selectable={false}\n style={[\n i + 13 === hours || (i + 13 === 24 && hours === 12)\n ? { color }\n : null,\n ]}\n variant=\"bodyLarge\"\n >\n {i + 13 === 24 ? '12' : i + 13}\n </Text>\n </View>\n </View>\n ))\n : null}\n </>\n )\n}\n\nconst styles = StyleSheet.create({\n outerHourRoot: {\n position: 'absolute',\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 20,\n width: 48,\n height: 48,\n marginLeft: -24,\n marginTop: -24,\n borderRadius: 24,\n },\n outerHourInner: { borderRadius: 24 },\n innerHourRoot: {\n position: 'absolute',\n zIndex: 20,\n justifyContent: 'center',\n alignItems: 'center',\n width: 48,\n height: 48,\n marginLeft: -24,\n marginTop: -24,\n borderRadius: 24,\n },\n innerHourInner: { borderRadius: 24 },\n})\n\nfunction getHourNumbers(\n is24Hour: boolean,\n size: number,\n count: number,\n arrayLength: number\n) {\n let angle = 0\n let step = (2 * Math.PI) / count\n let radius = size / (is24Hour ? 4 : 2.5)\n\n angle = (-90 * Math.PI) / 180 + Math.PI / 6\n\n return Array(arrayLength)\n .fill(true)\n .map(() => {\n let x = Math.round(size / 2 + radius * Math.cos(angle))\n let y = Math.round(size / 2 + radius * Math.sin(angle))\n angle += step\n return [x, y]\n })\n}\n\nexport default React.memo(AnalogClockHours)\n"],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ function TimeInput(_ref, ref) {
|
|
|
14
14
|
onPress,
|
|
15
15
|
onChanged,
|
|
16
16
|
inputType,
|
|
17
|
+
inputFontSize = 57,
|
|
17
18
|
...rest
|
|
18
19
|
} = _ref;
|
|
19
20
|
const [controlledValue, setControlledValue] = React.useState(`${value}`);
|
|
@@ -49,6 +50,7 @@ function TimeInput(_ref, ref) {
|
|
|
49
50
|
style: [styles.input, // eslint-disable-next-line react-native/no-inline-styles
|
|
50
51
|
{
|
|
51
52
|
color,
|
|
53
|
+
fontSize: inputFontSize,
|
|
52
54
|
backgroundColor,
|
|
53
55
|
borderRadius: theme.roundness * 2,
|
|
54
56
|
borderColor: theme.isV3 && highlighted ? theme.colors.onPrimaryContainer : undefined,
|
|
@@ -79,7 +81,6 @@ const styles = StyleSheet.create({
|
|
|
79
81
|
width: 96
|
|
80
82
|
},
|
|
81
83
|
input: {
|
|
82
|
-
fontSize: 57,
|
|
83
84
|
textAlign: 'center',
|
|
84
85
|
textAlignVertical: 'center',
|
|
85
86
|
width: 96
|