react-native-paper-dates 0.11.4 → 0.11.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -1
- package/lib/commonjs/Time/AmPmSwitcher.js +13 -10
- package/lib/commonjs/Time/AmPmSwitcher.js.map +1 -1
- package/lib/commonjs/Time/AnalogClock.js +6 -7
- package/lib/commonjs/Time/AnalogClock.js.map +1 -1
- package/lib/commonjs/Time/AnalogClockHours.js +16 -17
- package/lib/commonjs/Time/AnalogClockHours.js.map +1 -1
- package/lib/commonjs/Time/AnalogClockMinutes.js +8 -7
- package/lib/commonjs/Time/AnalogClockMinutes.js.map +1 -1
- package/lib/commonjs/Time/TimeInput.js +9 -7
- package/lib/commonjs/Time/TimeInput.js.map +1 -1
- package/lib/commonjs/Time/TimeInputs.js +22 -9
- package/lib/commonjs/Time/TimeInputs.js.map +1 -1
- package/lib/commonjs/Time/TimePicker.js +4 -3
- package/lib/commonjs/Time/TimePicker.js.map +1 -1
- package/lib/commonjs/Time/TimePickerModal.js +20 -12
- package/lib/commonjs/Time/TimePickerModal.js.map +1 -1
- package/lib/commonjs/Time/timeUtils.js +14 -19
- package/lib/commonjs/Time/timeUtils.js.map +1 -1
- package/lib/commonjs/utils.js +9 -0
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/module/Time/AmPmSwitcher.js +14 -11
- package/lib/module/Time/AmPmSwitcher.js.map +1 -1
- package/lib/module/Time/AnalogClock.js +6 -7
- package/lib/module/Time/AnalogClock.js.map +1 -1
- package/lib/module/Time/AnalogClockHours.js +16 -17
- package/lib/module/Time/AnalogClockHours.js.map +1 -1
- package/lib/module/Time/AnalogClockMinutes.js +8 -7
- package/lib/module/Time/AnalogClockMinutes.js.map +1 -1
- package/lib/module/Time/TimeInput.js +10 -8
- package/lib/module/Time/TimeInput.js.map +1 -1
- package/lib/module/Time/TimeInputs.js +23 -10
- package/lib/module/Time/TimeInputs.js.map +1 -1
- package/lib/module/Time/TimePicker.js +4 -3
- package/lib/module/Time/TimePicker.js.map +1 -1
- package/lib/module/Time/TimePickerModal.js +20 -12
- package/lib/module/Time/TimePickerModal.js.map +1 -1
- package/lib/module/Time/timeUtils.js +15 -20
- package/lib/module/Time/timeUtils.js.map +1 -1
- package/lib/module/utils.js +9 -0
- package/lib/module/utils.js.map +1 -1
- package/lib/typescript/Time/AmPmSwitcher.d.ts +3 -1
- package/lib/typescript/Time/timeUtils.d.ts +1 -1
- package/lib/typescript/utils.d.ts +1 -1
- package/package.json +2 -2
- package/src/Time/AmPmSwitcher.tsx +15 -9
- package/src/Time/AnalogClock.tsx +16 -9
- package/src/Time/AnalogClockHours.tsx +18 -16
- package/src/Time/AnalogClockMinutes.tsx +7 -7
- package/src/Time/TimeInput.tsx +21 -6
- package/src/Time/TimeInputs.tsx +82 -58
- package/src/Time/TimePicker.tsx +18 -2
- package/src/Time/TimePickerModal.tsx +35 -14
- package/src/Time/timeUtils.ts +23 -17
- package/src/utils.ts +9 -0
|
@@ -69,7 +69,9 @@ function TimePicker(_ref) {
|
|
|
69
69
|
setMode: setDisplayMode
|
|
70
70
|
}
|
|
71
71
|
}, /*#__PURE__*/React.createElement(_reactNative.View, {
|
|
72
|
-
style: isLandscape ? styles.rootLandscape
|
|
72
|
+
style: isLandscape ? [styles.rootLandscape, {
|
|
73
|
+
width: 24 * 3 + 96 * 2 + 52 + (inputType === _timeUtils.inputTypes.picker ? _timeUtils.circleSize : -_timeUtils.circleSize)
|
|
74
|
+
}] : styles.rootPortrait
|
|
73
75
|
}, /*#__PURE__*/React.createElement(_TimeInputs.default, {
|
|
74
76
|
inputType: inputType,
|
|
75
77
|
hours: hours,
|
|
@@ -93,8 +95,7 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
93
95
|
rootLandscape: {
|
|
94
96
|
flexDirection: 'row',
|
|
95
97
|
alignItems: 'center',
|
|
96
|
-
justifyContent: 'center'
|
|
97
|
-
width: 24 * 3 + 96 * 2 + 52 + _timeUtils.circleSize
|
|
98
|
+
justifyContent: 'center'
|
|
98
99
|
},
|
|
99
100
|
rootPortrait: {
|
|
100
101
|
alignItems: 'center',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DisplayModeContext","React","createContext","mode","setMode","TimePicker","hours","minutes","onFocusInput","focused","inputType","onChange","locale","displayMode","setDisplayMode","useState","undefined","dimensions","useWindowDimensions","isLandscape","width","height","is24Hour","useMemo","formatter","Intl","DateTimeFormat","hour","minute","timeZone","formatted","format","Date","UTC","includes","useEffect","onInnerChange","useCallback","params","toHourOutputFormat","styles","rootLandscape","
|
|
1
|
+
{"version":3,"names":["DisplayModeContext","React","createContext","mode","setMode","TimePicker","hours","minutes","onFocusInput","focused","inputType","onChange","locale","displayMode","setDisplayMode","useState","undefined","dimensions","useWindowDimensions","isLandscape","width","height","is24Hour","useMemo","formatter","Intl","DateTimeFormat","hour","minute","timeZone","formatted","format","Date","UTC","includes","useEffect","onInnerChange","useCallback","params","toHourOutputFormat","styles","rootLandscape","inputTypes","picker","circleSize","rootPortrait","clockContainer","toHourInputFormat","StyleSheet","create","flexDirection","alignItems","justifyContent","paddingTop","paddingLeft","paddingRight","memo"],"sources":["TimePicker.tsx"],"sourcesContent":["import * as React from 'react'\nimport { View, StyleSheet, useWindowDimensions } from 'react-native'\n\nimport {\n inputTypes,\n PossibleClockTypes,\n PossibleInputTypes,\n toHourInputFormat,\n toHourOutputFormat,\n} from './timeUtils'\n\nimport AnalogClock from './AnalogClock'\nimport { circleSize } from './timeUtils'\nimport TimeInputs from './TimeInputs'\n\nexport const DisplayModeContext = React.createContext<{\n mode: 'AM' | 'PM' | undefined\n setMode: React.Dispatch<React.SetStateAction<'AM' | 'PM' | undefined>>\n}>({ mode: 'AM', setMode: () => {} })\n\ntype onChangeFunc = ({\n hours,\n minutes,\n focused,\n}: {\n hours: number\n minutes: number\n focused?: undefined | PossibleClockTypes\n}) => any\n\nfunction TimePicker({\n hours,\n minutes,\n onFocusInput,\n focused,\n inputType,\n onChange,\n locale,\n}: {\n locale?: undefined | string\n inputType: PossibleInputTypes\n focused: PossibleClockTypes\n hours: number\n minutes: number\n onFocusInput: (type: PossibleClockTypes) => any\n onChange: onChangeFunc\n}) {\n const [displayMode, setDisplayMode] = React.useState<'AM' | 'PM' | undefined>(\n undefined\n )\n const dimensions = useWindowDimensions()\n const isLandscape = dimensions.width > dimensions.height\n\n // method to check whether we have 24 hours in clock or 12\n const is24Hour = React.useMemo(() => {\n const formatter = new Intl.DateTimeFormat(locale, {\n hour: '2-digit',\n minute: '2-digit',\n timeZone: 'UTC',\n })\n const formatted = formatter.format(new Date(Date.UTC(2020, 1, 1, 23)))\n return formatted.includes('23')\n }, [locale])\n\n // Initialize display Mode according the hours value\n React.useEffect(() => {\n if (hours >= 12) {\n setDisplayMode('PM')\n } else {\n setDisplayMode('AM')\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const onInnerChange = React.useCallback<onChangeFunc>(\n (params) => {\n params.hours = toHourOutputFormat(params.hours, hours, is24Hour)\n onChange(params)\n },\n [onChange, hours, is24Hour]\n )\n\n return (\n <DisplayModeContext.Provider\n value={{ mode: displayMode, setMode: setDisplayMode }}\n >\n <View\n style={\n isLandscape\n ? [\n styles.rootLandscape,\n {\n width:\n 24 * 3 +\n 96 * 2 +\n 52 +\n (inputType === inputTypes.picker\n ? circleSize\n : -circleSize),\n },\n ]\n : styles.rootPortrait\n }\n >\n <TimeInputs\n inputType={inputType}\n hours={hours}\n minutes={minutes}\n is24Hour={is24Hour}\n onChange={onChange}\n onFocusInput={onFocusInput}\n focused={focused}\n />\n {inputType === inputTypes.picker ? (\n <View style={styles.clockContainer}>\n <AnalogClock\n hours={toHourInputFormat(hours, is24Hour)}\n minutes={minutes}\n focused={focused}\n is24Hour={is24Hour}\n onChange={onInnerChange}\n />\n </View>\n ) : null}\n </View>\n </DisplayModeContext.Provider>\n )\n}\n\nconst styles = StyleSheet.create({\n rootLandscape: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n },\n rootPortrait: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n clockContainer: { paddingTop: 36, paddingLeft: 12, paddingRight: 12 },\n})\n\nexport default React.memo(TimePicker)\n"],"mappings":"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"}
|
|
@@ -44,9 +44,10 @@ function TimePickerModal(_ref) {
|
|
|
44
44
|
} = _ref;
|
|
45
45
|
const theme = (0, _reactNativePaper.useTheme)();
|
|
46
46
|
let textFont;
|
|
47
|
+
let labelText = label;
|
|
47
48
|
|
|
48
49
|
if (theme.isV3) {
|
|
49
|
-
textFont = theme.fonts.
|
|
50
|
+
textFont = theme.fonts.labelMedium;
|
|
50
51
|
} else {
|
|
51
52
|
textFont = theme === null || theme === void 0 ? void 0 : theme.fonts.medium;
|
|
52
53
|
}
|
|
@@ -55,6 +56,11 @@ function TimePickerModal(_ref) {
|
|
|
55
56
|
const [focused, setFocused] = React.useState(_timeUtils.clockTypes.hours);
|
|
56
57
|
const [localHours, setLocalHours] = React.useState(getHours(hours));
|
|
57
58
|
const [localMinutes, setLocalMinutes] = React.useState(getMinutes(minutes));
|
|
59
|
+
|
|
60
|
+
if (inputType === _timeUtils.inputTypes.keyboard && !label) {
|
|
61
|
+
labelText = 'Enter time';
|
|
62
|
+
}
|
|
63
|
+
|
|
58
64
|
React.useEffect(() => {
|
|
59
65
|
setLocalHours(getHours(hours));
|
|
60
66
|
}, [setLocalHours, hours]);
|
|
@@ -76,8 +82,7 @@ function TimePickerModal(_ref) {
|
|
|
76
82
|
visible: visible,
|
|
77
83
|
onRequestClose: onDismiss,
|
|
78
84
|
presentationStyle: "overFullScreen",
|
|
79
|
-
supportedOrientations: supportedOrientations
|
|
80
|
-
,
|
|
85
|
+
supportedOrientations: supportedOrientations,
|
|
81
86
|
statusBarTranslucent: true
|
|
82
87
|
}, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_reactNative.TouchableWithoutFeedback, {
|
|
83
88
|
onPress: onDismiss
|
|
@@ -93,16 +98,16 @@ function TimePickerModal(_ref) {
|
|
|
93
98
|
behavior: 'padding'
|
|
94
99
|
}, /*#__PURE__*/React.createElement(_reactNative.Animated.View, {
|
|
95
100
|
style: [styles.modalContent, {
|
|
96
|
-
backgroundColor: theme.dark ? (0, _reactNativePaper.overlay)(10, theme.colors.surface) : theme.colors.surface,
|
|
97
|
-
borderRadius: theme.roundness
|
|
101
|
+
backgroundColor: theme.dark && theme.isV3 ? theme.colors.elevation.level3 : theme.isV3 ? theme.colors.surface : theme.dark ? (0, _reactNativePaper.overlay)(10, theme.colors.surface) : theme.colors.surface,
|
|
102
|
+
borderRadius: theme.isV3 ? theme.roundness * 6 : theme.roundness
|
|
98
103
|
}]
|
|
99
104
|
}, /*#__PURE__*/React.createElement(_reactNative.View, {
|
|
100
105
|
style: styles.labelContainer
|
|
101
106
|
}, /*#__PURE__*/React.createElement(_reactNative.Text, {
|
|
102
107
|
style: [styles.label, { ...textFont,
|
|
103
|
-
color: theme !== null && theme !== void 0 && theme.isV3 ? theme.colors.
|
|
108
|
+
color: theme !== null && theme !== void 0 && theme.isV3 ? theme.colors.onSurfaceVariant : theme.colors.text
|
|
104
109
|
}]
|
|
105
|
-
}, uppercase ?
|
|
110
|
+
}, uppercase ? labelText.toUpperCase() : labelText)), /*#__PURE__*/React.createElement(_reactNative.View, {
|
|
106
111
|
style: styles.timePickerContainer
|
|
107
112
|
}, /*#__PURE__*/React.createElement(_TimePicker.default, {
|
|
108
113
|
locale: locale,
|
|
@@ -167,22 +172,25 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
167
172
|
},
|
|
168
173
|
shadowOpacity: 0.34,
|
|
169
174
|
shadowRadius: 6.27,
|
|
170
|
-
elevation:
|
|
171
|
-
minWidth: 287
|
|
175
|
+
elevation: 3,
|
|
176
|
+
minWidth: 287,
|
|
177
|
+
paddingVertical: 8
|
|
172
178
|
},
|
|
173
179
|
labelContainer: {
|
|
174
|
-
height: 28,
|
|
175
180
|
justifyContent: 'flex-end',
|
|
176
181
|
paddingLeft: 24,
|
|
177
182
|
paddingRight: 24,
|
|
178
|
-
|
|
183
|
+
paddingTop: 16
|
|
179
184
|
},
|
|
180
185
|
label: {
|
|
181
186
|
letterSpacing: 1,
|
|
182
187
|
fontSize: 13
|
|
183
188
|
},
|
|
184
189
|
timePickerContainer: {
|
|
185
|
-
|
|
190
|
+
paddingLeft: 24,
|
|
191
|
+
paddingTop: 20,
|
|
192
|
+
paddingBottom: 16,
|
|
193
|
+
paddingRight: 24
|
|
186
194
|
},
|
|
187
195
|
bottom: {
|
|
188
196
|
flexDirection: 'row',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["supportedOrientations","TimePickerModal","visible","onDismiss","onConfirm","hours","minutes","label","uppercase","cancelLabel","confirmLabel","animationType","locale","keyboardIcon","clockIcon","theme","useTheme","textFont","isV3","fonts","bodyMedium","medium","inputType","setInputType","React","useState","inputTypes","picker","focused","setFocused","clockTypes","localHours","setLocalHours","getHours","localMinutes","setLocalMinutes","getMinutes","useEffect","onFocusInput","useCallback","type","onChange","params","StyleSheet","absoluteFill","styles","modalBackground","backgroundColor","colors","backdrop","modalRoot","keyboardView","modalContent","dark","overlay","surface","borderRadius","roundness","labelContainer","color","onBackground","text","toUpperCase","timePickerContainer","bottom","getTimeInputTypeIcon","keyboard","reverseInputTypes","inputTypeToggle","fill","undefined","Date","create","justifyContent","alignItems","flex","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","minWidth","paddingLeft","paddingRight","marginTop","letterSpacing","fontSize","padding","flexDirection","margin","memo"],"sources":["TimePickerModal.tsx"],"sourcesContent":["import * as React from 'react'\nimport {\n Modal,\n StyleSheet,\n View,\n Text,\n Animated,\n TouchableWithoutFeedback,\n KeyboardAvoidingView,\n} from 'react-native'\n\nimport {\n Button,\n IconButton,\n MD2Theme,\n overlay,\n useTheme,\n} from 'react-native-paper'\n\nimport TimePicker from './TimePicker'\nimport {\n clockTypes,\n getTimeInputTypeIcon,\n inputTypes,\n PossibleClockTypes,\n PossibleInputTypes,\n reverseInputTypes,\n} from './timeUtils'\n\nconst supportedOrientations: any[] = [\n 'portrait',\n 'portrait-upside-down',\n 'landscape',\n 'landscape-left',\n 'landscape-right',\n]\n\nexport function TimePickerModal({\n visible,\n onDismiss,\n onConfirm,\n hours,\n minutes,\n label = 'Select time',\n uppercase = true,\n cancelLabel = 'Cancel',\n confirmLabel = 'Ok',\n animationType = 'none',\n locale,\n keyboardIcon = 'keyboard-outline',\n clockIcon = 'clock-outline',\n}: {\n locale?: undefined | string\n label?: string\n uppercase?: boolean\n cancelLabel?: string\n confirmLabel?: string\n hours?: number | undefined\n minutes?: number | undefined\n visible: boolean | undefined\n onDismiss: () => any\n onConfirm: (hoursAndMinutes: { hours: number; minutes: number }) => any\n animationType?: 'slide' | 'fade' | 'none'\n keyboardIcon?: string\n clockIcon?: string\n}) {\n const theme = useTheme()\n\n let textFont\n\n if (theme.isV3) {\n textFont = theme.fonts.bodyMedium\n } else {\n textFont = (theme as any as MD2Theme)?.fonts.medium\n }\n\n const [inputType, setInputType] = React.useState<PossibleInputTypes>(\n inputTypes.picker\n )\n const [focused, setFocused] = React.useState<PossibleClockTypes>(\n clockTypes.hours\n )\n const [localHours, setLocalHours] = React.useState<number>(getHours(hours))\n const [localMinutes, setLocalMinutes] = React.useState<number>(\n getMinutes(minutes)\n )\n\n React.useEffect(() => {\n setLocalHours(getHours(hours))\n }, [setLocalHours, hours])\n\n React.useEffect(() => {\n setLocalMinutes(getMinutes(minutes))\n }, [setLocalMinutes, minutes])\n\n const onFocusInput = React.useCallback(\n (type: PossibleClockTypes) => setFocused(type),\n []\n )\n const onChange = React.useCallback(\n (params: {\n focused?: PossibleClockTypes | undefined\n hours: number\n minutes: number\n }) => {\n if (params.focused) {\n setFocused(params.focused)\n }\n\n setLocalHours(params.hours)\n setLocalMinutes(params.minutes)\n },\n [setFocused, setLocalHours, setLocalMinutes]\n )\n return (\n <Modal\n animationType={animationType}\n transparent={true}\n visible={visible}\n onRequestClose={onDismiss}\n presentationStyle=\"overFullScreen\"\n supportedOrientations={supportedOrientations}\n //@ts-ignore\n statusBarTranslucent={true}\n >\n <>\n <TouchableWithoutFeedback onPress={onDismiss}>\n <View\n style={[\n StyleSheet.absoluteFill,\n styles.modalBackground,\n { backgroundColor: theme.colors?.backdrop },\n ]}\n />\n </TouchableWithoutFeedback>\n\n <View\n style={[StyleSheet.absoluteFill, styles.modalRoot]}\n pointerEvents=\"box-none\"\n >\n <KeyboardAvoidingView\n style={styles.keyboardView}\n behavior={'padding'}\n >\n <Animated.View\n style={[\n styles.modalContent,\n {\n backgroundColor: theme.dark\n ? overlay(10, theme.colors.surface)\n : theme.colors.surface,\n borderRadius: theme.roundness,\n },\n ]}\n >\n <View style={styles.labelContainer}>\n <Text\n style={[\n styles.label,\n {\n ...textFont,\n color: theme?.isV3\n ? theme.colors.onBackground\n : (theme as any as MD2Theme).colors.text,\n },\n ]}\n >\n {uppercase ? label.toUpperCase() : label}\n </Text>\n </View>\n <View style={styles.timePickerContainer}>\n <TimePicker\n locale={locale}\n inputType={inputType}\n focused={focused}\n hours={localHours}\n minutes={localMinutes}\n onChange={onChange}\n onFocusInput={onFocusInput}\n />\n </View>\n <View style={styles.bottom}>\n <IconButton\n icon={getTimeInputTypeIcon(inputType, {\n keyboard: keyboardIcon,\n picker: clockIcon,\n })}\n onPress={() => setInputType(reverseInputTypes[inputType])}\n size={24}\n style={styles.inputTypeToggle}\n accessibilityLabel=\"toggle keyboard\"\n />\n <View style={styles.fill} />\n <Button onPress={onDismiss} uppercase={uppercase}>\n {cancelLabel}\n </Button>\n <Button\n onPress={() =>\n onConfirm({ hours: localHours, minutes: localMinutes })\n }\n uppercase={uppercase}\n >\n {confirmLabel}\n </Button>\n </View>\n </Animated.View>\n </KeyboardAvoidingView>\n </View>\n </>\n </Modal>\n )\n}\n\nfunction getMinutes(minutes: number | undefined | null): number {\n return minutes === undefined || minutes === null\n ? new Date().getMinutes()\n : minutes\n}\nfunction getHours(hours: number | undefined | null): number {\n return hours === undefined || hours === null ? new Date().getHours() : hours\n}\n\nconst styles = StyleSheet.create({\n modalRoot: {\n justifyContent: 'center',\n alignItems: 'center',\n flex: 1,\n },\n keyboardView: {\n justifyContent: 'center',\n alignItems: 'center',\n flex: 1,\n },\n modalBackground: {\n flex: 1,\n },\n modalContent: {\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 5,\n },\n shadowOpacity: 0.34,\n shadowRadius: 6.27,\n elevation: 10,\n minWidth: 287,\n },\n labelContainer: {\n height: 28,\n justifyContent: 'flex-end',\n paddingLeft: 24,\n paddingRight: 24,\n marginTop: 8,\n },\n label: {\n letterSpacing: 1,\n fontSize: 13,\n },\n timePickerContainer: { padding: 24 },\n bottom: {\n flexDirection: 'row',\n alignItems: 'center',\n padding: 8,\n },\n inputTypeToggle: { margin: 4 },\n fill: { flex: 1 },\n})\n\nexport default React.memo(TimePickerModal)\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["supportedOrientations","TimePickerModal","visible","onDismiss","onConfirm","hours","minutes","label","uppercase","cancelLabel","confirmLabel","animationType","locale","keyboardIcon","clockIcon","theme","useTheme","textFont","labelText","isV3","fonts","labelMedium","medium","inputType","setInputType","React","useState","inputTypes","picker","focused","setFocused","clockTypes","localHours","setLocalHours","getHours","localMinutes","setLocalMinutes","getMinutes","keyboard","useEffect","onFocusInput","useCallback","type","onChange","params","StyleSheet","absoluteFill","styles","modalBackground","backgroundColor","colors","backdrop","modalRoot","keyboardView","modalContent","dark","elevation","level3","surface","overlay","borderRadius","roundness","labelContainer","color","onSurfaceVariant","text","toUpperCase","timePickerContainer","bottom","getTimeInputTypeIcon","reverseInputTypes","inputTypeToggle","fill","undefined","Date","create","justifyContent","alignItems","flex","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","minWidth","paddingVertical","paddingLeft","paddingRight","paddingTop","letterSpacing","fontSize","paddingBottom","flexDirection","padding","margin","memo"],"sources":["TimePickerModal.tsx"],"sourcesContent":["import * as React from 'react'\nimport {\n Modal,\n StyleSheet,\n View,\n Text,\n Animated,\n TouchableWithoutFeedback,\n KeyboardAvoidingView,\n} from 'react-native'\n\nimport {\n Button,\n IconButton,\n MD2Theme,\n overlay,\n useTheme,\n} from 'react-native-paper'\n\nimport TimePicker from './TimePicker'\nimport {\n clockTypes,\n getTimeInputTypeIcon,\n inputTypes,\n PossibleClockTypes,\n PossibleInputTypes,\n reverseInputTypes,\n} from './timeUtils'\n\nconst supportedOrientations: (\n | 'portrait'\n | 'portrait-upside-down'\n | 'landscape'\n | 'landscape-left'\n | 'landscape-right'\n)[] = [\n 'portrait',\n 'portrait-upside-down',\n 'landscape',\n 'landscape-left',\n 'landscape-right',\n]\n\nexport function TimePickerModal({\n visible,\n onDismiss,\n onConfirm,\n hours,\n minutes,\n label = 'Select time',\n uppercase = true,\n cancelLabel = 'Cancel',\n confirmLabel = 'Ok',\n animationType = 'none',\n locale,\n keyboardIcon = 'keyboard-outline',\n clockIcon = 'clock-outline',\n}: {\n locale?: undefined | string\n label?: string\n uppercase?: boolean\n cancelLabel?: string\n confirmLabel?: string\n hours?: number | undefined\n minutes?: number | undefined\n visible: boolean | undefined\n onDismiss: () => any\n onConfirm: (hoursAndMinutes: { hours: number; minutes: number }) => any\n animationType?: 'slide' | 'fade' | 'none'\n keyboardIcon?: string\n clockIcon?: string\n}) {\n const theme = useTheme()\n\n let textFont\n let labelText = label\n\n if (theme.isV3) {\n textFont = theme.fonts.labelMedium\n } else {\n textFont = (theme as any as MD2Theme)?.fonts.medium\n }\n\n const [inputType, setInputType] = React.useState<PossibleInputTypes>(\n inputTypes.picker\n )\n const [focused, setFocused] = React.useState<PossibleClockTypes>(\n clockTypes.hours\n )\n const [localHours, setLocalHours] = React.useState<number>(getHours(hours))\n const [localMinutes, setLocalMinutes] = React.useState<number>(\n getMinutes(minutes)\n )\n\n if (inputType === inputTypes.keyboard && !label) {\n labelText = 'Enter time'\n }\n\n React.useEffect(() => {\n setLocalHours(getHours(hours))\n }, [setLocalHours, hours])\n\n React.useEffect(() => {\n setLocalMinutes(getMinutes(minutes))\n }, [setLocalMinutes, minutes])\n\n const onFocusInput = React.useCallback(\n (type: PossibleClockTypes) => setFocused(type),\n []\n )\n const onChange = React.useCallback(\n (params: {\n focused?: PossibleClockTypes | undefined\n hours: number\n minutes: number\n }) => {\n if (params.focused) {\n setFocused(params.focused)\n }\n\n setLocalHours(params.hours)\n setLocalMinutes(params.minutes)\n },\n [setFocused, setLocalHours, setLocalMinutes]\n )\n return (\n <Modal\n animationType={animationType}\n transparent={true}\n visible={visible}\n onRequestClose={onDismiss}\n presentationStyle=\"overFullScreen\"\n supportedOrientations={supportedOrientations}\n statusBarTranslucent={true}\n >\n <>\n <TouchableWithoutFeedback onPress={onDismiss}>\n <View\n style={[\n StyleSheet.absoluteFill,\n styles.modalBackground,\n { backgroundColor: theme.colors?.backdrop },\n ]}\n />\n </TouchableWithoutFeedback>\n <View\n style={[StyleSheet.absoluteFill, styles.modalRoot]}\n pointerEvents=\"box-none\"\n >\n <KeyboardAvoidingView\n style={styles.keyboardView}\n behavior={'padding'}\n >\n <Animated.View\n style={[\n styles.modalContent,\n {\n backgroundColor:\n theme.dark && theme.isV3\n ? theme.colors.elevation.level3\n : theme.isV3\n ? theme.colors.surface\n : theme.dark\n ? overlay(10, theme.colors.surface)\n : theme.colors.surface,\n borderRadius: theme.isV3\n ? theme.roundness * 6\n : theme.roundness,\n },\n ]}\n >\n <View style={styles.labelContainer}>\n <Text\n style={[\n styles.label,\n {\n ...textFont,\n color: theme?.isV3\n ? theme.colors.onSurfaceVariant\n : (theme as any as MD2Theme).colors.text,\n },\n ]}\n >\n {uppercase ? labelText.toUpperCase() : labelText}\n </Text>\n </View>\n <View style={styles.timePickerContainer}>\n <TimePicker\n locale={locale}\n inputType={inputType}\n focused={focused}\n hours={localHours}\n minutes={localMinutes}\n onChange={onChange}\n onFocusInput={onFocusInput}\n />\n </View>\n <View style={styles.bottom}>\n <IconButton\n icon={getTimeInputTypeIcon(inputType, {\n keyboard: keyboardIcon,\n picker: clockIcon,\n })}\n onPress={() => setInputType(reverseInputTypes[inputType])}\n size={24}\n style={styles.inputTypeToggle}\n accessibilityLabel=\"toggle keyboard\"\n />\n <View style={styles.fill} />\n <Button onPress={onDismiss} uppercase={uppercase}>\n {cancelLabel}\n </Button>\n <Button\n onPress={() =>\n onConfirm({ hours: localHours, minutes: localMinutes })\n }\n uppercase={uppercase}\n >\n {confirmLabel}\n </Button>\n </View>\n </Animated.View>\n </KeyboardAvoidingView>\n </View>\n </>\n </Modal>\n )\n}\n\nfunction getMinutes(minutes: number | undefined | null): number {\n return minutes === undefined || minutes === null\n ? new Date().getMinutes()\n : minutes\n}\nfunction getHours(hours: number | undefined | null): number {\n return hours === undefined || hours === null ? new Date().getHours() : hours\n}\n\nconst styles = StyleSheet.create({\n modalRoot: {\n justifyContent: 'center',\n alignItems: 'center',\n flex: 1,\n },\n keyboardView: {\n justifyContent: 'center',\n alignItems: 'center',\n flex: 1,\n },\n modalBackground: {\n flex: 1,\n },\n modalContent: {\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 5,\n },\n shadowOpacity: 0.34,\n shadowRadius: 6.27,\n elevation: 3,\n minWidth: 287,\n paddingVertical: 8,\n },\n labelContainer: {\n justifyContent: 'flex-end',\n paddingLeft: 24,\n paddingRight: 24,\n paddingTop: 16,\n },\n label: {\n letterSpacing: 1,\n fontSize: 13,\n },\n timePickerContainer: {\n paddingLeft: 24,\n paddingTop: 20,\n paddingBottom: 16,\n paddingRight: 24,\n },\n bottom: {\n flexDirection: 'row',\n alignItems: 'center',\n padding: 8,\n },\n inputTypeToggle: { margin: 4 },\n fill: { flex: 1 },\n})\n\nexport default React.memo(TimePickerModal)\n"],"mappings":"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"}
|
|
@@ -28,8 +28,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
28
28
|
|
|
29
29
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
const circleSize = 215;
|
|
31
|
+
const circleSize = 256;
|
|
33
32
|
exports.circleSize = circleSize;
|
|
34
33
|
const hourTypes = {
|
|
35
34
|
am: 'am',
|
|
@@ -171,11 +170,7 @@ function useSwitchColors(highlighted) {
|
|
|
171
170
|
const backgroundColor = React.useMemo(() => {
|
|
172
171
|
if (theme.dark) {
|
|
173
172
|
if (highlighted) {
|
|
174
|
-
return (0, _color.default)(theme.colors.primary).hex();
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
if (theme.isV3) {
|
|
178
|
-
return (0, _color.default)(theme.colors.surface).lighten(1.4).hex();
|
|
173
|
+
return theme.isV3 ? theme.colors.tertiaryContainer : (0, _color.default)(theme.colors.primary).hex();
|
|
179
174
|
}
|
|
180
175
|
|
|
181
176
|
return theme.colors.backdrop;
|
|
@@ -193,11 +188,11 @@ function useSwitchColors(highlighted) {
|
|
|
193
188
|
}, [highlighted, theme]);
|
|
194
189
|
const color = React.useMemo(() => {
|
|
195
190
|
if (highlighted && !theme.dark) {
|
|
196
|
-
return theme.colors.primary;
|
|
191
|
+
return theme.isV3 ? theme.colors.onSurfaceVariant : theme.colors.primary;
|
|
197
192
|
}
|
|
198
193
|
|
|
199
194
|
if (highlighted && theme.dark) {
|
|
200
|
-
return theme.colors.background;
|
|
195
|
+
return theme.isV3 ? theme.colors.onTertiaryContainer : theme.colors.background;
|
|
201
196
|
}
|
|
202
197
|
|
|
203
198
|
if (theme.isV3) {
|
|
@@ -217,38 +212,38 @@ function useInputColors(highlighted) {
|
|
|
217
212
|
const backgroundColor = React.useMemo(() => {
|
|
218
213
|
if (theme.dark) {
|
|
219
214
|
if (highlighted) {
|
|
220
|
-
return (0, _color.default)(theme.colors.primary).hex();
|
|
215
|
+
return theme.isV3 ? theme.colors.primaryContainer : (0, _color.default)(theme.colors.primary).hex();
|
|
221
216
|
}
|
|
222
217
|
|
|
223
|
-
return (0, _color.default)(theme.colors.surface).lighten(1.4).hex();
|
|
218
|
+
return theme.isV3 ? theme.colors.surfaceVariant : (0, _color.default)(theme.colors.surface).lighten(1.4).hex();
|
|
224
219
|
}
|
|
225
220
|
|
|
226
221
|
if (highlighted) {
|
|
227
222
|
if (theme.isV3) {
|
|
228
|
-
return
|
|
223
|
+
return theme.colors.secondaryContainer;
|
|
229
224
|
}
|
|
230
225
|
|
|
231
226
|
return (0, _color.default)(theme.colors.primary).lighten(1).hex();
|
|
232
227
|
}
|
|
233
228
|
|
|
234
229
|
if (theme.isV3) {
|
|
235
|
-
return
|
|
230
|
+
return theme.colors.surfaceVariant;
|
|
236
231
|
}
|
|
237
232
|
|
|
238
233
|
return (0, _color.default)(theme.colors.surface).darken(0.1).hex();
|
|
239
234
|
}, [highlighted, theme]);
|
|
240
235
|
const color = React.useMemo(() => {
|
|
241
|
-
if (highlighted && !theme.dark) {
|
|
242
|
-
return theme.colors.primary;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
236
|
if (theme.isV3) {
|
|
246
237
|
if (!highlighted) {
|
|
247
|
-
return theme.colors.onBackground;
|
|
238
|
+
return theme.isV3 ? theme.colors.onSurface : theme.colors.onBackground;
|
|
248
239
|
}
|
|
249
240
|
|
|
250
|
-
return theme.colors.
|
|
241
|
+
return theme.isV3 ? theme.colors.onPrimaryContainer : theme.colors.onBackground;
|
|
251
242
|
} else {
|
|
243
|
+
if (highlighted && !theme.dark) {
|
|
244
|
+
return theme.colors.primary;
|
|
245
|
+
}
|
|
246
|
+
|
|
252
247
|
return theme.colors.text;
|
|
253
248
|
}
|
|
254
249
|
}, [highlighted, theme]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["circleSize","hourTypes","am","pm","getHourType","hours","undefined","inputTypes","keyboard","picker","reverseInputTypes","inputTypeIcons","getTimeInputTypeIcon","inputType","inputIconMap","clockTypes","minutes","outerHeight","_30","Math","PI","_12","_360","_90","snap","angle","step","a","diff","getHourTypeFromOffset","left","top","size","w","x","y","distance","sqrt","maxPm","getMinutes","handAngle","minute","parseInt","toFixed","getHours","hourType","hour","getAngle","atan","useSwitchColors","highlighted","theme","useTheme","backgroundColor","React","useMemo","dark","Color","colors","primary","hex","isV3","surface","lighten","backdrop","primaryContainer","color","background","onSurfaceVariant","placeholder","useInputColors","outline","darken","onBackground","text","toHourInputFormat","is24Hour","toHourOutputFormat","newHours","previousHours"],"sources":["timeUtils.ts"],"sourcesContent":["import * as React from 'react'\nimport Color from 'color'\nimport { MD2Theme, useTheme } from 'react-native-paper'\n\n// 250? when bigger?\nexport const circleSize = 215\n\nexport type PossibleHourTypes = 'am' | 'pm'\nexport type HourTypeMap = {\n [hourType in PossibleHourTypes]: PossibleHourTypes\n}\nexport const hourTypes: HourTypeMap = {\n am: 'am',\n pm: 'pm',\n}\n\nexport function getHourType(hours: number): PossibleHourTypes | undefined {\n if (hours >= 0 && hours <= 12) {\n return hourTypes.am\n }\n if (hours > 12 && hours <= 24) {\n return hourTypes.pm\n }\n return undefined\n}\n\nexport type PossibleInputTypes = 'keyboard' | 'picker'\nexport type InputTypeMap = {\n [inputType in PossibleInputTypes]: PossibleInputTypes\n}\nexport const inputTypes: InputTypeMap = {\n keyboard: 'keyboard',\n picker: 'picker',\n}\n\nexport const reverseInputTypes: InputTypeMap = {\n keyboard: 'picker',\n picker: 'keyboard',\n}\ntype InputIconMap = {\n [inputType in PossibleInputTypes]: string\n}\nexport const inputTypeIcons: InputIconMap = {\n keyboard: 'keyboard-outline',\n picker: 'clock-outline',\n}\n\nexport const getTimeInputTypeIcon = (\n inputType: PossibleInputTypes,\n inputIconMap?: InputIconMap\n) => {\n return (\n inputIconMap?.[reverseInputTypes[inputType]] ||\n inputTypeIcons?.[reverseInputTypes[inputType]]\n )\n}\n\nexport type PossibleClockTypes = 'hours' | 'minutes'\nexport type ClockTypeMap = {\n [clockType in PossibleClockTypes]: PossibleClockTypes\n}\nexport const clockTypes: ClockTypeMap = {\n minutes: 'minutes',\n hours: 'hours',\n}\n\n// Code inspiration and copied from: https://github.com/ShaneGH/analogue-time-picker/blob/master/src/utils/angle.ts\n\nconst outerHeight = 34\nconst _30 = Math.PI / 6\nconst _12 = Math.PI / 30\nconst _360 = Math.PI * 2\nconst _90 = Math.PI / 2\n\n/** Snap an angle to a given step. E.g. if angle = 22° and step = 10°, round down to 20° */\nexport function snap(angle: number, step: number) {\n let a = angle\n while (a < 0) a += _360\n let diff = a % step\n\n if (diff <= step / 2) {\n return angle - diff\n }\n\n return angle - diff + step\n}\n\n// detect am / pm based on offset\nexport function getHourTypeFromOffset(\n left: number,\n top: number,\n size: number\n): PossibleHourTypes {\n const w = size / 2\n const x = w - left\n const y = size / 2 - top\n\n const distance = Math.sqrt(x * x + y * y)\n const maxPm = w - outerHeight\n\n return distance > maxPm ? hourTypes.am : hourTypes.pm\n}\n\n// Calculate the minute from the hand angle\nexport function getMinutes(handAngle: number) {\n handAngle = snap(handAngle, _12)\n\n let minute = parseInt((((handAngle - _90) % _360) / _12).toFixed(), 10)\n while (minute < 0) minute += 60\n while (minute >= 60) minute -= 60\n\n return minute\n}\n\n// Calculate the hour from the hand angle\nexport function getHours(\n handAngle: number,\n hourType: PossibleHourTypes | undefined\n) {\n handAngle = snap(handAngle, _30)\n\n let hour = parseInt((((handAngle - _90) % _360) / _30).toFixed(), 10)\n if (hour < 0) hour += 12\n if (hour >= 12) hour -= 12\n\n if (hourType === hourTypes.am) {\n if (hour <= 0) {\n hour += 12\n } else if (hour >= 12) {\n hour -= 12\n }\n }\n if (hourType === hourTypes.pm) {\n if (hour <= 0) {\n hour += 12\n } else if (hour > 12) {\n hour -= 12\n }\n }\n\n return hour\n}\n\n/** Get the angle of the left/top co-ordinate from the center of the width.height box */\nexport function getAngle(left: number, top: number, size: number) {\n const x = size / 2 - left\n const y = size / 2 - top\n\n // tan O = y / x\n let angle = x ? Math.atan(y / x) : y < 0 ? -_90 : _90\n if (x < 0) {\n // reflect along vertical axis\n angle = -angle + 2 * (_90 + angle)\n }\n\n return angle\n}\n\nexport function useSwitchColors(highlighted: boolean) {\n const theme = useTheme()\n const backgroundColor = React.useMemo<string>(() => {\n if (theme.dark) {\n if (highlighted) {\n return Color(theme.colors.primary).hex()\n }\n if (theme.isV3) {\n return Color(theme.colors.surface).lighten(1.4).hex()\n }\n return theme.colors.backdrop\n }\n\n if (highlighted) {\n if (theme.isV3) {\n return theme.colors.primaryContainer\n }\n\n return Color(theme.colors.primary).lighten(1).hex()\n }\n return theme.colors.surface\n }, [highlighted, theme])\n\n const color = React.useMemo<string>(() => {\n if (highlighted && !theme.dark) {\n return theme.colors.primary\n }\n if (highlighted && theme.dark) {\n return theme.colors.background\n }\n if (theme.isV3) {\n return theme.colors.onSurfaceVariant\n } else {\n return (theme as any as MD2Theme).colors.placeholder\n }\n }, [highlighted, theme])\n\n return { backgroundColor, color }\n}\n\nexport function useInputColors(highlighted: boolean) {\n const theme = useTheme()\n const backgroundColor = React.useMemo<string>(() => {\n if (theme.dark) {\n if (highlighted) {\n return Color(theme.colors.primary).hex()\n }\n return Color(theme.colors.surface).lighten(1.4).hex()\n }\n\n if (highlighted) {\n if (theme.isV3) {\n return Color(theme.colors.primaryContainer).hex()\n }\n return Color(theme.colors.primary).lighten(1).hex()\n }\n if (theme.isV3) {\n return Color(theme.colors.outline).lighten(0.9).hex()\n }\n return Color(theme.colors.surface).darken(0.1).hex()\n }, [highlighted, theme])\n\n const color = React.useMemo<string>(() => {\n if (highlighted && !theme.dark) {\n return theme.colors.primary\n }\n if (theme.isV3) {\n if (!highlighted) {\n return theme.colors.onBackground\n }\n return theme.colors.background\n } else {\n return (theme as any as MD2Theme).colors.text\n }\n }, [highlighted, theme])\n\n return { backgroundColor, color }\n}\n\nexport function toHourInputFormat(hours: number, is24Hour: boolean): number {\n if (hours === 24) {\n return 0\n }\n if (is24Hour) {\n return hours\n }\n if (hours > 12) {\n return hours - 12\n }\n return hours\n}\n\nexport function toHourOutputFormat(\n newHours: number,\n previousHours: number,\n is24Hour: boolean\n): number {\n if (is24Hour) {\n return newHours\n }\n if (previousHours > 12 && newHours < 12) {\n return newHours + 12\n }\n return newHours\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;AAEA;AACO,MAAMA,UAAU,GAAG,GAAnB;;AAMA,MAAMC,SAAsB,GAAG;EACpCC,EAAE,EAAE,IADgC;EAEpCC,EAAE,EAAE;AAFgC,CAA/B;;;AAKA,SAASC,WAAT,CAAqBC,KAArB,EAAmE;EACxE,IAAIA,KAAK,IAAI,CAAT,IAAcA,KAAK,IAAI,EAA3B,EAA+B;IAC7B,OAAOJ,SAAS,CAACC,EAAjB;EACD;;EACD,IAAIG,KAAK,GAAG,EAAR,IAAcA,KAAK,IAAI,EAA3B,EAA+B;IAC7B,OAAOJ,SAAS,CAACE,EAAjB;EACD;;EACD,OAAOG,SAAP;AACD;;AAMM,MAAMC,UAAwB,GAAG;EACtCC,QAAQ,EAAE,UAD4B;EAEtCC,MAAM,EAAE;AAF8B,CAAjC;;AAKA,MAAMC,iBAA+B,GAAG;EAC7CF,QAAQ,EAAE,QADmC;EAE7CC,MAAM,EAAE;AAFqC,CAAxC;;AAOA,MAAME,cAA4B,GAAG;EAC1CH,QAAQ,EAAE,kBADgC;EAE1CC,MAAM,EAAE;AAFkC,CAArC;;;AAKA,MAAMG,oBAAoB,GAAG,CAClCC,SADkC,EAElCC,YAFkC,KAG/B;EACH,OACE,CAAAA,YAAY,SAAZ,IAAAA,YAAY,WAAZ,YAAAA,YAAY,CAAGJ,iBAAiB,CAACG,SAAD,CAApB,CAAZ,MACAF,cADA,aACAA,cADA,uBACAA,cAAc,CAAGD,iBAAiB,CAACG,SAAD,CAApB,CADd,CADF;AAID,CARM;;;AAcA,MAAME,UAAwB,GAAG;EACtCC,OAAO,EAAE,SAD6B;EAEtCX,KAAK,EAAE;AAF+B,CAAjC,C,CAKP;;;AAEA,MAAMY,WAAW,GAAG,EAApB;;AACA,MAAMC,GAAG,GAAGC,IAAI,CAACC,EAAL,GAAU,CAAtB;;AACA,MAAMC,GAAG,GAAGF,IAAI,CAACC,EAAL,GAAU,EAAtB;;AACA,MAAME,IAAI,GAAGH,IAAI,CAACC,EAAL,GAAU,CAAvB;;AACA,MAAMG,GAAG,GAAGJ,IAAI,CAACC,EAAL,GAAU,CAAtB;AAEA;;;AACO,SAASI,IAAT,CAAcC,KAAd,EAA6BC,IAA7B,EAA2C;EAChD,IAAIC,CAAC,GAAGF,KAAR;;EACA,OAAOE,CAAC,GAAG,CAAX,EAAcA,CAAC,IAAIL,IAAL;;EACd,IAAIM,IAAI,GAAGD,CAAC,GAAGD,IAAf;;EAEA,IAAIE,IAAI,IAAIF,IAAI,GAAG,CAAnB,EAAsB;IACpB,OAAOD,KAAK,GAAGG,IAAf;EACD;;EAED,OAAOH,KAAK,GAAGG,IAAR,GAAeF,IAAtB;AACD,C,CAED;;;AACO,SAASG,qBAAT,CACLC,IADK,EAELC,GAFK,EAGLC,IAHK,EAIc;EACnB,MAAMC,CAAC,GAAGD,IAAI,GAAG,CAAjB;EACA,MAAME,CAAC,GAAGD,CAAC,GAAGH,IAAd;EACA,MAAMK,CAAC,GAAGH,IAAI,GAAG,CAAP,GAAWD,GAArB;EAEA,MAAMK,QAAQ,GAAGjB,IAAI,CAACkB,IAAL,CAAUH,CAAC,GAAGA,CAAJ,GAAQC,CAAC,GAAGA,CAAtB,CAAjB;EACA,MAAMG,KAAK,GAAGL,CAAC,GAAGhB,WAAlB;EAEA,OAAOmB,QAAQ,GAAGE,KAAX,GAAmBrC,SAAS,CAACC,EAA7B,GAAkCD,SAAS,CAACE,EAAnD;AACD,C,CAED;;;AACO,SAASoC,UAAT,CAAoBC,SAApB,EAAuC;EAC5CA,SAAS,GAAGhB,IAAI,CAACgB,SAAD,EAAYnB,GAAZ,CAAhB;EAEA,IAAIoB,MAAM,GAAGC,QAAQ,CAAC,CAAE,CAACF,SAAS,GAAGjB,GAAb,IAAoBD,IAArB,GAA6BD,GAA9B,EAAmCsB,OAAnC,EAAD,EAA+C,EAA/C,CAArB;;EACA,OAAOF,MAAM,GAAG,CAAhB,EAAmBA,MAAM,IAAI,EAAV;;EACnB,OAAOA,MAAM,IAAI,EAAjB,EAAqBA,MAAM,IAAI,EAAV;;EAErB,OAAOA,MAAP;AACD,C,CAED;;;AACO,SAASG,QAAT,CACLJ,SADK,EAELK,QAFK,EAGL;EACAL,SAAS,GAAGhB,IAAI,CAACgB,SAAD,EAAYtB,GAAZ,CAAhB;EAEA,IAAI4B,IAAI,GAAGJ,QAAQ,CAAC,CAAE,CAACF,SAAS,GAAGjB,GAAb,IAAoBD,IAArB,GAA6BJ,GAA9B,EAAmCyB,OAAnC,EAAD,EAA+C,EAA/C,CAAnB;EACA,IAAIG,IAAI,GAAG,CAAX,EAAcA,IAAI,IAAI,EAAR;EACd,IAAIA,IAAI,IAAI,EAAZ,EAAgBA,IAAI,IAAI,EAAR;;EAEhB,IAAID,QAAQ,KAAK5C,SAAS,CAACC,EAA3B,EAA+B;IAC7B,IAAI4C,IAAI,IAAI,CAAZ,EAAe;MACbA,IAAI,IAAI,EAAR;IACD,CAFD,MAEO,IAAIA,IAAI,IAAI,EAAZ,EAAgB;MACrBA,IAAI,IAAI,EAAR;IACD;EACF;;EACD,IAAID,QAAQ,KAAK5C,SAAS,CAACE,EAA3B,EAA+B;IAC7B,IAAI2C,IAAI,IAAI,CAAZ,EAAe;MACbA,IAAI,IAAI,EAAR;IACD,CAFD,MAEO,IAAIA,IAAI,GAAG,EAAX,EAAe;MACpBA,IAAI,IAAI,EAAR;IACD;EACF;;EAED,OAAOA,IAAP;AACD;AAED;;;AACO,SAASC,QAAT,CAAkBjB,IAAlB,EAAgCC,GAAhC,EAA6CC,IAA7C,EAA2D;EAChE,MAAME,CAAC,GAAGF,IAAI,GAAG,CAAP,GAAWF,IAArB;EACA,MAAMK,CAAC,GAAGH,IAAI,GAAG,CAAP,GAAWD,GAArB,CAFgE,CAIhE;;EACA,IAAIN,KAAK,GAAGS,CAAC,GAAGf,IAAI,CAAC6B,IAAL,CAAUb,CAAC,GAAGD,CAAd,CAAH,GAAsBC,CAAC,GAAG,CAAJ,GAAQ,CAACZ,GAAT,GAAeA,GAAlD;;EACA,IAAIW,CAAC,GAAG,CAAR,EAAW;IACT;IACAT,KAAK,GAAG,CAACA,KAAD,GAAS,KAAKF,GAAG,GAAGE,KAAX,CAAjB;EACD;;EAED,OAAOA,KAAP;AACD;;AAEM,SAASwB,eAAT,CAAyBC,WAAzB,EAA+C;EACpD,MAAMC,KAAK,GAAG,IAAAC,0BAAA,GAAd;EACA,MAAMC,eAAe,GAAGC,KAAK,CAACC,OAAN,CAAsB,MAAM;IAClD,IAAIJ,KAAK,CAACK,IAAV,EAAgB;MACd,IAAIN,WAAJ,EAAiB;QACf,OAAO,IAAAO,cAAA,EAAMN,KAAK,CAACO,MAAN,CAAaC,OAAnB,EAA4BC,GAA5B,EAAP;MACD;;MACD,IAAIT,KAAK,CAACU,IAAV,EAAgB;QACd,OAAO,IAAAJ,cAAA,EAAMN,KAAK,CAACO,MAAN,CAAaI,OAAnB,EAA4BC,OAA5B,CAAoC,GAApC,EAAyCH,GAAzC,EAAP;MACD;;MACD,OAAOT,KAAK,CAACO,MAAN,CAAaM,QAApB;IACD;;IAED,IAAId,WAAJ,EAAiB;MACf,IAAIC,KAAK,CAACU,IAAV,EAAgB;QACd,OAAOV,KAAK,CAACO,MAAN,CAAaO,gBAApB;MACD;;MAED,OAAO,IAAAR,cAAA,EAAMN,KAAK,CAACO,MAAN,CAAaC,OAAnB,EAA4BI,OAA5B,CAAoC,CAApC,EAAuCH,GAAvC,EAAP;IACD;;IACD,OAAOT,KAAK,CAACO,MAAN,CAAaI,OAApB;EACD,CAnBuB,EAmBrB,CAACZ,WAAD,EAAcC,KAAd,CAnBqB,CAAxB;EAqBA,MAAMe,KAAK,GAAGZ,KAAK,CAACC,OAAN,CAAsB,MAAM;IACxC,IAAIL,WAAW,IAAI,CAACC,KAAK,CAACK,IAA1B,EAAgC;MAC9B,OAAOL,KAAK,CAACO,MAAN,CAAaC,OAApB;IACD;;IACD,IAAIT,WAAW,IAAIC,KAAK,CAACK,IAAzB,EAA+B;MAC7B,OAAOL,KAAK,CAACO,MAAN,CAAaS,UAApB;IACD;;IACD,IAAIhB,KAAK,CAACU,IAAV,EAAgB;MACd,OAAOV,KAAK,CAACO,MAAN,CAAaU,gBAApB;IACD,CAFD,MAEO;MACL,OAAQjB,KAAD,CAA2BO,MAA3B,CAAkCW,WAAzC;IACD;EACF,CAZa,EAYX,CAACnB,WAAD,EAAcC,KAAd,CAZW,CAAd;EAcA,OAAO;IAAEE,eAAF;IAAmBa;EAAnB,CAAP;AACD;;AAEM,SAASI,cAAT,CAAwBpB,WAAxB,EAA8C;EACnD,MAAMC,KAAK,GAAG,IAAAC,0BAAA,GAAd;EACA,MAAMC,eAAe,GAAGC,KAAK,CAACC,OAAN,CAAsB,MAAM;IAClD,IAAIJ,KAAK,CAACK,IAAV,EAAgB;MACd,IAAIN,WAAJ,EAAiB;QACf,OAAO,IAAAO,cAAA,EAAMN,KAAK,CAACO,MAAN,CAAaC,OAAnB,EAA4BC,GAA5B,EAAP;MACD;;MACD,OAAO,IAAAH,cAAA,EAAMN,KAAK,CAACO,MAAN,CAAaI,OAAnB,EAA4BC,OAA5B,CAAoC,GAApC,EAAyCH,GAAzC,EAAP;IACD;;IAED,IAAIV,WAAJ,EAAiB;MACf,IAAIC,KAAK,CAACU,IAAV,EAAgB;QACd,OAAO,IAAAJ,cAAA,EAAMN,KAAK,CAACO,MAAN,CAAaO,gBAAnB,EAAqCL,GAArC,EAAP;MACD;;MACD,OAAO,IAAAH,cAAA,EAAMN,KAAK,CAACO,MAAN,CAAaC,OAAnB,EAA4BI,OAA5B,CAAoC,CAApC,EAAuCH,GAAvC,EAAP;IACD;;IACD,IAAIT,KAAK,CAACU,IAAV,EAAgB;MACd,OAAO,IAAAJ,cAAA,EAAMN,KAAK,CAACO,MAAN,CAAaa,OAAnB,EAA4BR,OAA5B,CAAoC,GAApC,EAAyCH,GAAzC,EAAP;IACD;;IACD,OAAO,IAAAH,cAAA,EAAMN,KAAK,CAACO,MAAN,CAAaI,OAAnB,EAA4BU,MAA5B,CAAmC,GAAnC,EAAwCZ,GAAxC,EAAP;EACD,CAlBuB,EAkBrB,CAACV,WAAD,EAAcC,KAAd,CAlBqB,CAAxB;EAoBA,MAAMe,KAAK,GAAGZ,KAAK,CAACC,OAAN,CAAsB,MAAM;IACxC,IAAIL,WAAW,IAAI,CAACC,KAAK,CAACK,IAA1B,EAAgC;MAC9B,OAAOL,KAAK,CAACO,MAAN,CAAaC,OAApB;IACD;;IACD,IAAIR,KAAK,CAACU,IAAV,EAAgB;MACd,IAAI,CAACX,WAAL,EAAkB;QAChB,OAAOC,KAAK,CAACO,MAAN,CAAae,YAApB;MACD;;MACD,OAAOtB,KAAK,CAACO,MAAN,CAAaS,UAApB;IACD,CALD,MAKO;MACL,OAAQhB,KAAD,CAA2BO,MAA3B,CAAkCgB,IAAzC;IACD;EACF,CAZa,EAYX,CAACxB,WAAD,EAAcC,KAAd,CAZW,CAAd;EAcA,OAAO;IAAEE,eAAF;IAAmBa;EAAnB,CAAP;AACD;;AAEM,SAASS,iBAAT,CAA2BtE,KAA3B,EAA0CuE,QAA1C,EAAqE;EAC1E,IAAIvE,KAAK,KAAK,EAAd,EAAkB;IAChB,OAAO,CAAP;EACD;;EACD,IAAIuE,QAAJ,EAAc;IACZ,OAAOvE,KAAP;EACD;;EACD,IAAIA,KAAK,GAAG,EAAZ,EAAgB;IACd,OAAOA,KAAK,GAAG,EAAf;EACD;;EACD,OAAOA,KAAP;AACD;;AAEM,SAASwE,kBAAT,CACLC,QADK,EAELC,aAFK,EAGLH,QAHK,EAIG;EACR,IAAIA,QAAJ,EAAc;IACZ,OAAOE,QAAP;EACD;;EACD,IAAIC,aAAa,GAAG,EAAhB,IAAsBD,QAAQ,GAAG,EAArC,EAAyC;IACvC,OAAOA,QAAQ,GAAG,EAAlB;EACD;;EACD,OAAOA,QAAP;AACD"}
|
|
1
|
+
{"version":3,"names":["circleSize","hourTypes","am","pm","getHourType","hours","undefined","inputTypes","keyboard","picker","reverseInputTypes","inputTypeIcons","getTimeInputTypeIcon","inputType","inputIconMap","clockTypes","minutes","outerHeight","_30","Math","PI","_12","_360","_90","snap","angle","step","a","diff","getHourTypeFromOffset","left","top","size","w","x","y","distance","sqrt","maxPm","getMinutes","handAngle","minute","parseInt","toFixed","getHours","hourType","hour","getAngle","atan","useSwitchColors","highlighted","theme","useTheme","backgroundColor","React","useMemo","dark","isV3","colors","tertiaryContainer","Color","primary","hex","backdrop","primaryContainer","lighten","surface","color","onSurfaceVariant","onTertiaryContainer","background","placeholder","useInputColors","surfaceVariant","secondaryContainer","darken","onSurface","onBackground","onPrimaryContainer","text","toHourInputFormat","is24Hour","toHourOutputFormat","newHours","previousHours"],"sources":["timeUtils.ts"],"sourcesContent":["import * as React from 'react'\nimport Color from 'color'\nimport { MD2Theme, useTheme } from 'react-native-paper'\n\nexport const circleSize = 256\n\nexport type PossibleHourTypes = 'am' | 'pm'\nexport type HourTypeMap = {\n [hourType in PossibleHourTypes]: PossibleHourTypes\n}\nexport const hourTypes: HourTypeMap = {\n am: 'am',\n pm: 'pm',\n}\n\nexport function getHourType(hours: number): PossibleHourTypes | undefined {\n if (hours >= 0 && hours <= 12) {\n return hourTypes.am\n }\n if (hours > 12 && hours <= 24) {\n return hourTypes.pm\n }\n return undefined\n}\n\nexport type PossibleInputTypes = 'keyboard' | 'picker'\nexport type InputTypeMap = {\n [inputType in PossibleInputTypes]: PossibleInputTypes\n}\nexport const inputTypes: InputTypeMap = {\n keyboard: 'keyboard',\n picker: 'picker',\n}\n\nexport const reverseInputTypes: InputTypeMap = {\n keyboard: 'picker',\n picker: 'keyboard',\n}\ntype InputIconMap = {\n [inputType in PossibleInputTypes]: string\n}\nexport const inputTypeIcons: InputIconMap = {\n keyboard: 'keyboard-outline',\n picker: 'clock-outline',\n}\n\nexport const getTimeInputTypeIcon = (\n inputType: PossibleInputTypes,\n inputIconMap?: InputIconMap\n) => {\n return (\n inputIconMap?.[reverseInputTypes[inputType]] ||\n inputTypeIcons?.[reverseInputTypes[inputType]]\n )\n}\n\nexport type PossibleClockTypes = 'hours' | 'minutes'\nexport type ClockTypeMap = {\n [clockType in PossibleClockTypes]: PossibleClockTypes\n}\nexport const clockTypes: ClockTypeMap = {\n minutes: 'minutes',\n hours: 'hours',\n}\n\n// Code inspiration and copied from: https://github.com/ShaneGH/analogue-time-picker/blob/master/src/utils/angle.ts\n\nconst outerHeight = 34\nconst _30 = Math.PI / 6\nconst _12 = Math.PI / 30\nconst _360 = Math.PI * 2\nconst _90 = Math.PI / 2\n\n/** Snap an angle to a given step. E.g. if angle = 22° and step = 10°, round down to 20° */\nexport function snap(angle: number, step: number) {\n let a = angle\n while (a < 0) a += _360\n let diff = a % step\n\n if (diff <= step / 2) {\n return angle - diff\n }\n\n return angle - diff + step\n}\n\n// detect am / pm based on offset\nexport function getHourTypeFromOffset(\n left: number,\n top: number,\n size: number\n): PossibleHourTypes {\n const w = size / 2\n const x = w - left\n const y = size / 2 - top\n\n const distance = Math.sqrt(x * x + y * y)\n const maxPm = w - outerHeight\n\n return distance > maxPm ? hourTypes.am : hourTypes.pm\n}\n\n// Calculate the minute from the hand angle\nexport function getMinutes(handAngle: number) {\n handAngle = snap(handAngle, _12)\n\n let minute = parseInt((((handAngle - _90) % _360) / _12).toFixed(), 10)\n while (minute < 0) minute += 60\n while (minute >= 60) minute -= 60\n\n return minute\n}\n\n// Calculate the hour from the hand angle\nexport function getHours(\n handAngle: number,\n hourType: PossibleHourTypes | undefined\n) {\n handAngle = snap(handAngle, _30)\n\n let hour = parseInt((((handAngle - _90) % _360) / _30).toFixed(), 10)\n if (hour < 0) hour += 12\n if (hour >= 12) hour -= 12\n\n if (hourType === hourTypes.am) {\n if (hour <= 0) {\n hour += 12\n } else if (hour >= 12) {\n hour -= 12\n }\n }\n if (hourType === hourTypes.pm) {\n if (hour <= 0) {\n hour += 12\n } else if (hour > 12) {\n hour -= 12\n }\n }\n\n return hour\n}\n\n/** Get the angle of the left/top co-ordinate from the center of the width.height box */\nexport function getAngle(left: number, top: number, size: number) {\n const x = size / 2 - left\n const y = size / 2 - top\n\n // tan O = y / x\n let angle = x ? Math.atan(y / x) : y < 0 ? -_90 : _90\n if (x < 0) {\n // reflect along vertical axis\n angle = -angle + 2 * (_90 + angle)\n }\n\n return angle\n}\n\nexport function useSwitchColors(highlighted: boolean) {\n const theme = useTheme()\n const backgroundColor = React.useMemo<string>(() => {\n if (theme.dark) {\n if (highlighted) {\n return theme.isV3\n ? theme.colors.tertiaryContainer\n : Color(theme.colors.primary).hex()\n }\n return theme.colors.backdrop\n }\n\n if (highlighted) {\n if (theme.isV3) {\n return theme.colors.primaryContainer\n }\n\n return Color(theme.colors.primary).lighten(1).hex()\n }\n return theme.colors.surface\n }, [highlighted, theme])\n\n const color = React.useMemo<string>(() => {\n if (highlighted && !theme.dark) {\n return theme.isV3 ? theme.colors.onSurfaceVariant : theme.colors.primary\n }\n if (highlighted && theme.dark) {\n return theme.isV3\n ? theme.colors.onTertiaryContainer\n : theme.colors.background\n }\n if (theme.isV3) {\n return theme.colors.onSurfaceVariant\n } else {\n return (theme as any as MD2Theme).colors.placeholder\n }\n }, [highlighted, theme])\n\n return { backgroundColor, color }\n}\n\nexport function useInputColors(highlighted: boolean) {\n const theme = useTheme()\n const backgroundColor = React.useMemo<string>(() => {\n if (theme.dark) {\n if (highlighted) {\n return theme.isV3\n ? theme.colors.primaryContainer\n : Color(theme.colors.primary).hex()\n }\n return theme.isV3\n ? theme.colors.surfaceVariant\n : Color(theme.colors.surface).lighten(1.4).hex()\n }\n\n if (highlighted) {\n if (theme.isV3) {\n return theme.colors.secondaryContainer\n }\n return Color(theme.colors.primary).lighten(1).hex()\n }\n if (theme.isV3) {\n return theme.colors.surfaceVariant\n }\n return Color(theme.colors.surface).darken(0.1).hex()\n }, [highlighted, theme])\n\n const color = React.useMemo<string>(() => {\n if (theme.isV3) {\n if (!highlighted) {\n return theme.isV3 ? theme.colors.onSurface : theme.colors.onBackground\n }\n return theme.isV3\n ? theme.colors.onPrimaryContainer\n : theme.colors.onBackground\n } else {\n if (highlighted && !theme.dark) {\n return theme.colors.primary\n }\n return (theme as any as MD2Theme).colors.text\n }\n }, [highlighted, theme])\n\n return { backgroundColor, color }\n}\n\nexport function toHourInputFormat(hours: number, is24Hour: boolean): number {\n if (hours === 24) {\n return 0\n }\n if (is24Hour) {\n return hours\n }\n if (hours > 12) {\n return hours - 12\n }\n return hours\n}\n\nexport function toHourOutputFormat(\n newHours: number,\n previousHours: number,\n is24Hour: boolean\n): number {\n if (is24Hour) {\n return newHours\n }\n if (previousHours > 12 && newHours < 12) {\n return newHours + 12\n }\n return newHours\n}\n"],"mappings":"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"}
|
package/lib/commonjs/utils.js
CHANGED
|
@@ -49,6 +49,15 @@ function useHeaderTextColor() {
|
|
|
49
49
|
function useTextColorOnPrimary() {
|
|
50
50
|
const theme = (0, _reactNativePaper.useTheme)();
|
|
51
51
|
const isDark = !(0, _color.default)(theme.colors.primary).isLight();
|
|
52
|
+
|
|
53
|
+
if (theme.isV3) {
|
|
54
|
+
if (isDark && theme.dark) {
|
|
55
|
+
return theme.colors.onSurface;
|
|
56
|
+
} else {
|
|
57
|
+
return theme.colors.onPrimary;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
52
61
|
return isDark ? '#fff' : '#000';
|
|
53
62
|
}
|
|
54
63
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useLatest","value","ref","React","useRef","current","useHeaderBackgroundColor","theme","useTheme","dark","mode","overlay","colors","surface","primary","useHeaderColorIsLight","background","Color","isLight","useHeaderTextColor","useTextColorOnPrimary","isDark","range","start","end","Array","fill","map","_","i","lightenBy","color","ratio","lightness","darkenBy"],"sources":["utils.ts"],"sourcesContent":["import * as React from 'react'\nimport {\n DefaultTheme,\n MD3DarkTheme,\n overlay,\n useTheme,\n} from 'react-native-paper'\nimport Color from 'color'\n\nexport type PaperTheme = typeof MD3DarkTheme | typeof DefaultTheme\n\nexport function useLatest<T>(value: T) {\n const ref = React.useRef(value)\n ref.current = value\n return ref\n}\n\nexport function useHeaderBackgroundColor() {\n const theme = useTheme()\n return theme.dark && theme.mode === 'adaptive'\n ? overlay(4, theme.colors.surface)\n : theme.colors.primary\n}\n\nexport function useHeaderColorIsLight() {\n const theme = useTheme()\n const background =\n theme.dark && theme.mode === 'adaptive'\n ? theme.colors.surface\n : theme.colors.primary\n return Color(background).isLight()\n}\n\nexport function useHeaderTextColor() {\n const isLight = useHeaderColorIsLight()\n return !isLight ? '#fff' : '#000'\n}\n\nexport function useTextColorOnPrimary() {\n const theme = useTheme()\n const isDark = !Color(theme.colors.primary).isLight()\n return isDark ? '#fff' : '#000'\n}\n\nexport function range(start: number, end: number) {\n return Array(end - start + 1)\n .fill(null)\n .map((_, i) => start + i)\n}\n\nexport function lightenBy(color: Color, ratio: number) {\n const lightness = color.lightness()\n return color.lightness(lightness + (100 - lightness) * ratio)\n}\n\nexport function darkenBy(color: Color, ratio: number) {\n const lightness = color.lightness()\n return color.lightness(lightness - lightness * ratio)\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;;AACA;;AAMA;;;;;;;;AAIO,SAASA,SAAT,CAAsBC,KAAtB,EAAgC;EACrC,MAAMC,GAAG,GAAGC,KAAK,CAACC,MAAN,CAAaH,KAAb,CAAZ;EACAC,GAAG,CAACG,OAAJ,GAAcJ,KAAd;EACA,OAAOC,GAAP;AACD;;AAEM,SAASI,wBAAT,GAAoC;EACzC,MAAMC,KAAK,GAAG,IAAAC,0BAAA,GAAd;EACA,OAAOD,KAAK,CAACE,IAAN,IAAcF,KAAK,CAACG,IAAN,KAAe,UAA7B,GACH,IAAAC,yBAAA,EAAQ,CAAR,EAAWJ,KAAK,CAACK,MAAN,CAAaC,OAAxB,CADG,GAEHN,KAAK,CAACK,MAAN,CAAaE,OAFjB;AAGD;;AAEM,SAASC,qBAAT,GAAiC;EACtC,MAAMR,KAAK,GAAG,IAAAC,0BAAA,GAAd;EACA,MAAMQ,UAAU,GACdT,KAAK,CAACE,IAAN,IAAcF,KAAK,CAACG,IAAN,KAAe,UAA7B,GACIH,KAAK,CAACK,MAAN,CAAaC,OADjB,GAEIN,KAAK,CAACK,MAAN,CAAaE,OAHnB;EAIA,OAAO,IAAAG,cAAA,EAAMD,UAAN,EAAkBE,OAAlB,EAAP;AACD;;AAEM,SAASC,kBAAT,GAA8B;EACnC,MAAMD,OAAO,GAAGH,qBAAqB,EAArC;EACA,OAAO,CAACG,OAAD,GAAW,MAAX,GAAoB,MAA3B;AACD;;AAEM,SAASE,qBAAT,GAAiC;EACtC,MAAMb,KAAK,GAAG,IAAAC,0BAAA,GAAd;EACA,MAAMa,MAAM,GAAG,CAAC,IAAAJ,cAAA,EAAMV,KAAK,CAACK,MAAN,CAAaE,OAAnB,EAA4BI,OAA5B,EAAhB;
|
|
1
|
+
{"version":3,"names":["useLatest","value","ref","React","useRef","current","useHeaderBackgroundColor","theme","useTheme","dark","mode","overlay","colors","surface","primary","useHeaderColorIsLight","background","Color","isLight","useHeaderTextColor","useTextColorOnPrimary","isDark","isV3","onSurface","onPrimary","range","start","end","Array","fill","map","_","i","lightenBy","color","ratio","lightness","darkenBy"],"sources":["utils.ts"],"sourcesContent":["import * as React from 'react'\nimport {\n DefaultTheme,\n MD3DarkTheme,\n overlay,\n useTheme,\n} from 'react-native-paper'\nimport Color from 'color'\n\nexport type PaperTheme = typeof MD3DarkTheme | typeof DefaultTheme\n\nexport function useLatest<T>(value: T) {\n const ref = React.useRef(value)\n ref.current = value\n return ref\n}\n\nexport function useHeaderBackgroundColor() {\n const theme = useTheme()\n return theme.dark && theme.mode === 'adaptive'\n ? overlay(4, theme.colors.surface)\n : theme.colors.primary\n}\n\nexport function useHeaderColorIsLight() {\n const theme = useTheme()\n const background =\n theme.dark && theme.mode === 'adaptive'\n ? theme.colors.surface\n : theme.colors.primary\n return Color(background).isLight()\n}\n\nexport function useHeaderTextColor() {\n const isLight = useHeaderColorIsLight()\n return !isLight ? '#fff' : '#000'\n}\n\nexport function useTextColorOnPrimary() {\n const theme = useTheme()\n const isDark = !Color(theme.colors.primary).isLight()\n\n if (theme.isV3) {\n if (isDark && theme.dark) {\n return theme.colors.onSurface\n } else {\n return theme.colors.onPrimary\n }\n }\n\n return isDark ? '#fff' : '#000'\n}\n\nexport function range(start: number, end: number) {\n return Array(end - start + 1)\n .fill(null)\n .map((_, i) => start + i)\n}\n\nexport function lightenBy(color: Color, ratio: number) {\n const lightness = color.lightness()\n return color.lightness(lightness + (100 - lightness) * ratio)\n}\n\nexport function darkenBy(color: Color, ratio: number) {\n const lightness = color.lightness()\n return color.lightness(lightness - lightness * ratio)\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;;AACA;;AAMA;;;;;;;;AAIO,SAASA,SAAT,CAAsBC,KAAtB,EAAgC;EACrC,MAAMC,GAAG,GAAGC,KAAK,CAACC,MAAN,CAAaH,KAAb,CAAZ;EACAC,GAAG,CAACG,OAAJ,GAAcJ,KAAd;EACA,OAAOC,GAAP;AACD;;AAEM,SAASI,wBAAT,GAAoC;EACzC,MAAMC,KAAK,GAAG,IAAAC,0BAAA,GAAd;EACA,OAAOD,KAAK,CAACE,IAAN,IAAcF,KAAK,CAACG,IAAN,KAAe,UAA7B,GACH,IAAAC,yBAAA,EAAQ,CAAR,EAAWJ,KAAK,CAACK,MAAN,CAAaC,OAAxB,CADG,GAEHN,KAAK,CAACK,MAAN,CAAaE,OAFjB;AAGD;;AAEM,SAASC,qBAAT,GAAiC;EACtC,MAAMR,KAAK,GAAG,IAAAC,0BAAA,GAAd;EACA,MAAMQ,UAAU,GACdT,KAAK,CAACE,IAAN,IAAcF,KAAK,CAACG,IAAN,KAAe,UAA7B,GACIH,KAAK,CAACK,MAAN,CAAaC,OADjB,GAEIN,KAAK,CAACK,MAAN,CAAaE,OAHnB;EAIA,OAAO,IAAAG,cAAA,EAAMD,UAAN,EAAkBE,OAAlB,EAAP;AACD;;AAEM,SAASC,kBAAT,GAA8B;EACnC,MAAMD,OAAO,GAAGH,qBAAqB,EAArC;EACA,OAAO,CAACG,OAAD,GAAW,MAAX,GAAoB,MAA3B;AACD;;AAEM,SAASE,qBAAT,GAAiC;EACtC,MAAMb,KAAK,GAAG,IAAAC,0BAAA,GAAd;EACA,MAAMa,MAAM,GAAG,CAAC,IAAAJ,cAAA,EAAMV,KAAK,CAACK,MAAN,CAAaE,OAAnB,EAA4BI,OAA5B,EAAhB;;EAEA,IAAIX,KAAK,CAACe,IAAV,EAAgB;IACd,IAAID,MAAM,IAAId,KAAK,CAACE,IAApB,EAA0B;MACxB,OAAOF,KAAK,CAACK,MAAN,CAAaW,SAApB;IACD,CAFD,MAEO;MACL,OAAOhB,KAAK,CAACK,MAAN,CAAaY,SAApB;IACD;EACF;;EAED,OAAOH,MAAM,GAAG,MAAH,GAAY,MAAzB;AACD;;AAEM,SAASI,KAAT,CAAeC,KAAf,EAA8BC,GAA9B,EAA2C;EAChD,OAAOC,KAAK,CAACD,GAAG,GAAGD,KAAN,GAAc,CAAf,CAAL,CACJG,IADI,CACC,IADD,EAEJC,GAFI,CAEA,CAACC,CAAD,EAAIC,CAAJ,KAAUN,KAAK,GAAGM,CAFlB,CAAP;AAGD;;AAEM,SAASC,SAAT,CAAmBC,KAAnB,EAAiCC,KAAjC,EAAgD;EACrD,MAAMC,SAAS,GAAGF,KAAK,CAACE,SAAN,EAAlB;EACA,OAAOF,KAAK,CAACE,SAAN,CAAgBA,SAAS,GAAG,CAAC,MAAMA,SAAP,IAAoBD,KAAhD,CAAP;AACD;;AAEM,SAASE,QAAT,CAAkBH,KAAlB,EAAgCC,KAAhC,EAA+C;EACpD,MAAMC,SAAS,GAAGF,KAAK,CAACE,SAAN,EAAlB;EACA,OAAOF,KAAK,CAACE,SAAN,CAAgBA,SAAS,GAAGA,SAAS,GAAGD,KAAxC,CAAP;AACD"}
|
|
@@ -3,12 +3,13 @@ import { View, StyleSheet } from 'react-native';
|
|
|
3
3
|
import { Text, TouchableRipple, useTheme } from 'react-native-paper';
|
|
4
4
|
import { useMemo } from 'react';
|
|
5
5
|
import Color from 'color';
|
|
6
|
-
import { useSwitchColors } from './timeUtils';
|
|
6
|
+
import { inputTypes, useSwitchColors } from './timeUtils';
|
|
7
7
|
import { DisplayModeContext } from './TimePicker';
|
|
8
8
|
export default function AmPmSwitcher(_ref) {
|
|
9
9
|
let {
|
|
10
10
|
onChange,
|
|
11
|
-
hours
|
|
11
|
+
hours,
|
|
12
|
+
inputType
|
|
12
13
|
} = _ref;
|
|
13
14
|
const {
|
|
14
15
|
setMode,
|
|
@@ -16,17 +17,20 @@ export default function AmPmSwitcher(_ref) {
|
|
|
16
17
|
} = React.useContext(DisplayModeContext);
|
|
17
18
|
const theme = useTheme();
|
|
18
19
|
const backgroundColor = useMemo(() => {
|
|
19
|
-
if (theme.
|
|
20
|
-
return
|
|
20
|
+
if (theme.isV3) {
|
|
21
|
+
return theme.colors.outline;
|
|
21
22
|
}
|
|
22
23
|
|
|
23
|
-
return Color(theme.
|
|
24
|
+
return Color(theme.dark ? Color(theme.colors.surface).lighten(1.2).hex() : theme.colors.surface).darken(0.1).hex();
|
|
24
25
|
}, [theme]);
|
|
25
26
|
const isAM = mode === 'AM';
|
|
26
27
|
return /*#__PURE__*/React.createElement(View, {
|
|
27
|
-
style: [styles.root,
|
|
28
|
+
style: [styles.root, // eslint-disable-next-line react-native/no-inline-styles
|
|
29
|
+
{
|
|
28
30
|
borderColor: backgroundColor,
|
|
29
|
-
borderRadius: theme.roundness
|
|
31
|
+
borderRadius: theme.roundness * 2,
|
|
32
|
+
height: inputType === inputTypes.keyboard ? 72 : 80,
|
|
33
|
+
marginBottom: inputType === 'keyboard' ? 24 : 0
|
|
30
34
|
}]
|
|
31
35
|
}, /*#__PURE__*/React.createElement(SwitchButton, {
|
|
32
36
|
label: "AM",
|
|
@@ -69,7 +73,7 @@ function SwitchButton(_ref2) {
|
|
|
69
73
|
backgroundColor,
|
|
70
74
|
color
|
|
71
75
|
} = useSwitchColors(selected);
|
|
72
|
-
let textFont = theme !== null && theme !== void 0 && theme.isV3 ? theme.fonts.
|
|
76
|
+
let textFont = theme !== null && theme !== void 0 && theme.isV3 ? theme.fonts.titleMedium : theme.fonts.medium;
|
|
73
77
|
return /*#__PURE__*/React.createElement(TouchableRipple, {
|
|
74
78
|
onPress: onPress,
|
|
75
79
|
style: styles.switchButton,
|
|
@@ -97,14 +101,13 @@ function SwitchButton(_ref2) {
|
|
|
97
101
|
|
|
98
102
|
const styles = StyleSheet.create({
|
|
99
103
|
root: {
|
|
100
|
-
width:
|
|
101
|
-
height: 80,
|
|
104
|
+
width: 52,
|
|
102
105
|
borderWidth: 1,
|
|
103
106
|
overflow: 'hidden'
|
|
104
107
|
},
|
|
105
108
|
switchSeparator: {
|
|
106
109
|
height: 1,
|
|
107
|
-
width:
|
|
110
|
+
width: 52
|
|
108
111
|
},
|
|
109
112
|
switchButton: {
|
|
110
113
|
flex: 1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","StyleSheet","Text","TouchableRipple","useTheme","useMemo","Color","useSwitchColors","DisplayModeContext","AmPmSwitcher","onChange","hours","setMode","mode","useContext","theme","backgroundColor","
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","Text","TouchableRipple","useTheme","useMemo","Color","inputTypes","useSwitchColors","DisplayModeContext","AmPmSwitcher","onChange","hours","inputType","setMode","mode","useContext","theme","backgroundColor","isV3","colors","outline","dark","surface","lighten","hex","darken","isAM","styles","root","borderColor","borderRadius","roundness","height","keyboard","marginBottom","switchSeparator","SwitchButton","label","onPress","selected","disabled","color","textFont","fonts","titleMedium","medium","switchButton","switchButtonInner","create","width","borderWidth","overflow","flex","alignItems","justifyContent"],"sources":["AmPmSwitcher.tsx"],"sourcesContent":["import * as React from 'react'\nimport { View, StyleSheet } from 'react-native'\nimport { MD2Theme, Text, TouchableRipple, useTheme } from 'react-native-paper'\nimport { useMemo } from 'react'\nimport Color from 'color'\nimport { inputTypes, PossibleInputTypes, useSwitchColors } from './timeUtils'\nimport { DisplayModeContext } from './TimePicker'\n\nexport default function AmPmSwitcher({\n onChange,\n hours,\n inputType,\n}: {\n hours: number\n onChange: (newHours: number) => any\n inputType: PossibleInputTypes\n}) {\n const { setMode, mode } = React.useContext(DisplayModeContext)\n const theme = useTheme()\n const backgroundColor = useMemo<string>(() => {\n if (theme.isV3) {\n return theme.colors.outline\n }\n return Color(\n theme.dark\n ? Color(theme.colors.surface).lighten(1.2).hex()\n : theme.colors.surface\n )\n .darken(0.1)\n .hex()\n }, [theme])\n\n const isAM = mode === 'AM'\n return (\n <View\n style={[\n styles.root,\n // eslint-disable-next-line react-native/no-inline-styles\n {\n borderColor: backgroundColor,\n borderRadius: theme.roundness * 2,\n height: inputType === inputTypes.keyboard ? 72 : 80,\n marginBottom: inputType === 'keyboard' ? 24 : 0,\n },\n ]}\n >\n <SwitchButton\n label=\"AM\"\n onPress={() => {\n setMode('AM')\n if (hours - 12 >= 0) {\n onChange(hours - 12)\n }\n }}\n selected={isAM}\n disabled={isAM}\n />\n <View style={[styles.switchSeparator, { backgroundColor }]} />\n <SwitchButton\n label=\"PM\"\n onPress={() => {\n setMode('PM')\n if (hours + 12 <= 24) {\n onChange(hours + 12)\n }\n }}\n selected={!isAM}\n disabled={!isAM}\n />\n </View>\n )\n}\n\nfunction SwitchButton({\n label,\n onPress,\n selected,\n disabled,\n}: {\n label: string\n onPress: (() => any) | undefined\n selected: boolean\n disabled: boolean\n}) {\n const theme = useTheme()\n const { backgroundColor, color } = useSwitchColors(selected)\n\n let textFont = theme?.isV3\n ? theme.fonts.titleMedium\n : (theme as any as MD2Theme).fonts.medium\n\n return (\n <TouchableRipple\n onPress={onPress}\n style={styles.switchButton}\n accessibilityLabel={label}\n // @ts-ignore old React Native versions\n accessibilityTraits={disabled ? ['button', 'disabled'] : 'button'}\n // @ts-ignore old React Native versions\n accessibilityComponentType=\"button\"\n accessibilityRole=\"button\"\n accessibilityState={{ disabled }}\n disabled={disabled}\n >\n <View style={[styles.switchButtonInner, { backgroundColor }]}>\n <Text\n selectable={false}\n style={[\n {\n ...textFont,\n color: color,\n },\n ]}\n >\n {label}\n </Text>\n </View>\n </TouchableRipple>\n )\n}\n\nconst styles = StyleSheet.create({\n root: {\n width: 52,\n borderWidth: 1,\n overflow: 'hidden',\n },\n switchSeparator: {\n height: 1,\n width: 52,\n },\n switchButton: {\n flex: 1,\n },\n switchButtonInner: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n})\n"],"mappings":"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"}
|
|
@@ -96,7 +96,7 @@ function AnalogClock(_ref) {
|
|
|
96
96
|
ref: clockRef
|
|
97
97
|
}, panResponder.panHandlers, {
|
|
98
98
|
style: [styles.clock, {
|
|
99
|
-
backgroundColor: theme.
|
|
99
|
+
backgroundColor: theme.isV3 ? theme.colors.surfaceVariant : theme.dark ? Color(theme.colors.surface).lighten(1.4).hex() : Color(theme.colors.surface).darken(0.1).hex()
|
|
100
100
|
}] // @ts-ignore -> https://github.com/necolas/react-native-web/issues/506
|
|
101
101
|
,
|
|
102
102
|
cursor: 'pointer'
|
|
@@ -106,7 +106,7 @@ function AnalogClock(_ref) {
|
|
|
106
106
|
transform: [{
|
|
107
107
|
rotate: -90 + pointerNumber * degreesPerNumber + 'deg'
|
|
108
108
|
}, {
|
|
109
|
-
translateX: circleSize / 4 - 4 - dynamicSize / 2
|
|
109
|
+
translateX: circleSize / 4 - (focused === clockTypes.hours && pointerNumber >= 0 && pointerNumber < 13 ? 0 : 4) + (focused === clockTypes.minutes ? 4 : 0) - dynamicSize / 2
|
|
110
110
|
}],
|
|
111
111
|
width: circleSize / 2 - 4 - dynamicSize
|
|
112
112
|
}],
|
|
@@ -153,16 +153,15 @@ const styles = StyleSheet.create({
|
|
|
153
153
|
alignItems: 'center'
|
|
154
154
|
},
|
|
155
155
|
endPoint: {
|
|
156
|
-
borderRadius:
|
|
157
|
-
height:
|
|
158
|
-
width:
|
|
156
|
+
borderRadius: 24,
|
|
157
|
+
height: 48,
|
|
158
|
+
width: 48,
|
|
159
159
|
position: 'absolute',
|
|
160
160
|
right: 0,
|
|
161
|
-
bottom: -
|
|
161
|
+
bottom: -23
|
|
162
162
|
},
|
|
163
163
|
line: {
|
|
164
164
|
position: 'absolute',
|
|
165
|
-
marginBottom: -1,
|
|
166
165
|
height: 2,
|
|
167
166
|
borderRadius: 4
|
|
168
167
|
}
|