react-native-timer-picker 1.5.0 → 1.5.2

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.
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","DARK_MODE_BACKGROUND_COLOR","DARK_MODE_TEXT_COLOR","LIGHT_MODE_BACKGROUND_COLOR","LIGHT_MODE_TEXT_COLOR","generateStyles","customStyles","StyleSheet","create","container","justifyContent","alignItems","overflow","contentContainer","backgroundColor","theme","borderRadius","padding","buttonContainer","flexDirection","marginTop","button","marginHorizontal","paddingVertical","paddingHorizontal","borderWidth","fontSize","text","cancelButton","borderColor","color","undefined","confirmButton","modalTitle","fontWeight","marginBottom","exports"],"sources":["TimerPickerModal.styles.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { StyleSheet, Text, View } from \"react-native\";\n\nimport type { CustomTimerPickerStyles } from \"./TimerPicker/TimerPicker.styles\";\nimport { ComponentProps } from \"react\";\n\nexport interface CustomTimerPickerModalStyles extends CustomTimerPickerStyles {\n container?: ComponentProps<typeof View>;\n contentContainer?: ComponentProps<typeof View>;\n buttonContainer?: ComponentProps<typeof View>;\n button?: ComponentProps<typeof Text>;\n cancelButton?: ComponentProps<typeof Text>;\n confirmButton?: ComponentProps<typeof Text>;\n modalTitle?: ComponentProps<typeof Text>;\n}\n\nconst DARK_MODE_BACKGROUND_COLOR = \"#232323\";\nconst DARK_MODE_TEXT_COLOR = \"#E9E9E9\";\nconst LIGHT_MODE_BACKGROUND_COLOR = \"#F1F1F1\";\nconst LIGHT_MODE_TEXT_COLOR = \"#1B1B1B\";\n\nexport const generateStyles = (\n customStyles: CustomTimerPickerModalStyles | undefined\n) =>\n StyleSheet.create({\n container: {\n justifyContent: \"center\",\n alignItems: \"center\",\n overflow: \"hidden\",\n ...customStyles?.container,\n },\n contentContainer: {\n backgroundColor:\n customStyles?.backgroundColor ?? customStyles?.theme === \"dark\"\n ? DARK_MODE_BACKGROUND_COLOR\n : LIGHT_MODE_BACKGROUND_COLOR,\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: 20,\n padding: 20,\n ...customStyles?.contentContainer,\n },\n buttonContainer: {\n flexDirection: \"row\",\n marginTop: 25,\n ...customStyles?.buttonContainer,\n },\n button: {\n marginHorizontal: 12,\n paddingVertical: 10,\n paddingHorizontal: 20,\n borderWidth: 1,\n borderRadius: 10,\n fontSize: 16,\n overflow: \"hidden\",\n ...customStyles?.text,\n ...customStyles?.button,\n },\n cancelButton: {\n borderColor: \"gray\",\n color:\n customStyles?.theme === \"dark\" ? DARK_MODE_TEXT_COLOR : \"gray\",\n backgroundColor:\n customStyles?.theme === \"dark\" ? \"gray\" : undefined,\n ...customStyles?.text,\n ...customStyles?.cancelButton,\n },\n confirmButton: {\n borderColor: \"green\",\n color:\n customStyles?.theme === \"dark\" ? DARK_MODE_TEXT_COLOR : \"green\",\n backgroundColor:\n customStyles?.theme === \"dark\" ? \"green\" : undefined,\n ...customStyles?.text,\n ...customStyles?.confirmButton,\n },\n modalTitle: {\n fontSize: 24,\n fontWeight: \"bold\",\n marginBottom: 15,\n color:\n customStyles?.theme === \"dark\"\n ? DARK_MODE_TEXT_COLOR\n : LIGHT_MODE_TEXT_COLOR,\n ...customStyles?.text,\n ...customStyles?.modalTitle,\n },\n });\n"],"mappings":"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"}
1
+ {"version":3,"names":["_reactNative","require","DARK_MODE_BACKGROUND_COLOR","DARK_MODE_TEXT_COLOR","LIGHT_MODE_BACKGROUND_COLOR","LIGHT_MODE_TEXT_COLOR","generateStyles","customStyles","StyleSheet","create","container","justifyContent","alignItems","overflow","contentContainer","backgroundColor","theme","borderRadius","padding","buttonContainer","flexDirection","marginTop","button","marginHorizontal","paddingVertical","paddingHorizontal","borderWidth","fontSize","text","cancelButton","borderColor","color","undefined","confirmButton","modalTitle","fontWeight","marginBottom","exports"],"sources":["TimerPickerModal.styles.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { StyleSheet } from \"react-native\";\n\nimport type { CustomTimerPickerStyles } from \"./TimerPicker/TimerPicker.styles\";\n\nexport interface CustomTimerPickerModalStyles extends CustomTimerPickerStyles {\n container?: any;\n contentContainer?: any;\n buttonContainer?: any;\n button?: any;\n cancelButton?: any;\n confirmButton?: any;\n modalTitle?: any;\n}\n\nconst DARK_MODE_BACKGROUND_COLOR = \"#232323\";\nconst DARK_MODE_TEXT_COLOR = \"#E9E9E9\";\nconst LIGHT_MODE_BACKGROUND_COLOR = \"#F1F1F1\";\nconst LIGHT_MODE_TEXT_COLOR = \"#1B1B1B\";\n\nexport const generateStyles = (\n customStyles: CustomTimerPickerModalStyles | undefined\n) =>\n StyleSheet.create({\n container: {\n justifyContent: \"center\",\n alignItems: \"center\",\n overflow: \"hidden\",\n ...customStyles?.container,\n },\n contentContainer: {\n backgroundColor:\n customStyles?.backgroundColor ?? customStyles?.theme === \"dark\"\n ? DARK_MODE_BACKGROUND_COLOR\n : LIGHT_MODE_BACKGROUND_COLOR,\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: 20,\n padding: 20,\n ...customStyles?.contentContainer,\n },\n buttonContainer: {\n flexDirection: \"row\",\n marginTop: 25,\n ...customStyles?.buttonContainer,\n },\n button: {\n marginHorizontal: 12,\n paddingVertical: 10,\n paddingHorizontal: 20,\n borderWidth: 1,\n borderRadius: 10,\n fontSize: 16,\n overflow: \"hidden\",\n ...customStyles?.text,\n ...customStyles?.button,\n },\n cancelButton: {\n borderColor: \"gray\",\n color:\n customStyles?.theme === \"dark\" ? DARK_MODE_TEXT_COLOR : \"gray\",\n backgroundColor:\n customStyles?.theme === \"dark\" ? \"gray\" : undefined,\n ...customStyles?.text,\n ...customStyles?.cancelButton,\n },\n confirmButton: {\n borderColor: \"green\",\n color:\n customStyles?.theme === \"dark\" ? DARK_MODE_TEXT_COLOR : \"green\",\n backgroundColor:\n customStyles?.theme === \"dark\" ? \"green\" : undefined,\n ...customStyles?.text,\n ...customStyles?.confirmButton,\n },\n modalTitle: {\n fontSize: 24,\n fontWeight: \"bold\",\n marginBottom: 15,\n color:\n customStyles?.theme === \"dark\"\n ? DARK_MODE_TEXT_COLOR\n : LIGHT_MODE_TEXT_COLOR,\n ...customStyles?.text,\n ...customStyles?.modalTitle,\n },\n });\n"],"mappings":"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"}
@@ -67,6 +67,23 @@ const TimerPickerModal = /*#__PURE__*/(0, _react.forwardRef)(({
67
67
  minutes: initialMinutes,
68
68
  seconds: initialSeconds
69
69
  });
70
+ const reset = options => {
71
+ var _timerPickerRef$curre;
72
+ const initialDuration = {
73
+ hours: initialHours,
74
+ minutes: initialMinutes,
75
+ seconds: initialSeconds
76
+ };
77
+ setSelectedDuration(initialDuration);
78
+ setConfirmedDuration(initialDuration);
79
+ (_timerPickerRef$curre = timerPickerRef.current) === null || _timerPickerRef$curre === void 0 || _timerPickerRef$curre.reset(options);
80
+ };
81
+
82
+ // reset state if the initial times change
83
+ (0, _react.useEffect)(() => {
84
+ reset();
85
+ // eslint-disable-next-line react-hooks/exhaustive-deps
86
+ }, [initialHours, initialMinutes, initialSeconds]);
70
87
  const hideModalHandler = () => {
71
88
  setSelectedDuration({
72
89
  hours: confirmedDuration.hours,
@@ -76,8 +93,8 @@ const TimerPickerModal = /*#__PURE__*/(0, _react.forwardRef)(({
76
93
  setIsVisible(false);
77
94
  };
78
95
  const confirmHandler = () => {
79
- var _timerPickerRef$curre, _latestDuration$hours, _latestDuration$minut, _latestDuration$secon;
80
- const latestDuration = (_timerPickerRef$curre = timerPickerRef.current) === null || _timerPickerRef$curre === void 0 ? void 0 : _timerPickerRef$curre.latestDuration;
96
+ var _timerPickerRef$curre2, _latestDuration$hours, _latestDuration$minut, _latestDuration$secon;
97
+ const latestDuration = (_timerPickerRef$curre2 = timerPickerRef.current) === null || _timerPickerRef$curre2 === void 0 ? void 0 : _timerPickerRef$curre2.latestDuration;
81
98
  const newDuration = {
82
99
  hours: (latestDuration === null || latestDuration === void 0 || (_latestDuration$hours = latestDuration.hours) === null || _latestDuration$hours === void 0 ? void 0 : _latestDuration$hours.current) ?? selectedDuration.hours,
83
100
  minutes: (latestDuration === null || latestDuration === void 0 || (_latestDuration$minut = latestDuration.minutes) === null || _latestDuration$minut === void 0 ? void 0 : _latestDuration$minut.current) ?? selectedDuration.minutes,
@@ -100,17 +117,7 @@ const TimerPickerModal = /*#__PURE__*/(0, _react.forwardRef)(({
100
117
  (0, _react.useImperativeHandle)(ref, () => {
101
118
  var _timerPickerRef$curre4, _timerPickerRef$curre5, _timerPickerRef$curre6;
102
119
  return {
103
- reset: options => {
104
- var _timerPickerRef$curre2;
105
- const initialDuration = {
106
- hours: initialHours,
107
- minutes: initialMinutes,
108
- seconds: initialSeconds
109
- };
110
- setSelectedDuration(initialDuration);
111
- setConfirmedDuration(initialDuration);
112
- (_timerPickerRef$curre2 = timerPickerRef.current) === null || _timerPickerRef$curre2 === void 0 || _timerPickerRef$curre2.reset(options);
113
- },
120
+ reset,
114
121
  setValue: (value, options) => {
115
122
  var _timerPickerRef$curre3;
116
123
  setSelectedDuration(value);
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_TimerPicker","_interopRequireDefault","_Modal","_TimerPickerModal","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","TimerPickerModal","forwardRef","visible","setIsVisible","onConfirm","onCancel","onDurationChange","closeOnOverlayPress","initialHours","initialMinutes","initialSeconds","hideHours","hideMinutes","hideSeconds","hourLimit","minuteLimit","secondLimit","hourLabel","minuteLabel","secondLabel","padWithNItems","disableInfiniteScroll","allowFontScaling","use12HourPicker","amLabel","pmLabel","hideCancelButton","confirmButtonText","cancelButtonText","modalTitle","LinearGradient","modalProps","containerProps","contentContainerProps","pickerContainerProps","buttonContainerProps","buttonTouchableOpacityProps","modalTitleProps","pickerGradientOverlayProps","topPickerGradientOverlayProps","bottomPickerGradientOverlayProps","styles","customStyles","ref","generateStyles","timerPickerRef","useRef","selectedDuration","setSelectedDuration","useState","hours","minutes","seconds","confirmedDuration","setConfirmedDuration","hideModalHandler","confirmHandler","_timerPickerRef$curre","_latestDuration$hours","_latestDuration$minut","_latestDuration$secon","latestDuration","current","newDuration","cancelHandler","durationChangeHandler","useCallback","duration","useImperativeHandle","_timerPickerRef$curre4","_timerPickerRef$curre5","_timerPickerRef$curre6","reset","options","_timerPickerRef$curre2","initialDuration","setValue","value","_timerPickerRef$curre3","createElement","isVisible","onOverlayPress","undefined","testID","View","style","container","contentContainer","Text","aggressivelyGetLatestDuration","buttonContainer","TouchableOpacity","onPress","button","cancelButton","confirmButton","_default","exports","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React, {\n MutableRefObject,\n forwardRef,\n useCallback,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { View, Text, TouchableOpacity } from \"react-native\";\n\nimport TimerPicker, { TimerPickerProps, TimerPickerRef } from \"./TimerPicker\";\nimport Modal from \"./Modal\";\n\nimport {\n generateStyles,\n CustomTimerPickerModalStyles,\n} from \"./TimerPickerModal.styles\";\n\nexport interface TimerPickerModalRef {\n reset: (options?: { animated?: boolean }) => void;\n setValue: (\n value: {\n hours: number;\n minutes: number;\n seconds: number;\n },\n options?: { animated?: boolean }\n ) => void;\n latestDuration: {\n hours: MutableRefObject<number> | undefined;\n minutes: MutableRefObject<number> | undefined;\n seconds: MutableRefObject<number> | undefined;\n };\n}\n\nexport interface TimerPickerModalProps extends TimerPickerProps {\n visible: boolean;\n setIsVisible: (isVisible: boolean) => void;\n onConfirm: ({\n hours,\n minutes,\n seconds,\n }: {\n hours: number;\n minutes: number;\n seconds: number;\n }) => void;\n onCancel?: () => void;\n closeOnOverlayPress?: boolean;\n hideCancelButton?: boolean;\n confirmButtonText?: string;\n cancelButtonText?: string;\n modalTitle?: string;\n modalProps?: React.ComponentProps<typeof Modal>;\n containerProps?: React.ComponentProps<typeof View>;\n contentContainerProps?: React.ComponentProps<typeof View>;\n buttonContainerProps?: React.ComponentProps<typeof View>;\n buttonTouchableOpacityProps?: React.ComponentProps<typeof TouchableOpacity>;\n modalTitleProps?: React.ComponentProps<typeof Text>;\n styles?: CustomTimerPickerModalStyles;\n}\n\nconst TimerPickerModal = forwardRef<TimerPickerModalRef, TimerPickerModalProps>(\n (\n {\n visible,\n setIsVisible,\n onConfirm,\n onCancel,\n onDurationChange,\n closeOnOverlayPress,\n initialHours = 0,\n initialMinutes = 0,\n initialSeconds = 0,\n hideHours = false,\n hideMinutes = false,\n hideSeconds = false,\n hourLimit,\n minuteLimit,\n secondLimit,\n hourLabel,\n minuteLabel,\n secondLabel,\n padWithNItems = 1,\n disableInfiniteScroll = false,\n allowFontScaling = false,\n use12HourPicker,\n amLabel,\n pmLabel,\n hideCancelButton = false,\n confirmButtonText = \"Confirm\",\n cancelButtonText = \"Cancel\",\n modalTitle,\n LinearGradient,\n modalProps,\n containerProps,\n contentContainerProps,\n pickerContainerProps,\n buttonContainerProps,\n buttonTouchableOpacityProps,\n modalTitleProps,\n pickerGradientOverlayProps,\n topPickerGradientOverlayProps,\n bottomPickerGradientOverlayProps,\n styles: customStyles,\n },\n ref\n ): React.ReactElement => {\n const styles = generateStyles(customStyles);\n\n const timerPickerRef = useRef<TimerPickerRef>(null);\n\n const [selectedDuration, setSelectedDuration] = useState({\n hours: initialHours,\n minutes: initialMinutes,\n seconds: initialSeconds,\n });\n const [confirmedDuration, setConfirmedDuration] = useState({\n hours: initialHours,\n minutes: initialMinutes,\n seconds: initialSeconds,\n });\n\n const hideModalHandler = () => {\n setSelectedDuration({\n hours: confirmedDuration.hours,\n minutes: confirmedDuration.minutes,\n seconds: confirmedDuration.seconds,\n });\n setIsVisible(false);\n };\n\n const confirmHandler = () => {\n const latestDuration = timerPickerRef.current?.latestDuration;\n const newDuration = {\n hours: latestDuration?.hours?.current ?? selectedDuration.hours,\n minutes:\n latestDuration?.minutes?.current ??\n selectedDuration.minutes,\n seconds:\n latestDuration?.seconds?.current ??\n selectedDuration.seconds,\n };\n setConfirmedDuration(newDuration);\n onConfirm(newDuration);\n };\n\n const cancelHandler = () => {\n setIsVisible(false);\n setSelectedDuration(confirmedDuration);\n onCancel?.();\n };\n\n // wrapped in useCallback to avoid unnecessary re-renders of TimerPicker\n const durationChangeHandler = useCallback(\n (duration: { hours: number; minutes: number; seconds: number }) => {\n setSelectedDuration(duration);\n onDurationChange?.(duration);\n },\n [onDurationChange]\n );\n\n useImperativeHandle(ref, () => ({\n reset: (options) => {\n const initialDuration = {\n hours: initialHours,\n minutes: initialMinutes,\n seconds: initialSeconds,\n };\n setSelectedDuration(initialDuration);\n setConfirmedDuration(initialDuration);\n timerPickerRef.current?.reset(options);\n },\n setValue: (value, options) => {\n setSelectedDuration(value);\n setConfirmedDuration(value);\n timerPickerRef.current?.setValue(value, options);\n },\n latestDuration: {\n hours: timerPickerRef.current?.latestDuration?.hours,\n minutes: timerPickerRef.current?.latestDuration?.minutes,\n seconds: timerPickerRef.current?.latestDuration?.seconds,\n },\n }));\n\n return (\n <Modal\n isVisible={visible}\n onOverlayPress={\n closeOnOverlayPress ? hideModalHandler : undefined\n }\n {...modalProps}\n testID=\"timer-picker-modal\">\n <View {...containerProps} style={styles.container}>\n <View\n {...contentContainerProps}\n style={styles.contentContainer}>\n {modalTitle ? (\n <Text\n {...modalTitleProps}\n style={styles.modalTitle}>\n {modalTitle}\n </Text>\n ) : null}\n <TimerPicker\n ref={timerPickerRef}\n onDurationChange={durationChangeHandler}\n initialHours={confirmedDuration.hours}\n initialMinutes={confirmedDuration.minutes}\n initialSeconds={confirmedDuration.seconds}\n aggressivelyGetLatestDuration={true}\n hideHours={hideHours}\n hideMinutes={hideMinutes}\n hideSeconds={hideSeconds}\n hourLimit={hourLimit}\n minuteLimit={minuteLimit}\n secondLimit={secondLimit}\n hourLabel={hourLabel}\n minuteLabel={minuteLabel}\n secondLabel={secondLabel}\n padWithNItems={padWithNItems}\n disableInfiniteScroll={disableInfiniteScroll}\n allowFontScaling={allowFontScaling}\n use12HourPicker={use12HourPicker}\n amLabel={amLabel}\n pmLabel={pmLabel}\n LinearGradient={LinearGradient}\n pickerContainerProps={pickerContainerProps}\n pickerGradientOverlayProps={\n pickerGradientOverlayProps\n }\n topPickerGradientOverlayProps={\n topPickerGradientOverlayProps\n }\n bottomPickerGradientOverlayProps={\n bottomPickerGradientOverlayProps\n }\n styles={customStyles}\n />\n <View\n {...buttonContainerProps}\n style={styles.buttonContainer}>\n {!hideCancelButton ? (\n <TouchableOpacity\n onPress={cancelHandler}\n {...buttonTouchableOpacityProps}>\n <Text\n style={[\n styles.button,\n styles.cancelButton,\n ]}>\n {cancelButtonText}\n </Text>\n </TouchableOpacity>\n ) : null}\n <TouchableOpacity\n onPress={confirmHandler}\n {...buttonTouchableOpacityProps}>\n <Text\n style={[\n styles.button,\n styles.confirmButton,\n ]}>\n {confirmButtonText}\n </Text>\n </TouchableOpacity>\n </View>\n </View>\n </View>\n </Modal>\n );\n }\n);\n\nexport default React.memo(TimerPickerModal);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_TimerPicker","_interopRequireDefault","_Modal","_TimerPickerModal","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","TimerPickerModal","forwardRef","visible","setIsVisible","onConfirm","onCancel","onDurationChange","closeOnOverlayPress","initialHours","initialMinutes","initialSeconds","hideHours","hideMinutes","hideSeconds","hourLimit","minuteLimit","secondLimit","hourLabel","minuteLabel","secondLabel","padWithNItems","disableInfiniteScroll","allowFontScaling","use12HourPicker","amLabel","pmLabel","hideCancelButton","confirmButtonText","cancelButtonText","modalTitle","LinearGradient","modalProps","containerProps","contentContainerProps","pickerContainerProps","buttonContainerProps","buttonTouchableOpacityProps","modalTitleProps","pickerGradientOverlayProps","topPickerGradientOverlayProps","bottomPickerGradientOverlayProps","styles","customStyles","ref","generateStyles","timerPickerRef","useRef","selectedDuration","setSelectedDuration","useState","hours","minutes","seconds","confirmedDuration","setConfirmedDuration","reset","options","_timerPickerRef$curre","initialDuration","current","useEffect","hideModalHandler","confirmHandler","_timerPickerRef$curre2","_latestDuration$hours","_latestDuration$minut","_latestDuration$secon","latestDuration","newDuration","cancelHandler","durationChangeHandler","useCallback","duration","useImperativeHandle","_timerPickerRef$curre4","_timerPickerRef$curre5","_timerPickerRef$curre6","setValue","value","_timerPickerRef$curre3","createElement","isVisible","onOverlayPress","undefined","testID","View","style","container","contentContainer","Text","aggressivelyGetLatestDuration","buttonContainer","TouchableOpacity","onPress","button","cancelButton","confirmButton","_default","exports","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React, {\n MutableRefObject,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { View, Text, TouchableOpacity } from \"react-native\";\n\nimport TimerPicker, { TimerPickerProps, TimerPickerRef } from \"./TimerPicker\";\nimport Modal from \"./Modal\";\n\nimport {\n generateStyles,\n CustomTimerPickerModalStyles,\n} from \"./TimerPickerModal.styles\";\n\nexport interface TimerPickerModalRef {\n reset: (options?: { animated?: boolean }) => void;\n setValue: (\n value: {\n hours: number;\n minutes: number;\n seconds: number;\n },\n options?: { animated?: boolean }\n ) => void;\n latestDuration: {\n hours: MutableRefObject<number> | undefined;\n minutes: MutableRefObject<number> | undefined;\n seconds: MutableRefObject<number> | undefined;\n };\n}\n\nexport interface TimerPickerModalProps extends TimerPickerProps {\n visible: boolean;\n setIsVisible: (isVisible: boolean) => void;\n onConfirm: ({\n hours,\n minutes,\n seconds,\n }: {\n hours: number;\n minutes: number;\n seconds: number;\n }) => void;\n onCancel?: () => void;\n closeOnOverlayPress?: boolean;\n hideCancelButton?: boolean;\n confirmButtonText?: string;\n cancelButtonText?: string;\n modalTitle?: string;\n modalProps?: React.ComponentProps<typeof Modal>;\n containerProps?: React.ComponentProps<typeof View>;\n contentContainerProps?: React.ComponentProps<typeof View>;\n buttonContainerProps?: React.ComponentProps<typeof View>;\n buttonTouchableOpacityProps?: React.ComponentProps<typeof TouchableOpacity>;\n modalTitleProps?: React.ComponentProps<typeof Text>;\n styles?: CustomTimerPickerModalStyles;\n}\n\nconst TimerPickerModal = forwardRef<TimerPickerModalRef, TimerPickerModalProps>(\n (\n {\n visible,\n setIsVisible,\n onConfirm,\n onCancel,\n onDurationChange,\n closeOnOverlayPress,\n initialHours = 0,\n initialMinutes = 0,\n initialSeconds = 0,\n hideHours = false,\n hideMinutes = false,\n hideSeconds = false,\n hourLimit,\n minuteLimit,\n secondLimit,\n hourLabel,\n minuteLabel,\n secondLabel,\n padWithNItems = 1,\n disableInfiniteScroll = false,\n allowFontScaling = false,\n use12HourPicker,\n amLabel,\n pmLabel,\n hideCancelButton = false,\n confirmButtonText = \"Confirm\",\n cancelButtonText = \"Cancel\",\n modalTitle,\n LinearGradient,\n modalProps,\n containerProps,\n contentContainerProps,\n pickerContainerProps,\n buttonContainerProps,\n buttonTouchableOpacityProps,\n modalTitleProps,\n pickerGradientOverlayProps,\n topPickerGradientOverlayProps,\n bottomPickerGradientOverlayProps,\n styles: customStyles,\n },\n ref\n ): React.ReactElement => {\n const styles = generateStyles(customStyles);\n\n const timerPickerRef = useRef<TimerPickerRef>(null);\n\n const [selectedDuration, setSelectedDuration] = useState({\n hours: initialHours,\n minutes: initialMinutes,\n seconds: initialSeconds,\n });\n const [confirmedDuration, setConfirmedDuration] = useState({\n hours: initialHours,\n minutes: initialMinutes,\n seconds: initialSeconds,\n });\n\n const reset = (options?: { animated?: boolean }) => {\n const initialDuration = {\n hours: initialHours,\n minutes: initialMinutes,\n seconds: initialSeconds,\n };\n setSelectedDuration(initialDuration);\n setConfirmedDuration(initialDuration);\n timerPickerRef.current?.reset(options);\n };\n\n // reset state if the initial times change\n useEffect(() => {\n reset();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [initialHours, initialMinutes, initialSeconds]);\n\n const hideModalHandler = () => {\n setSelectedDuration({\n hours: confirmedDuration.hours,\n minutes: confirmedDuration.minutes,\n seconds: confirmedDuration.seconds,\n });\n setIsVisible(false);\n };\n\n const confirmHandler = () => {\n const latestDuration = timerPickerRef.current?.latestDuration;\n const newDuration = {\n hours: latestDuration?.hours?.current ?? selectedDuration.hours,\n minutes:\n latestDuration?.minutes?.current ??\n selectedDuration.minutes,\n seconds:\n latestDuration?.seconds?.current ??\n selectedDuration.seconds,\n };\n setConfirmedDuration(newDuration);\n onConfirm(newDuration);\n };\n\n const cancelHandler = () => {\n setIsVisible(false);\n setSelectedDuration(confirmedDuration);\n onCancel?.();\n };\n\n // wrapped in useCallback to avoid unnecessary re-renders of TimerPicker\n const durationChangeHandler = useCallback(\n (duration: { hours: number; minutes: number; seconds: number }) => {\n setSelectedDuration(duration);\n onDurationChange?.(duration);\n },\n [onDurationChange]\n );\n\n useImperativeHandle(ref, () => ({\n reset,\n setValue: (value, options) => {\n setSelectedDuration(value);\n setConfirmedDuration(value);\n timerPickerRef.current?.setValue(value, options);\n },\n latestDuration: {\n hours: timerPickerRef.current?.latestDuration?.hours,\n minutes: timerPickerRef.current?.latestDuration?.minutes,\n seconds: timerPickerRef.current?.latestDuration?.seconds,\n },\n }));\n\n return (\n <Modal\n isVisible={visible}\n onOverlayPress={\n closeOnOverlayPress ? hideModalHandler : undefined\n }\n {...modalProps}\n testID=\"timer-picker-modal\">\n <View {...containerProps} style={styles.container}>\n <View\n {...contentContainerProps}\n style={styles.contentContainer}>\n {modalTitle ? (\n <Text\n {...modalTitleProps}\n style={styles.modalTitle}>\n {modalTitle}\n </Text>\n ) : null}\n <TimerPicker\n ref={timerPickerRef}\n onDurationChange={durationChangeHandler}\n initialHours={confirmedDuration.hours}\n initialMinutes={confirmedDuration.minutes}\n initialSeconds={confirmedDuration.seconds}\n aggressivelyGetLatestDuration={true}\n hideHours={hideHours}\n hideMinutes={hideMinutes}\n hideSeconds={hideSeconds}\n hourLimit={hourLimit}\n minuteLimit={minuteLimit}\n secondLimit={secondLimit}\n hourLabel={hourLabel}\n minuteLabel={minuteLabel}\n secondLabel={secondLabel}\n padWithNItems={padWithNItems}\n disableInfiniteScroll={disableInfiniteScroll}\n allowFontScaling={allowFontScaling}\n use12HourPicker={use12HourPicker}\n amLabel={amLabel}\n pmLabel={pmLabel}\n LinearGradient={LinearGradient}\n pickerContainerProps={pickerContainerProps}\n pickerGradientOverlayProps={\n pickerGradientOverlayProps\n }\n topPickerGradientOverlayProps={\n topPickerGradientOverlayProps\n }\n bottomPickerGradientOverlayProps={\n bottomPickerGradientOverlayProps\n }\n styles={customStyles}\n />\n <View\n {...buttonContainerProps}\n style={styles.buttonContainer}>\n {!hideCancelButton ? (\n <TouchableOpacity\n onPress={cancelHandler}\n {...buttonTouchableOpacityProps}>\n <Text\n style={[\n styles.button,\n styles.cancelButton,\n ]}>\n {cancelButtonText}\n </Text>\n </TouchableOpacity>\n ) : null}\n <TouchableOpacity\n onPress={confirmHandler}\n {...buttonTouchableOpacityProps}>\n <Text\n style={[\n styles.button,\n styles.confirmButton,\n ]}>\n {confirmButtonText}\n </Text>\n </TouchableOpacity>\n </View>\n </View>\n </View>\n </Modal>\n );\n }\n);\n\nexport default React.memo(TimerPickerModal);\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSheet","DARK_MODE_BACKGROUND_COLOR","DARK_MODE_TEXT_COLOR","LIGHT_MODE_BACKGROUND_COLOR","LIGHT_MODE_TEXT_COLOR","generateStyles","customStyles","create","container","justifyContent","alignItems","overflow","contentContainer","backgroundColor","theme","borderRadius","padding","buttonContainer","flexDirection","marginTop","button","marginHorizontal","paddingVertical","paddingHorizontal","borderWidth","fontSize","text","cancelButton","borderColor","color","undefined","confirmButton","modalTitle","fontWeight","marginBottom"],"sources":["TimerPickerModal.styles.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { StyleSheet, Text, View } from \"react-native\";\n\nimport type { CustomTimerPickerStyles } from \"./TimerPicker/TimerPicker.styles\";\nimport { ComponentProps } from \"react\";\n\nexport interface CustomTimerPickerModalStyles extends CustomTimerPickerStyles {\n container?: ComponentProps<typeof View>;\n contentContainer?: ComponentProps<typeof View>;\n buttonContainer?: ComponentProps<typeof View>;\n button?: ComponentProps<typeof Text>;\n cancelButton?: ComponentProps<typeof Text>;\n confirmButton?: ComponentProps<typeof Text>;\n modalTitle?: ComponentProps<typeof Text>;\n}\n\nconst DARK_MODE_BACKGROUND_COLOR = \"#232323\";\nconst DARK_MODE_TEXT_COLOR = \"#E9E9E9\";\nconst LIGHT_MODE_BACKGROUND_COLOR = \"#F1F1F1\";\nconst LIGHT_MODE_TEXT_COLOR = \"#1B1B1B\";\n\nexport const generateStyles = (\n customStyles: CustomTimerPickerModalStyles | undefined\n) =>\n StyleSheet.create({\n container: {\n justifyContent: \"center\",\n alignItems: \"center\",\n overflow: \"hidden\",\n ...customStyles?.container,\n },\n contentContainer: {\n backgroundColor:\n customStyles?.backgroundColor ?? customStyles?.theme === \"dark\"\n ? DARK_MODE_BACKGROUND_COLOR\n : LIGHT_MODE_BACKGROUND_COLOR,\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: 20,\n padding: 20,\n ...customStyles?.contentContainer,\n },\n buttonContainer: {\n flexDirection: \"row\",\n marginTop: 25,\n ...customStyles?.buttonContainer,\n },\n button: {\n marginHorizontal: 12,\n paddingVertical: 10,\n paddingHorizontal: 20,\n borderWidth: 1,\n borderRadius: 10,\n fontSize: 16,\n overflow: \"hidden\",\n ...customStyles?.text,\n ...customStyles?.button,\n },\n cancelButton: {\n borderColor: \"gray\",\n color:\n customStyles?.theme === \"dark\" ? DARK_MODE_TEXT_COLOR : \"gray\",\n backgroundColor:\n customStyles?.theme === \"dark\" ? \"gray\" : undefined,\n ...customStyles?.text,\n ...customStyles?.cancelButton,\n },\n confirmButton: {\n borderColor: \"green\",\n color:\n customStyles?.theme === \"dark\" ? DARK_MODE_TEXT_COLOR : \"green\",\n backgroundColor:\n customStyles?.theme === \"dark\" ? \"green\" : undefined,\n ...customStyles?.text,\n ...customStyles?.confirmButton,\n },\n modalTitle: {\n fontSize: 24,\n fontWeight: \"bold\",\n marginBottom: 15,\n color:\n customStyles?.theme === \"dark\"\n ? DARK_MODE_TEXT_COLOR\n : LIGHT_MODE_TEXT_COLOR,\n ...customStyles?.text,\n ...customStyles?.modalTitle,\n },\n });\n"],"mappings":"AAAA;AACA,SAASA,UAAU,QAAoB,cAAc;AAerD,MAAMC,0BAA0B,GAAG,SAAS;AAC5C,MAAMC,oBAAoB,GAAG,SAAS;AACtC,MAAMC,2BAA2B,GAAG,SAAS;AAC7C,MAAMC,qBAAqB,GAAG,SAAS;AAEvC,OAAO,MAAMC,cAAc,GACvBC,YAAsD,IAEtDN,UAAU,CAACO,MAAM,CAAC;EACdC,SAAS,EAAE;IACPC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,QAAQ,EAAE,QAAQ;IAClB,IAAGL,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEE,SAAS;EAC9B,CAAC;EACDI,gBAAgB,EAAE;IACdC,eAAe,EACX,CAAAP,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEO,eAAe,KAAI,CAAAP,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEQ,KAAK,MAAK,MAAM,GACzDb,0BAA0B,GAC1BE,2BAA2B;IACrCM,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBK,YAAY,EAAE,EAAE;IAChBC,OAAO,EAAE,EAAE;IACX,IAAGV,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEM,gBAAgB;EACrC,CAAC;EACDK,eAAe,EAAE;IACbC,aAAa,EAAE,KAAK;IACpBC,SAAS,EAAE,EAAE;IACb,IAAGb,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEW,eAAe;EACpC,CAAC;EACDG,MAAM,EAAE;IACJC,gBAAgB,EAAE,EAAE;IACpBC,eAAe,EAAE,EAAE;IACnBC,iBAAiB,EAAE,EAAE;IACrBC,WAAW,EAAE,CAAC;IACdT,YAAY,EAAE,EAAE;IAChBU,QAAQ,EAAE,EAAE;IACZd,QAAQ,EAAE,QAAQ;IAClB,IAAGL,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEoB,IAAI;IACrB,IAAGpB,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEc,MAAM;EAC3B,CAAC;EACDO,YAAY,EAAE;IACVC,WAAW,EAAE,MAAM;IACnBC,KAAK,EACD,CAAAvB,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEQ,KAAK,MAAK,MAAM,GAAGZ,oBAAoB,GAAG,MAAM;IAClEW,eAAe,EACX,CAAAP,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEQ,KAAK,MAAK,MAAM,GAAG,MAAM,GAAGgB,SAAS;IACvD,IAAGxB,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEoB,IAAI;IACrB,IAAGpB,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEqB,YAAY;EACjC,CAAC;EACDI,aAAa,EAAE;IACXH,WAAW,EAAE,OAAO;IACpBC,KAAK,EACD,CAAAvB,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEQ,KAAK,MAAK,MAAM,GAAGZ,oBAAoB,GAAG,OAAO;IACnEW,eAAe,EACX,CAAAP,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEQ,KAAK,MAAK,MAAM,GAAG,OAAO,GAAGgB,SAAS;IACxD,IAAGxB,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEoB,IAAI;IACrB,IAAGpB,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEyB,aAAa;EAClC,CAAC;EACDC,UAAU,EAAE;IACRP,QAAQ,EAAE,EAAE;IACZQ,UAAU,EAAE,MAAM;IAClBC,YAAY,EAAE,EAAE;IAChBL,KAAK,EACD,CAAAvB,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEQ,KAAK,MAAK,MAAM,GACxBZ,oBAAoB,GACpBE,qBAAqB;IAC/B,IAAGE,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEoB,IAAI;IACrB,IAAGpB,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAE0B,UAAU;EAC/B;AACJ,CAAC,CAAC"}
1
+ {"version":3,"names":["StyleSheet","DARK_MODE_BACKGROUND_COLOR","DARK_MODE_TEXT_COLOR","LIGHT_MODE_BACKGROUND_COLOR","LIGHT_MODE_TEXT_COLOR","generateStyles","customStyles","create","container","justifyContent","alignItems","overflow","contentContainer","backgroundColor","theme","borderRadius","padding","buttonContainer","flexDirection","marginTop","button","marginHorizontal","paddingVertical","paddingHorizontal","borderWidth","fontSize","text","cancelButton","borderColor","color","undefined","confirmButton","modalTitle","fontWeight","marginBottom"],"sources":["TimerPickerModal.styles.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { StyleSheet } from \"react-native\";\n\nimport type { CustomTimerPickerStyles } from \"./TimerPicker/TimerPicker.styles\";\n\nexport interface CustomTimerPickerModalStyles extends CustomTimerPickerStyles {\n container?: any;\n contentContainer?: any;\n buttonContainer?: any;\n button?: any;\n cancelButton?: any;\n confirmButton?: any;\n modalTitle?: any;\n}\n\nconst DARK_MODE_BACKGROUND_COLOR = \"#232323\";\nconst DARK_MODE_TEXT_COLOR = \"#E9E9E9\";\nconst LIGHT_MODE_BACKGROUND_COLOR = \"#F1F1F1\";\nconst LIGHT_MODE_TEXT_COLOR = \"#1B1B1B\";\n\nexport const generateStyles = (\n customStyles: CustomTimerPickerModalStyles | undefined\n) =>\n StyleSheet.create({\n container: {\n justifyContent: \"center\",\n alignItems: \"center\",\n overflow: \"hidden\",\n ...customStyles?.container,\n },\n contentContainer: {\n backgroundColor:\n customStyles?.backgroundColor ?? customStyles?.theme === \"dark\"\n ? DARK_MODE_BACKGROUND_COLOR\n : LIGHT_MODE_BACKGROUND_COLOR,\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: 20,\n padding: 20,\n ...customStyles?.contentContainer,\n },\n buttonContainer: {\n flexDirection: \"row\",\n marginTop: 25,\n ...customStyles?.buttonContainer,\n },\n button: {\n marginHorizontal: 12,\n paddingVertical: 10,\n paddingHorizontal: 20,\n borderWidth: 1,\n borderRadius: 10,\n fontSize: 16,\n overflow: \"hidden\",\n ...customStyles?.text,\n ...customStyles?.button,\n },\n cancelButton: {\n borderColor: \"gray\",\n color:\n customStyles?.theme === \"dark\" ? DARK_MODE_TEXT_COLOR : \"gray\",\n backgroundColor:\n customStyles?.theme === \"dark\" ? \"gray\" : undefined,\n ...customStyles?.text,\n ...customStyles?.cancelButton,\n },\n confirmButton: {\n borderColor: \"green\",\n color:\n customStyles?.theme === \"dark\" ? DARK_MODE_TEXT_COLOR : \"green\",\n backgroundColor:\n customStyles?.theme === \"dark\" ? \"green\" : undefined,\n ...customStyles?.text,\n ...customStyles?.confirmButton,\n },\n modalTitle: {\n fontSize: 24,\n fontWeight: \"bold\",\n marginBottom: 15,\n color:\n customStyles?.theme === \"dark\"\n ? DARK_MODE_TEXT_COLOR\n : LIGHT_MODE_TEXT_COLOR,\n ...customStyles?.text,\n ...customStyles?.modalTitle,\n },\n });\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
- import React, { forwardRef, useCallback, useImperativeHandle, useRef, useState } from "react";
2
+ import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useRef, useState } from "react";
3
3
  import { View, Text, TouchableOpacity } from "react-native";
4
4
  import TimerPicker from "./TimerPicker";
5
5
  import Modal from "./Modal";
@@ -58,6 +58,23 @@ const TimerPickerModal = /*#__PURE__*/forwardRef(({
58
58
  minutes: initialMinutes,
59
59
  seconds: initialSeconds
60
60
  });
61
+ const reset = options => {
62
+ var _timerPickerRef$curre;
63
+ const initialDuration = {
64
+ hours: initialHours,
65
+ minutes: initialMinutes,
66
+ seconds: initialSeconds
67
+ };
68
+ setSelectedDuration(initialDuration);
69
+ setConfirmedDuration(initialDuration);
70
+ (_timerPickerRef$curre = timerPickerRef.current) === null || _timerPickerRef$curre === void 0 || _timerPickerRef$curre.reset(options);
71
+ };
72
+
73
+ // reset state if the initial times change
74
+ useEffect(() => {
75
+ reset();
76
+ // eslint-disable-next-line react-hooks/exhaustive-deps
77
+ }, [initialHours, initialMinutes, initialSeconds]);
61
78
  const hideModalHandler = () => {
62
79
  setSelectedDuration({
63
80
  hours: confirmedDuration.hours,
@@ -67,8 +84,8 @@ const TimerPickerModal = /*#__PURE__*/forwardRef(({
67
84
  setIsVisible(false);
68
85
  };
69
86
  const confirmHandler = () => {
70
- var _timerPickerRef$curre, _latestDuration$hours, _latestDuration$minut, _latestDuration$secon;
71
- const latestDuration = (_timerPickerRef$curre = timerPickerRef.current) === null || _timerPickerRef$curre === void 0 ? void 0 : _timerPickerRef$curre.latestDuration;
87
+ var _timerPickerRef$curre2, _latestDuration$hours, _latestDuration$minut, _latestDuration$secon;
88
+ const latestDuration = (_timerPickerRef$curre2 = timerPickerRef.current) === null || _timerPickerRef$curre2 === void 0 ? void 0 : _timerPickerRef$curre2.latestDuration;
72
89
  const newDuration = {
73
90
  hours: (latestDuration === null || latestDuration === void 0 || (_latestDuration$hours = latestDuration.hours) === null || _latestDuration$hours === void 0 ? void 0 : _latestDuration$hours.current) ?? selectedDuration.hours,
74
91
  minutes: (latestDuration === null || latestDuration === void 0 || (_latestDuration$minut = latestDuration.minutes) === null || _latestDuration$minut === void 0 ? void 0 : _latestDuration$minut.current) ?? selectedDuration.minutes,
@@ -91,17 +108,7 @@ const TimerPickerModal = /*#__PURE__*/forwardRef(({
91
108
  useImperativeHandle(ref, () => {
92
109
  var _timerPickerRef$curre4, _timerPickerRef$curre5, _timerPickerRef$curre6;
93
110
  return {
94
- reset: options => {
95
- var _timerPickerRef$curre2;
96
- const initialDuration = {
97
- hours: initialHours,
98
- minutes: initialMinutes,
99
- seconds: initialSeconds
100
- };
101
- setSelectedDuration(initialDuration);
102
- setConfirmedDuration(initialDuration);
103
- (_timerPickerRef$curre2 = timerPickerRef.current) === null || _timerPickerRef$curre2 === void 0 || _timerPickerRef$curre2.reset(options);
104
- },
111
+ reset,
105
112
  setValue: (value, options) => {
106
113
  var _timerPickerRef$curre3;
107
114
  setSelectedDuration(value);
@@ -1 +1 @@
1
- {"version":3,"names":["React","forwardRef","useCallback","useImperativeHandle","useRef","useState","View","Text","TouchableOpacity","TimerPicker","Modal","generateStyles","TimerPickerModal","visible","setIsVisible","onConfirm","onCancel","onDurationChange","closeOnOverlayPress","initialHours","initialMinutes","initialSeconds","hideHours","hideMinutes","hideSeconds","hourLimit","minuteLimit","secondLimit","hourLabel","minuteLabel","secondLabel","padWithNItems","disableInfiniteScroll","allowFontScaling","use12HourPicker","amLabel","pmLabel","hideCancelButton","confirmButtonText","cancelButtonText","modalTitle","LinearGradient","modalProps","containerProps","contentContainerProps","pickerContainerProps","buttonContainerProps","buttonTouchableOpacityProps","modalTitleProps","pickerGradientOverlayProps","topPickerGradientOverlayProps","bottomPickerGradientOverlayProps","styles","customStyles","ref","timerPickerRef","selectedDuration","setSelectedDuration","hours","minutes","seconds","confirmedDuration","setConfirmedDuration","hideModalHandler","confirmHandler","_timerPickerRef$curre","_latestDuration$hours","_latestDuration$minut","_latestDuration$secon","latestDuration","current","newDuration","cancelHandler","durationChangeHandler","duration","_timerPickerRef$curre4","_timerPickerRef$curre5","_timerPickerRef$curre6","reset","options","_timerPickerRef$curre2","initialDuration","setValue","value","_timerPickerRef$curre3","createElement","_extends","isVisible","onOverlayPress","undefined","testID","style","container","contentContainer","aggressivelyGetLatestDuration","buttonContainer","onPress","button","cancelButton","confirmButton","memo"],"sources":["index.tsx"],"sourcesContent":["import React, {\n MutableRefObject,\n forwardRef,\n useCallback,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { View, Text, TouchableOpacity } from \"react-native\";\n\nimport TimerPicker, { TimerPickerProps, TimerPickerRef } from \"./TimerPicker\";\nimport Modal from \"./Modal\";\n\nimport {\n generateStyles,\n CustomTimerPickerModalStyles,\n} from \"./TimerPickerModal.styles\";\n\nexport interface TimerPickerModalRef {\n reset: (options?: { animated?: boolean }) => void;\n setValue: (\n value: {\n hours: number;\n minutes: number;\n seconds: number;\n },\n options?: { animated?: boolean }\n ) => void;\n latestDuration: {\n hours: MutableRefObject<number> | undefined;\n minutes: MutableRefObject<number> | undefined;\n seconds: MutableRefObject<number> | undefined;\n };\n}\n\nexport interface TimerPickerModalProps extends TimerPickerProps {\n visible: boolean;\n setIsVisible: (isVisible: boolean) => void;\n onConfirm: ({\n hours,\n minutes,\n seconds,\n }: {\n hours: number;\n minutes: number;\n seconds: number;\n }) => void;\n onCancel?: () => void;\n closeOnOverlayPress?: boolean;\n hideCancelButton?: boolean;\n confirmButtonText?: string;\n cancelButtonText?: string;\n modalTitle?: string;\n modalProps?: React.ComponentProps<typeof Modal>;\n containerProps?: React.ComponentProps<typeof View>;\n contentContainerProps?: React.ComponentProps<typeof View>;\n buttonContainerProps?: React.ComponentProps<typeof View>;\n buttonTouchableOpacityProps?: React.ComponentProps<typeof TouchableOpacity>;\n modalTitleProps?: React.ComponentProps<typeof Text>;\n styles?: CustomTimerPickerModalStyles;\n}\n\nconst TimerPickerModal = forwardRef<TimerPickerModalRef, TimerPickerModalProps>(\n (\n {\n visible,\n setIsVisible,\n onConfirm,\n onCancel,\n onDurationChange,\n closeOnOverlayPress,\n initialHours = 0,\n initialMinutes = 0,\n initialSeconds = 0,\n hideHours = false,\n hideMinutes = false,\n hideSeconds = false,\n hourLimit,\n minuteLimit,\n secondLimit,\n hourLabel,\n minuteLabel,\n secondLabel,\n padWithNItems = 1,\n disableInfiniteScroll = false,\n allowFontScaling = false,\n use12HourPicker,\n amLabel,\n pmLabel,\n hideCancelButton = false,\n confirmButtonText = \"Confirm\",\n cancelButtonText = \"Cancel\",\n modalTitle,\n LinearGradient,\n modalProps,\n containerProps,\n contentContainerProps,\n pickerContainerProps,\n buttonContainerProps,\n buttonTouchableOpacityProps,\n modalTitleProps,\n pickerGradientOverlayProps,\n topPickerGradientOverlayProps,\n bottomPickerGradientOverlayProps,\n styles: customStyles,\n },\n ref\n ): React.ReactElement => {\n const styles = generateStyles(customStyles);\n\n const timerPickerRef = useRef<TimerPickerRef>(null);\n\n const [selectedDuration, setSelectedDuration] = useState({\n hours: initialHours,\n minutes: initialMinutes,\n seconds: initialSeconds,\n });\n const [confirmedDuration, setConfirmedDuration] = useState({\n hours: initialHours,\n minutes: initialMinutes,\n seconds: initialSeconds,\n });\n\n const hideModalHandler = () => {\n setSelectedDuration({\n hours: confirmedDuration.hours,\n minutes: confirmedDuration.minutes,\n seconds: confirmedDuration.seconds,\n });\n setIsVisible(false);\n };\n\n const confirmHandler = () => {\n const latestDuration = timerPickerRef.current?.latestDuration;\n const newDuration = {\n hours: latestDuration?.hours?.current ?? selectedDuration.hours,\n minutes:\n latestDuration?.minutes?.current ??\n selectedDuration.minutes,\n seconds:\n latestDuration?.seconds?.current ??\n selectedDuration.seconds,\n };\n setConfirmedDuration(newDuration);\n onConfirm(newDuration);\n };\n\n const cancelHandler = () => {\n setIsVisible(false);\n setSelectedDuration(confirmedDuration);\n onCancel?.();\n };\n\n // wrapped in useCallback to avoid unnecessary re-renders of TimerPicker\n const durationChangeHandler = useCallback(\n (duration: { hours: number; minutes: number; seconds: number }) => {\n setSelectedDuration(duration);\n onDurationChange?.(duration);\n },\n [onDurationChange]\n );\n\n useImperativeHandle(ref, () => ({\n reset: (options) => {\n const initialDuration = {\n hours: initialHours,\n minutes: initialMinutes,\n seconds: initialSeconds,\n };\n setSelectedDuration(initialDuration);\n setConfirmedDuration(initialDuration);\n timerPickerRef.current?.reset(options);\n },\n setValue: (value, options) => {\n setSelectedDuration(value);\n setConfirmedDuration(value);\n timerPickerRef.current?.setValue(value, options);\n },\n latestDuration: {\n hours: timerPickerRef.current?.latestDuration?.hours,\n minutes: timerPickerRef.current?.latestDuration?.minutes,\n seconds: timerPickerRef.current?.latestDuration?.seconds,\n },\n }));\n\n return (\n <Modal\n isVisible={visible}\n onOverlayPress={\n closeOnOverlayPress ? hideModalHandler : undefined\n }\n {...modalProps}\n testID=\"timer-picker-modal\">\n <View {...containerProps} style={styles.container}>\n <View\n {...contentContainerProps}\n style={styles.contentContainer}>\n {modalTitle ? (\n <Text\n {...modalTitleProps}\n style={styles.modalTitle}>\n {modalTitle}\n </Text>\n ) : null}\n <TimerPicker\n ref={timerPickerRef}\n onDurationChange={durationChangeHandler}\n initialHours={confirmedDuration.hours}\n initialMinutes={confirmedDuration.minutes}\n initialSeconds={confirmedDuration.seconds}\n aggressivelyGetLatestDuration={true}\n hideHours={hideHours}\n hideMinutes={hideMinutes}\n hideSeconds={hideSeconds}\n hourLimit={hourLimit}\n minuteLimit={minuteLimit}\n secondLimit={secondLimit}\n hourLabel={hourLabel}\n minuteLabel={minuteLabel}\n secondLabel={secondLabel}\n padWithNItems={padWithNItems}\n disableInfiniteScroll={disableInfiniteScroll}\n allowFontScaling={allowFontScaling}\n use12HourPicker={use12HourPicker}\n amLabel={amLabel}\n pmLabel={pmLabel}\n LinearGradient={LinearGradient}\n pickerContainerProps={pickerContainerProps}\n pickerGradientOverlayProps={\n pickerGradientOverlayProps\n }\n topPickerGradientOverlayProps={\n topPickerGradientOverlayProps\n }\n bottomPickerGradientOverlayProps={\n bottomPickerGradientOverlayProps\n }\n styles={customStyles}\n />\n <View\n {...buttonContainerProps}\n style={styles.buttonContainer}>\n {!hideCancelButton ? (\n <TouchableOpacity\n onPress={cancelHandler}\n {...buttonTouchableOpacityProps}>\n <Text\n style={[\n styles.button,\n styles.cancelButton,\n ]}>\n {cancelButtonText}\n </Text>\n </TouchableOpacity>\n ) : null}\n <TouchableOpacity\n onPress={confirmHandler}\n {...buttonTouchableOpacityProps}>\n <Text\n style={[\n styles.button,\n styles.confirmButton,\n ]}>\n {confirmButtonText}\n </Text>\n </TouchableOpacity>\n </View>\n </View>\n </View>\n </Modal>\n );\n }\n);\n\nexport default React.memo(TimerPickerModal);\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","forwardRef","useCallback","useEffect","useImperativeHandle","useRef","useState","View","Text","TouchableOpacity","TimerPicker","Modal","generateStyles","TimerPickerModal","visible","setIsVisible","onConfirm","onCancel","onDurationChange","closeOnOverlayPress","initialHours","initialMinutes","initialSeconds","hideHours","hideMinutes","hideSeconds","hourLimit","minuteLimit","secondLimit","hourLabel","minuteLabel","secondLabel","padWithNItems","disableInfiniteScroll","allowFontScaling","use12HourPicker","amLabel","pmLabel","hideCancelButton","confirmButtonText","cancelButtonText","modalTitle","LinearGradient","modalProps","containerProps","contentContainerProps","pickerContainerProps","buttonContainerProps","buttonTouchableOpacityProps","modalTitleProps","pickerGradientOverlayProps","topPickerGradientOverlayProps","bottomPickerGradientOverlayProps","styles","customStyles","ref","timerPickerRef","selectedDuration","setSelectedDuration","hours","minutes","seconds","confirmedDuration","setConfirmedDuration","reset","options","_timerPickerRef$curre","initialDuration","current","hideModalHandler","confirmHandler","_timerPickerRef$curre2","_latestDuration$hours","_latestDuration$minut","_latestDuration$secon","latestDuration","newDuration","cancelHandler","durationChangeHandler","duration","_timerPickerRef$curre4","_timerPickerRef$curre5","_timerPickerRef$curre6","setValue","value","_timerPickerRef$curre3","createElement","_extends","isVisible","onOverlayPress","undefined","testID","style","container","contentContainer","aggressivelyGetLatestDuration","buttonContainer","onPress","button","cancelButton","confirmButton","memo"],"sources":["index.tsx"],"sourcesContent":["import React, {\n MutableRefObject,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { View, Text, TouchableOpacity } from \"react-native\";\n\nimport TimerPicker, { TimerPickerProps, TimerPickerRef } from \"./TimerPicker\";\nimport Modal from \"./Modal\";\n\nimport {\n generateStyles,\n CustomTimerPickerModalStyles,\n} from \"./TimerPickerModal.styles\";\n\nexport interface TimerPickerModalRef {\n reset: (options?: { animated?: boolean }) => void;\n setValue: (\n value: {\n hours: number;\n minutes: number;\n seconds: number;\n },\n options?: { animated?: boolean }\n ) => void;\n latestDuration: {\n hours: MutableRefObject<number> | undefined;\n minutes: MutableRefObject<number> | undefined;\n seconds: MutableRefObject<number> | undefined;\n };\n}\n\nexport interface TimerPickerModalProps extends TimerPickerProps {\n visible: boolean;\n setIsVisible: (isVisible: boolean) => void;\n onConfirm: ({\n hours,\n minutes,\n seconds,\n }: {\n hours: number;\n minutes: number;\n seconds: number;\n }) => void;\n onCancel?: () => void;\n closeOnOverlayPress?: boolean;\n hideCancelButton?: boolean;\n confirmButtonText?: string;\n cancelButtonText?: string;\n modalTitle?: string;\n modalProps?: React.ComponentProps<typeof Modal>;\n containerProps?: React.ComponentProps<typeof View>;\n contentContainerProps?: React.ComponentProps<typeof View>;\n buttonContainerProps?: React.ComponentProps<typeof View>;\n buttonTouchableOpacityProps?: React.ComponentProps<typeof TouchableOpacity>;\n modalTitleProps?: React.ComponentProps<typeof Text>;\n styles?: CustomTimerPickerModalStyles;\n}\n\nconst TimerPickerModal = forwardRef<TimerPickerModalRef, TimerPickerModalProps>(\n (\n {\n visible,\n setIsVisible,\n onConfirm,\n onCancel,\n onDurationChange,\n closeOnOverlayPress,\n initialHours = 0,\n initialMinutes = 0,\n initialSeconds = 0,\n hideHours = false,\n hideMinutes = false,\n hideSeconds = false,\n hourLimit,\n minuteLimit,\n secondLimit,\n hourLabel,\n minuteLabel,\n secondLabel,\n padWithNItems = 1,\n disableInfiniteScroll = false,\n allowFontScaling = false,\n use12HourPicker,\n amLabel,\n pmLabel,\n hideCancelButton = false,\n confirmButtonText = \"Confirm\",\n cancelButtonText = \"Cancel\",\n modalTitle,\n LinearGradient,\n modalProps,\n containerProps,\n contentContainerProps,\n pickerContainerProps,\n buttonContainerProps,\n buttonTouchableOpacityProps,\n modalTitleProps,\n pickerGradientOverlayProps,\n topPickerGradientOverlayProps,\n bottomPickerGradientOverlayProps,\n styles: customStyles,\n },\n ref\n ): React.ReactElement => {\n const styles = generateStyles(customStyles);\n\n const timerPickerRef = useRef<TimerPickerRef>(null);\n\n const [selectedDuration, setSelectedDuration] = useState({\n hours: initialHours,\n minutes: initialMinutes,\n seconds: initialSeconds,\n });\n const [confirmedDuration, setConfirmedDuration] = useState({\n hours: initialHours,\n minutes: initialMinutes,\n seconds: initialSeconds,\n });\n\n const reset = (options?: { animated?: boolean }) => {\n const initialDuration = {\n hours: initialHours,\n minutes: initialMinutes,\n seconds: initialSeconds,\n };\n setSelectedDuration(initialDuration);\n setConfirmedDuration(initialDuration);\n timerPickerRef.current?.reset(options);\n };\n\n // reset state if the initial times change\n useEffect(() => {\n reset();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [initialHours, initialMinutes, initialSeconds]);\n\n const hideModalHandler = () => {\n setSelectedDuration({\n hours: confirmedDuration.hours,\n minutes: confirmedDuration.minutes,\n seconds: confirmedDuration.seconds,\n });\n setIsVisible(false);\n };\n\n const confirmHandler = () => {\n const latestDuration = timerPickerRef.current?.latestDuration;\n const newDuration = {\n hours: latestDuration?.hours?.current ?? selectedDuration.hours,\n minutes:\n latestDuration?.minutes?.current ??\n selectedDuration.minutes,\n seconds:\n latestDuration?.seconds?.current ??\n selectedDuration.seconds,\n };\n setConfirmedDuration(newDuration);\n onConfirm(newDuration);\n };\n\n const cancelHandler = () => {\n setIsVisible(false);\n setSelectedDuration(confirmedDuration);\n onCancel?.();\n };\n\n // wrapped in useCallback to avoid unnecessary re-renders of TimerPicker\n const durationChangeHandler = useCallback(\n (duration: { hours: number; minutes: number; seconds: number }) => {\n setSelectedDuration(duration);\n onDurationChange?.(duration);\n },\n [onDurationChange]\n );\n\n useImperativeHandle(ref, () => ({\n reset,\n setValue: (value, options) => {\n setSelectedDuration(value);\n setConfirmedDuration(value);\n timerPickerRef.current?.setValue(value, options);\n },\n latestDuration: {\n hours: timerPickerRef.current?.latestDuration?.hours,\n minutes: timerPickerRef.current?.latestDuration?.minutes,\n seconds: timerPickerRef.current?.latestDuration?.seconds,\n },\n }));\n\n return (\n <Modal\n isVisible={visible}\n onOverlayPress={\n closeOnOverlayPress ? hideModalHandler : undefined\n }\n {...modalProps}\n testID=\"timer-picker-modal\">\n <View {...containerProps} style={styles.container}>\n <View\n {...contentContainerProps}\n style={styles.contentContainer}>\n {modalTitle ? (\n <Text\n {...modalTitleProps}\n style={styles.modalTitle}>\n {modalTitle}\n </Text>\n ) : null}\n <TimerPicker\n ref={timerPickerRef}\n onDurationChange={durationChangeHandler}\n initialHours={confirmedDuration.hours}\n initialMinutes={confirmedDuration.minutes}\n initialSeconds={confirmedDuration.seconds}\n aggressivelyGetLatestDuration={true}\n hideHours={hideHours}\n hideMinutes={hideMinutes}\n hideSeconds={hideSeconds}\n hourLimit={hourLimit}\n minuteLimit={minuteLimit}\n secondLimit={secondLimit}\n hourLabel={hourLabel}\n minuteLabel={minuteLabel}\n secondLabel={secondLabel}\n padWithNItems={padWithNItems}\n disableInfiniteScroll={disableInfiniteScroll}\n allowFontScaling={allowFontScaling}\n use12HourPicker={use12HourPicker}\n amLabel={amLabel}\n pmLabel={pmLabel}\n LinearGradient={LinearGradient}\n pickerContainerProps={pickerContainerProps}\n pickerGradientOverlayProps={\n pickerGradientOverlayProps\n }\n topPickerGradientOverlayProps={\n topPickerGradientOverlayProps\n }\n bottomPickerGradientOverlayProps={\n bottomPickerGradientOverlayProps\n }\n styles={customStyles}\n />\n <View\n {...buttonContainerProps}\n style={styles.buttonContainer}>\n {!hideCancelButton ? (\n <TouchableOpacity\n onPress={cancelHandler}\n {...buttonTouchableOpacityProps}>\n <Text\n style={[\n styles.button,\n styles.cancelButton,\n ]}>\n {cancelButtonText}\n </Text>\n </TouchableOpacity>\n ) : null}\n <TouchableOpacity\n onPress={confirmHandler}\n {...buttonTouchableOpacityProps}>\n <Text\n style={[\n styles.button,\n styles.confirmButton,\n ]}>\n {confirmButtonText}\n </Text>\n </TouchableOpacity>\n </View>\n </View>\n </View>\n </Modal>\n );\n }\n);\n\nexport default React.memo(TimerPickerModal);\n"],"mappings":"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"}
@@ -1,290 +1,17 @@
1
- import { Text, View } from "react-native";
2
1
  import type { CustomTimerPickerStyles } from "./TimerPicker/TimerPicker.styles";
3
- import { ComponentProps } from "react";
4
2
  export interface CustomTimerPickerModalStyles extends CustomTimerPickerStyles {
5
- container?: ComponentProps<typeof View>;
6
- contentContainer?: ComponentProps<typeof View>;
7
- buttonContainer?: ComponentProps<typeof View>;
8
- button?: ComponentProps<typeof Text>;
9
- cancelButton?: ComponentProps<typeof Text>;
10
- confirmButton?: ComponentProps<typeof Text>;
11
- modalTitle?: ComponentProps<typeof Text>;
3
+ container?: any;
4
+ contentContainer?: any;
5
+ buttonContainer?: any;
6
+ button?: any;
7
+ cancelButton?: any;
8
+ confirmButton?: any;
9
+ modalTitle?: any;
12
10
  }
13
11
  export declare const generateStyles: (customStyles: CustomTimerPickerModalStyles | undefined) => {
14
- container: {
15
- children?: import("react").ReactNode;
16
- hitSlop?: import("react-native").Insets | undefined;
17
- id?: string | undefined;
18
- onLayout?: ((event: import("react-native").LayoutChangeEvent) => void) | undefined;
19
- pointerEvents?: "box-none" | "none" | "box-only" | "auto" | undefined;
20
- removeClippedSubviews?: boolean | undefined;
21
- style?: import("react-native").StyleProp<import("react-native").ViewStyle>;
22
- testID?: string | undefined;
23
- nativeID?: string | undefined;
24
- collapsable?: boolean | undefined;
25
- needsOffscreenAlphaCompositing?: boolean | undefined;
26
- renderToHardwareTextureAndroid?: boolean | undefined;
27
- focusable?: boolean | undefined;
28
- shouldRasterizeIOS?: boolean | undefined;
29
- isTVSelectable?: boolean | undefined;
30
- hasTVPreferredFocus?: boolean | undefined;
31
- tvParallaxProperties?: import("react-native").TVParallaxProperties | undefined;
32
- tvParallaxShiftDistanceX?: number | undefined;
33
- tvParallaxShiftDistanceY?: number | undefined;
34
- tvParallaxTiltAngle?: number | undefined;
35
- tvParallaxMagnification?: number | undefined;
36
- onStartShouldSetResponder?: ((event: import("react-native").GestureResponderEvent) => boolean) | undefined;
37
- onMoveShouldSetResponder?: ((event: import("react-native").GestureResponderEvent) => boolean) | undefined;
38
- onResponderEnd?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
39
- onResponderGrant?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
40
- onResponderReject?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
41
- onResponderMove?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
42
- onResponderRelease?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
43
- onResponderStart?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
44
- onResponderTerminationRequest?: ((event: import("react-native").GestureResponderEvent) => boolean) | undefined;
45
- onResponderTerminate?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
46
- onStartShouldSetResponderCapture?: ((event: import("react-native").GestureResponderEvent) => boolean) | undefined;
47
- onMoveShouldSetResponderCapture?: ((event: import("react-native").GestureResponderEvent) => boolean) | undefined;
48
- onTouchStart?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
49
- onTouchMove?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
50
- onTouchEnd?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
51
- onTouchCancel?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
52
- onTouchEndCapture?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
53
- onPointerEnter?: ((event: import("react-native").PointerEvent) => void) | undefined;
54
- onPointerEnterCapture?: ((event: import("react-native").PointerEvent) => void) | undefined;
55
- onPointerLeave?: ((event: import("react-native").PointerEvent) => void) | undefined;
56
- onPointerLeaveCapture?: ((event: import("react-native").PointerEvent) => void) | undefined;
57
- onPointerMove?: ((event: import("react-native").PointerEvent) => void) | undefined;
58
- onPointerMoveCapture?: ((event: import("react-native").PointerEvent) => void) | undefined;
59
- onPointerCancel?: ((event: import("react-native").PointerEvent) => void) | undefined;
60
- onPointerCancelCapture?: ((event: import("react-native").PointerEvent) => void) | undefined;
61
- onPointerDown?: ((event: import("react-native").PointerEvent) => void) | undefined;
62
- onPointerDownCapture?: ((event: import("react-native").PointerEvent) => void) | undefined;
63
- onPointerUp?: ((event: import("react-native").PointerEvent) => void) | undefined;
64
- onPointerUpCapture?: ((event: import("react-native").PointerEvent) => void) | undefined;
65
- accessible?: boolean | undefined;
66
- accessibilityActions?: readonly Readonly<{
67
- name: string;
68
- label?: string | undefined;
69
- }>[] | undefined;
70
- accessibilityLabel?: string | undefined;
71
- 'aria-label'?: string | undefined;
72
- accessibilityRole?: import("react-native").AccessibilityRole | undefined;
73
- accessibilityState?: import("react-native").AccessibilityState | undefined;
74
- 'aria-busy'?: boolean | undefined;
75
- 'aria-checked'?: boolean | "mixed" | undefined;
76
- 'aria-disabled'?: boolean | undefined;
77
- 'aria-expanded'?: boolean | undefined;
78
- 'aria-selected'?: boolean | undefined;
79
- 'aria-labelledby'?: string | undefined;
80
- accessibilityHint?: string | undefined;
81
- accessibilityValue?: import("react-native").AccessibilityValue | undefined;
82
- 'aria-valuemax'?: number | undefined;
83
- 'aria-valuemin'?: number | undefined;
84
- 'aria-valuenow'?: number | undefined;
85
- 'aria-valuetext'?: string | undefined;
86
- onAccessibilityAction?: ((event: import("react-native").AccessibilityActionEvent) => void) | undefined;
87
- importantForAccessibility?: "auto" | "yes" | "no" | "no-hide-descendants" | undefined;
88
- 'aria-hidden'?: boolean | undefined;
89
- 'aria-live'?: "polite" | "assertive" | "off" | undefined;
90
- 'aria-modal'?: boolean | undefined;
91
- role?: import("react-native").Role | undefined;
92
- accessibilityLiveRegion?: "none" | "polite" | "assertive" | undefined;
93
- accessibilityLabelledBy?: string | string[] | undefined;
94
- accessibilityElementsHidden?: boolean | undefined;
95
- accessibilityViewIsModal?: boolean | undefined;
96
- onAccessibilityEscape?: (() => void) | undefined;
97
- onAccessibilityTap?: (() => void) | undefined;
98
- onMagicTap?: (() => void) | undefined;
99
- accessibilityIgnoresInvertColors?: boolean | undefined;
100
- accessibilityLanguage?: string | undefined;
101
- justifyContent: "center";
102
- alignItems: "center";
103
- overflow: "hidden";
104
- };
105
- contentContainer: {
106
- children?: import("react").ReactNode;
107
- hitSlop?: import("react-native").Insets | undefined;
108
- id?: string | undefined;
109
- onLayout?: ((event: import("react-native").LayoutChangeEvent) => void) | undefined;
110
- pointerEvents?: "box-none" | "none" | "box-only" | "auto" | undefined;
111
- removeClippedSubviews?: boolean | undefined;
112
- style?: import("react-native").StyleProp<import("react-native").ViewStyle>;
113
- testID?: string | undefined;
114
- nativeID?: string | undefined;
115
- collapsable?: boolean | undefined;
116
- needsOffscreenAlphaCompositing?: boolean | undefined;
117
- renderToHardwareTextureAndroid?: boolean | undefined;
118
- focusable?: boolean | undefined;
119
- shouldRasterizeIOS?: boolean | undefined;
120
- isTVSelectable?: boolean | undefined;
121
- hasTVPreferredFocus?: boolean | undefined;
122
- tvParallaxProperties?: import("react-native").TVParallaxProperties | undefined;
123
- tvParallaxShiftDistanceX?: number | undefined;
124
- tvParallaxShiftDistanceY?: number | undefined;
125
- tvParallaxTiltAngle?: number | undefined;
126
- tvParallaxMagnification?: number | undefined;
127
- onStartShouldSetResponder?: ((event: import("react-native").GestureResponderEvent) => boolean) | undefined;
128
- onMoveShouldSetResponder?: ((event: import("react-native").GestureResponderEvent) => boolean) | undefined;
129
- onResponderEnd?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
130
- onResponderGrant?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
131
- onResponderReject?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
132
- onResponderMove?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
133
- onResponderRelease?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
134
- onResponderStart?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
135
- onResponderTerminationRequest?: ((event: import("react-native").GestureResponderEvent) => boolean) | undefined;
136
- onResponderTerminate?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
137
- onStartShouldSetResponderCapture?: ((event: import("react-native").GestureResponderEvent) => boolean) | undefined;
138
- onMoveShouldSetResponderCapture?: ((event: import("react-native").GestureResponderEvent) => boolean) | undefined;
139
- onTouchStart?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
140
- onTouchMove?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
141
- onTouchEnd?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
142
- onTouchCancel?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
143
- onTouchEndCapture?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
144
- onPointerEnter?: ((event: import("react-native").PointerEvent) => void) | undefined;
145
- onPointerEnterCapture?: ((event: import("react-native").PointerEvent) => void) | undefined;
146
- onPointerLeave?: ((event: import("react-native").PointerEvent) => void) | undefined;
147
- onPointerLeaveCapture?: ((event: import("react-native").PointerEvent) => void) | undefined;
148
- onPointerMove?: ((event: import("react-native").PointerEvent) => void) | undefined;
149
- onPointerMoveCapture?: ((event: import("react-native").PointerEvent) => void) | undefined;
150
- onPointerCancel?: ((event: import("react-native").PointerEvent) => void) | undefined;
151
- onPointerCancelCapture?: ((event: import("react-native").PointerEvent) => void) | undefined;
152
- onPointerDown?: ((event: import("react-native").PointerEvent) => void) | undefined;
153
- onPointerDownCapture?: ((event: import("react-native").PointerEvent) => void) | undefined;
154
- onPointerUp?: ((event: import("react-native").PointerEvent) => void) | undefined;
155
- onPointerUpCapture?: ((event: import("react-native").PointerEvent) => void) | undefined;
156
- accessible?: boolean | undefined;
157
- accessibilityActions?: readonly Readonly<{
158
- name: string;
159
- label?: string | undefined;
160
- }>[] | undefined;
161
- accessibilityLabel?: string | undefined;
162
- 'aria-label'?: string | undefined;
163
- accessibilityRole?: import("react-native").AccessibilityRole | undefined;
164
- accessibilityState?: import("react-native").AccessibilityState | undefined;
165
- 'aria-busy'?: boolean | undefined;
166
- 'aria-checked'?: boolean | "mixed" | undefined;
167
- 'aria-disabled'?: boolean | undefined;
168
- 'aria-expanded'?: boolean | undefined;
169
- 'aria-selected'?: boolean | undefined;
170
- 'aria-labelledby'?: string | undefined;
171
- accessibilityHint?: string | undefined;
172
- accessibilityValue?: import("react-native").AccessibilityValue | undefined;
173
- 'aria-valuemax'?: number | undefined;
174
- 'aria-valuemin'?: number | undefined;
175
- 'aria-valuenow'?: number | undefined;
176
- 'aria-valuetext'?: string | undefined;
177
- onAccessibilityAction?: ((event: import("react-native").AccessibilityActionEvent) => void) | undefined;
178
- importantForAccessibility?: "auto" | "yes" | "no" | "no-hide-descendants" | undefined;
179
- 'aria-hidden'?: boolean | undefined;
180
- 'aria-live'?: "polite" | "assertive" | "off" | undefined;
181
- 'aria-modal'?: boolean | undefined;
182
- role?: import("react-native").Role | undefined;
183
- accessibilityLiveRegion?: "none" | "polite" | "assertive" | undefined;
184
- accessibilityLabelledBy?: string | string[] | undefined;
185
- accessibilityElementsHidden?: boolean | undefined;
186
- accessibilityViewIsModal?: boolean | undefined;
187
- onAccessibilityEscape?: (() => void) | undefined;
188
- onAccessibilityTap?: (() => void) | undefined;
189
- onMagicTap?: (() => void) | undefined;
190
- accessibilityIgnoresInvertColors?: boolean | undefined;
191
- accessibilityLanguage?: string | undefined;
192
- backgroundColor: string;
193
- justifyContent: "center";
194
- alignItems: "center";
195
- borderRadius: number;
196
- padding: number;
197
- };
198
- buttonContainer: {
199
- children?: import("react").ReactNode;
200
- hitSlop?: import("react-native").Insets | undefined;
201
- id?: string | undefined;
202
- onLayout?: ((event: import("react-native").LayoutChangeEvent) => void) | undefined;
203
- pointerEvents?: "box-none" | "none" | "box-only" | "auto" | undefined;
204
- removeClippedSubviews?: boolean | undefined;
205
- style?: import("react-native").StyleProp<import("react-native").ViewStyle>;
206
- testID?: string | undefined;
207
- nativeID?: string | undefined;
208
- collapsable?: boolean | undefined;
209
- needsOffscreenAlphaCompositing?: boolean | undefined;
210
- renderToHardwareTextureAndroid?: boolean | undefined;
211
- focusable?: boolean | undefined;
212
- shouldRasterizeIOS?: boolean | undefined;
213
- isTVSelectable?: boolean | undefined;
214
- hasTVPreferredFocus?: boolean | undefined;
215
- tvParallaxProperties?: import("react-native").TVParallaxProperties | undefined;
216
- tvParallaxShiftDistanceX?: number | undefined;
217
- tvParallaxShiftDistanceY?: number | undefined;
218
- tvParallaxTiltAngle?: number | undefined;
219
- tvParallaxMagnification?: number | undefined;
220
- onStartShouldSetResponder?: ((event: import("react-native").GestureResponderEvent) => boolean) | undefined;
221
- onMoveShouldSetResponder?: ((event: import("react-native").GestureResponderEvent) => boolean) | undefined;
222
- onResponderEnd?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
223
- onResponderGrant?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
224
- onResponderReject?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
225
- onResponderMove?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
226
- onResponderRelease?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
227
- onResponderStart?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
228
- onResponderTerminationRequest?: ((event: import("react-native").GestureResponderEvent) => boolean) | undefined;
229
- onResponderTerminate?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
230
- onStartShouldSetResponderCapture?: ((event: import("react-native").GestureResponderEvent) => boolean) | undefined;
231
- onMoveShouldSetResponderCapture?: ((event: import("react-native").GestureResponderEvent) => boolean) | undefined;
232
- onTouchStart?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
233
- onTouchMove?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
234
- onTouchEnd?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
235
- onTouchCancel?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
236
- onTouchEndCapture?: ((event: import("react-native").GestureResponderEvent) => void) | undefined;
237
- onPointerEnter?: ((event: import("react-native").PointerEvent) => void) | undefined;
238
- onPointerEnterCapture?: ((event: import("react-native").PointerEvent) => void) | undefined;
239
- onPointerLeave?: ((event: import("react-native").PointerEvent) => void) | undefined;
240
- onPointerLeaveCapture?: ((event: import("react-native").PointerEvent) => void) | undefined;
241
- onPointerMove?: ((event: import("react-native").PointerEvent) => void) | undefined;
242
- onPointerMoveCapture?: ((event: import("react-native").PointerEvent) => void) | undefined;
243
- onPointerCancel?: ((event: import("react-native").PointerEvent) => void) | undefined;
244
- onPointerCancelCapture?: ((event: import("react-native").PointerEvent) => void) | undefined;
245
- onPointerDown?: ((event: import("react-native").PointerEvent) => void) | undefined;
246
- onPointerDownCapture?: ((event: import("react-native").PointerEvent) => void) | undefined;
247
- onPointerUp?: ((event: import("react-native").PointerEvent) => void) | undefined;
248
- onPointerUpCapture?: ((event: import("react-native").PointerEvent) => void) | undefined;
249
- accessible?: boolean | undefined;
250
- accessibilityActions?: readonly Readonly<{
251
- name: string;
252
- label?: string | undefined;
253
- }>[] | undefined;
254
- accessibilityLabel?: string | undefined;
255
- 'aria-label'?: string | undefined;
256
- accessibilityRole?: import("react-native").AccessibilityRole | undefined;
257
- accessibilityState?: import("react-native").AccessibilityState | undefined;
258
- 'aria-busy'?: boolean | undefined;
259
- 'aria-checked'?: boolean | "mixed" | undefined;
260
- 'aria-disabled'?: boolean | undefined;
261
- 'aria-expanded'?: boolean | undefined;
262
- 'aria-selected'?: boolean | undefined;
263
- 'aria-labelledby'?: string | undefined;
264
- accessibilityHint?: string | undefined;
265
- accessibilityValue?: import("react-native").AccessibilityValue | undefined;
266
- 'aria-valuemax'?: number | undefined;
267
- 'aria-valuemin'?: number | undefined;
268
- 'aria-valuenow'?: number | undefined;
269
- 'aria-valuetext'?: string | undefined;
270
- onAccessibilityAction?: ((event: import("react-native").AccessibilityActionEvent) => void) | undefined;
271
- importantForAccessibility?: "auto" | "yes" | "no" | "no-hide-descendants" | undefined;
272
- 'aria-hidden'?: boolean | undefined;
273
- 'aria-live'?: "polite" | "assertive" | "off" | undefined;
274
- 'aria-modal'?: boolean | undefined;
275
- role?: import("react-native").Role | undefined;
276
- accessibilityLiveRegion?: "none" | "polite" | "assertive" | undefined;
277
- accessibilityLabelledBy?: string | string[] | undefined;
278
- accessibilityElementsHidden?: boolean | undefined;
279
- accessibilityViewIsModal?: boolean | undefined;
280
- onAccessibilityEscape?: (() => void) | undefined;
281
- onAccessibilityTap?: (() => void) | undefined;
282
- onMagicTap?: (() => void) | undefined;
283
- accessibilityIgnoresInvertColors?: boolean | undefined;
284
- accessibilityLanguage?: string | undefined;
285
- flexDirection: "row";
286
- marginTop: number;
287
- };
12
+ container: any;
13
+ contentContainer: any;
14
+ buttonContainer: any;
288
15
  button: any;
289
16
  cancelButton: any;
290
17
  confirmButton: any;
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "url": "https://github.com/troberts-28"
7
7
  },
8
8
  "license": "MIT",
9
- "version": "1.5.0",
9
+ "version": "1.5.2",
10
10
  "main": "dist/commonjs/index.js",
11
11
  "types": "dist/typescript/src/index.d.ts",
12
12
  "scripts": {
@@ -1,17 +1,16 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { StyleSheet, Text, View } from "react-native";
2
+ import { StyleSheet } from "react-native";
3
3
 
4
4
  import type { CustomTimerPickerStyles } from "./TimerPicker/TimerPicker.styles";
5
- import { ComponentProps } from "react";
6
5
 
7
6
  export interface CustomTimerPickerModalStyles extends CustomTimerPickerStyles {
8
- container?: ComponentProps<typeof View>;
9
- contentContainer?: ComponentProps<typeof View>;
10
- buttonContainer?: ComponentProps<typeof View>;
11
- button?: ComponentProps<typeof Text>;
12
- cancelButton?: ComponentProps<typeof Text>;
13
- confirmButton?: ComponentProps<typeof Text>;
14
- modalTitle?: ComponentProps<typeof Text>;
7
+ container?: any;
8
+ contentContainer?: any;
9
+ buttonContainer?: any;
10
+ button?: any;
11
+ cancelButton?: any;
12
+ confirmButton?: any;
13
+ modalTitle?: any;
15
14
  }
16
15
 
17
16
  const DARK_MODE_BACKGROUND_COLOR = "#232323";
@@ -2,6 +2,7 @@ import React, {
2
2
  MutableRefObject,
3
3
  forwardRef,
4
4
  useCallback,
5
+ useEffect,
5
6
  useImperativeHandle,
6
7
  useRef,
7
8
  useState,
@@ -121,6 +122,23 @@ const TimerPickerModal = forwardRef<TimerPickerModalRef, TimerPickerModalProps>(
121
122
  seconds: initialSeconds,
122
123
  });
123
124
 
125
+ const reset = (options?: { animated?: boolean }) => {
126
+ const initialDuration = {
127
+ hours: initialHours,
128
+ minutes: initialMinutes,
129
+ seconds: initialSeconds,
130
+ };
131
+ setSelectedDuration(initialDuration);
132
+ setConfirmedDuration(initialDuration);
133
+ timerPickerRef.current?.reset(options);
134
+ };
135
+
136
+ // reset state if the initial times change
137
+ useEffect(() => {
138
+ reset();
139
+ // eslint-disable-next-line react-hooks/exhaustive-deps
140
+ }, [initialHours, initialMinutes, initialSeconds]);
141
+
124
142
  const hideModalHandler = () => {
125
143
  setSelectedDuration({
126
144
  hours: confirmedDuration.hours,
@@ -161,16 +179,7 @@ const TimerPickerModal = forwardRef<TimerPickerModalRef, TimerPickerModalProps>(
161
179
  );
162
180
 
163
181
  useImperativeHandle(ref, () => ({
164
- reset: (options) => {
165
- const initialDuration = {
166
- hours: initialHours,
167
- minutes: initialMinutes,
168
- seconds: initialSeconds,
169
- };
170
- setSelectedDuration(initialDuration);
171
- setConfirmedDuration(initialDuration);
172
- timerPickerRef.current?.reset(options);
173
- },
182
+ reset,
174
183
  setValue: (value, options) => {
175
184
  setSelectedDuration(value);
176
185
  setConfirmedDuration(value);