react-native-timer-picker 1.4.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -333,6 +333,7 @@ return (
333
333
  | secondLabel | Label for the seconds picker | String \| React.ReactElement | s | false |
334
334
  | padWithNItems | Number of items to pad the picker with on either side | Number | 1 | false |
335
335
  | aggressivelyGetLatestDuration | Set to True to ask DurationScroll to aggressively update the latestDuration ref | Boolean | false | false |
336
+ | allowFontScaling | Allow font in the picker to scale with accessibility settings | Boolean | false | false |
336
337
  | use12HourPicker | Switch the hour picker to 12-hour format with an AM / PM label | Boolean | false | false |
337
338
  | amLabel | Set the AM label if using the 12-hour picker | String | am | false |
338
339
  | pmLabel | Set the PM label if using the 12-hour picker | String | pm | false |
@@ -24,6 +24,7 @@ const DurationScroll = /*#__PURE__*/(0, _react.forwardRef)(({
24
24
  disableInfiniteScroll = false,
25
25
  limit,
26
26
  aggressivelyGetLatestDuration,
27
+ allowFontScaling = false,
27
28
  is12HourPicker,
28
29
  amLabel,
29
30
  pmLabel,
@@ -96,14 +97,16 @@ const DurationScroll = /*#__PURE__*/(0, _react.forwardRef)(({
96
97
  style: styles.pickerItemContainer,
97
98
  testID: "picker-item"
98
99
  }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
100
+ allowFontScaling: allowFontScaling,
99
101
  style: [styles.pickerItem, intItem > adjustedLimited.max || intItem < adjustedLimited.min ? styles.disabledPickerItem : {}]
100
102
  }, stringItem), is12HourPicker ? /*#__PURE__*/_react.default.createElement(_reactNative.View, {
101
103
  style: styles.pickerAmPmContainer,
102
104
  pointerEvents: "none"
103
105
  }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
104
- style: [styles.pickerAmPmLabel]
106
+ style: [styles.pickerAmPmLabel],
107
+ allowFontScaling: allowFontScaling
105
108
  }, isAm ? amLabel : pmLabel)) : null);
106
- }, [adjustedLimited.max, adjustedLimited.min, amLabel, is12HourPicker, pmLabel, styles.disabledPickerItem, styles.pickerAmPmContainer, styles.pickerAmPmLabel, styles.pickerItem, styles.pickerItemContainer]);
109
+ }, [adjustedLimited.max, adjustedLimited.min, allowFontScaling, amLabel, is12HourPicker, pmLabel, styles.disabledPickerItem, styles.pickerAmPmContainer, styles.pickerAmPmLabel, styles.pickerItem, styles.pickerItemContainer]);
107
110
  const onScroll = (0, _react.useCallback)(e => {
108
111
  // this function is only used when the picker is in a modal
109
112
  // it is used to ensure that the modal gets the latest duration on clicking
@@ -205,6 +208,7 @@ const DurationScroll = /*#__PURE__*/(0, _react.forwardRef)(({
205
208
  style: styles.pickerLabelContainer,
206
209
  pointerEvents: "none"
207
210
  }, typeof label === "string" ? /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
211
+ allowFontScaling: allowFontScaling,
208
212
  style: styles.pickerLabel
209
213
  }, label) : label ?? null), LinearGradient ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(LinearGradient, _extends({
210
214
  colors: [styles.pickerContainer.backgroundColor ?? "white", (0, _colorToRgba.colorToRgba)({
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_generateNumbers","_colorToRgba","_getAdjustedLimit","_getScrollIndex","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","KEY_EXTRACTOR","_","index","toString","DurationScroll","forwardRef","numberOfItems","label","initialValue","onDurationChange","padNumbersWithZero","disableInfiniteScroll","limit","aggressivelyGetLatestDuration","is12HourPicker","amLabel","pmLabel","padWithNItems","pickerGradientOverlayProps","topPickerGradientOverlayProps","bottomPickerGradientOverlayProps","LinearGradient","testID","styles","ref","data","generateNumbers","repeatNTimes","generate12HourNumbers","numberOfItemsToShow","adjustedLimited","getAdjustedLimit","initialScrollIndex","getScrollIndex","value","latestDuration","useRef","flatListRef","useImperativeHandle","reset","options","_flatListRef$current","current","scrollToIndex","animated","setValue","_flatListRef$current2","renderItem","useCallback","item","stringItem","intItem","isAm","parseInt","includes","replace","createElement","View","style","pickerItemContainer","Text","pickerItem","max","min","disabledPickerItem","pickerAmPmContainer","pointerEvents","pickerAmPmLabel","onScroll","newIndex","Math","round","nativeEvent","contentOffset","y","height","newDuration","onMomentumScrollEnd","_flatListRef$current3","targetScrollIndex","_flatListRef$current4","onViewableItemsChanged","viewableItems","_viewableItems$","_viewableItems$2","_flatListRef$current5","_flatListRef$current6","getItemLayout","offset","viewabilityConfigCallbackPairs","viewabilityConfig","viewAreaCoveragePercentThreshold","overflow","FlatList","windowSize","keyExtractor","showsVerticalScrollIndicator","decelerationRate","scrollEventThrottle","snapToAlignment","snapToOffsets","Array","map","undefined","pickerLabelContainer","pickerLabel","Fragment","colors","pickerContainer","backgroundColor","colorToRgba","color","opacity","start","x","end","pickerGradientOverlay","top","bottom","_default","exports","React","memo"],"sources":["DurationScroll.tsx"],"sourcesContent":["import React, {\n useRef,\n useCallback,\n forwardRef,\n useImperativeHandle,\n MutableRefObject,\n} from \"react\";\nimport {\n View,\n Text,\n FlatList,\n ViewabilityConfigCallbackPairs,\n ViewToken,\n NativeSyntheticEvent,\n NativeScrollEvent,\n} from \"react-native\";\n\nimport {\n generate12HourNumbers,\n generateNumbers,\n} from \"../../utils/generateNumbers\";\nimport { colorToRgba } from \"../../utils/colorToRgba\";\nimport { generateStyles } from \"./TimerPicker.styles\";\nimport { getAdjustedLimit } from \"../../utils/getAdjustedLimit\";\nimport { getScrollIndex } from \"../../utils/getScrollIndex\";\n\nexport interface DurationScrollRef {\n reset: (options?: { animated?: boolean }) => void;\n setValue: (value: number, options?: { animated?: boolean }) => void;\n latestDuration: MutableRefObject<number>;\n}\n\ntype LinearGradientPoint = {\n x: number;\n y: number;\n};\n\nexport type LinearGradientProps = React.ComponentProps<typeof View> & {\n colors: string[];\n locations?: number[] | null;\n start?: LinearGradientPoint | null;\n end?: LinearGradientPoint | null;\n};\n\nexport type LimitType = {\n max?: number;\n min?: number;\n};\n\ninterface DurationScrollProps {\n numberOfItems: number;\n label?: string | React.ReactElement;\n initialValue?: number;\n onDurationChange: (duration: number) => void;\n padNumbersWithZero?: boolean;\n disableInfiniteScroll?: boolean;\n limit?: LimitType;\n aggressivelyGetLatestDuration: boolean;\n is12HourPicker?: boolean;\n amLabel?: string;\n pmLabel?: string;\n padWithNItems: number;\n pickerGradientOverlayProps?: Partial<LinearGradientProps>;\n topPickerGradientOverlayProps?: Partial<LinearGradientProps>;\n bottomPickerGradientOverlayProps?: Partial<LinearGradientProps>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LinearGradient?: any;\n testID?: string;\n styles: ReturnType<typeof generateStyles>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst KEY_EXTRACTOR = (_: any, index: number) => index.toString();\n\nconst DurationScroll = forwardRef<DurationScrollRef, DurationScrollProps>(\n (\n {\n numberOfItems,\n label,\n initialValue = 0,\n onDurationChange,\n padNumbersWithZero = false,\n disableInfiniteScroll = false,\n limit,\n aggressivelyGetLatestDuration,\n is12HourPicker,\n amLabel,\n pmLabel,\n padWithNItems,\n pickerGradientOverlayProps,\n topPickerGradientOverlayProps,\n bottomPickerGradientOverlayProps,\n LinearGradient,\n testID,\n styles,\n },\n ref\n ): React.ReactElement => {\n const data = !is12HourPicker\n ? generateNumbers(numberOfItems, {\n padNumbersWithZero,\n repeatNTimes: 3,\n disableInfiniteScroll,\n padWithNItems,\n })\n : generate12HourNumbers({\n padNumbersWithZero,\n repeatNTimes: 3,\n disableInfiniteScroll,\n padWithNItems,\n });\n\n const numberOfItemsToShow = 1 + padWithNItems * 2;\n\n const adjustedLimited = getAdjustedLimit(limit, numberOfItems);\n\n const initialScrollIndex = getScrollIndex({\n value: initialValue,\n numberOfItems,\n padWithNItems,\n disableInfiniteScroll,\n });\n\n const latestDuration = useRef(0);\n\n const flatListRef = useRef<FlatList | null>(null);\n\n useImperativeHandle(ref, () => ({\n reset: (options) => {\n flatListRef.current?.scrollToIndex({\n animated: options?.animated ?? false,\n index: initialScrollIndex,\n });\n },\n setValue: (value, options) => {\n flatListRef.current?.scrollToIndex({\n animated: options?.animated ?? false,\n index: getScrollIndex({\n value: value,\n numberOfItems,\n padWithNItems,\n disableInfiniteScroll,\n }),\n });\n },\n latestDuration: latestDuration,\n }));\n\n const renderItem = useCallback(\n ({ item }: { item: string }) => {\n let stringItem = item;\n let intItem: number;\n let isAm: boolean | undefined;\n\n if (!is12HourPicker) {\n intItem = parseInt(item);\n } else {\n isAm = item.includes(\"AM\");\n stringItem = item.replace(/\\s[AP]M/g, \"\");\n intItem = parseInt(stringItem);\n }\n\n return (\n <View\n key={item}\n style={styles.pickerItemContainer}\n testID=\"picker-item\">\n <Text\n style={[\n styles.pickerItem,\n intItem > adjustedLimited.max ||\n intItem < adjustedLimited.min\n ? styles.disabledPickerItem\n : {},\n ]}>\n {stringItem}\n </Text>\n {is12HourPicker ? (\n <View\n style={styles.pickerAmPmContainer}\n pointerEvents=\"none\">\n <Text style={[styles.pickerAmPmLabel]}>\n {isAm ? amLabel : pmLabel}\n </Text>\n </View>\n ) : null}\n </View>\n );\n },\n [\n adjustedLimited.max,\n adjustedLimited.min,\n amLabel,\n is12HourPicker,\n pmLabel,\n styles.disabledPickerItem,\n styles.pickerAmPmContainer,\n styles.pickerAmPmLabel,\n styles.pickerItem,\n styles.pickerItemContainer,\n ]\n );\n\n const onScroll = useCallback(\n (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n // this function is only used when the picker is in a modal\n // it is used to ensure that the modal gets the latest duration on clicking\n // the confirm button, even if the scrollview is still scrolling\n const newIndex = Math.round(\n e.nativeEvent.contentOffset.y /\n styles.pickerItemContainer.height\n );\n let newDuration =\n (disableInfiniteScroll\n ? newIndex\n : newIndex + padWithNItems) %\n (numberOfItems + 1);\n\n // check limits\n if (newDuration > adjustedLimited.max) {\n newDuration = adjustedLimited.max;\n } else if (newDuration < adjustedLimited.min) {\n newDuration = adjustedLimited.min;\n }\n latestDuration.current = newDuration;\n },\n [\n adjustedLimited.max,\n adjustedLimited.min,\n disableInfiniteScroll,\n numberOfItems,\n padWithNItems,\n styles.pickerItemContainer.height,\n ]\n );\n\n const onMomentumScrollEnd = useCallback(\n (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n const newIndex = Math.round(\n e.nativeEvent.contentOffset.y /\n styles.pickerItemContainer.height\n );\n let newDuration =\n (disableInfiniteScroll\n ? newIndex\n : newIndex + padWithNItems) %\n (numberOfItems + 1);\n\n // check limits\n if (newDuration > adjustedLimited.max) {\n const targetScrollIndex =\n newIndex - (newDuration - adjustedLimited.max);\n flatListRef.current?.scrollToIndex({\n animated: true,\n index:\n // guard against scrolling beyond end of list\n targetScrollIndex >= 0\n ? targetScrollIndex\n : adjustedLimited.max - 1,\n }); // scroll down to max\n newDuration = adjustedLimited.max;\n } else if (newDuration < adjustedLimited.min) {\n const targetScrollIndex =\n newIndex + (adjustedLimited.min - newDuration);\n flatListRef.current?.scrollToIndex({\n animated: true,\n index:\n // guard against scrolling beyond end of list\n targetScrollIndex <= data.length - 1\n ? targetScrollIndex\n : adjustedLimited.min,\n }); // scroll up to min\n newDuration = adjustedLimited.min;\n }\n\n onDurationChange(newDuration);\n },\n [\n adjustedLimited.max,\n adjustedLimited.min,\n data.length,\n disableInfiniteScroll,\n numberOfItems,\n onDurationChange,\n padWithNItems,\n styles.pickerItemContainer.height,\n ]\n );\n\n const onViewableItemsChanged = useCallback(\n ({ viewableItems }: { viewableItems: ViewToken[] }) => {\n if (\n viewableItems[0]?.index &&\n viewableItems[0].index < numberOfItems * 0.5\n ) {\n flatListRef.current?.scrollToIndex({\n animated: false,\n index: viewableItems[0].index + numberOfItems,\n });\n } else if (\n viewableItems[0]?.index &&\n viewableItems[0].index >= numberOfItems * 2.5\n ) {\n flatListRef.current?.scrollToIndex({\n animated: false,\n index: viewableItems[0].index - numberOfItems,\n });\n }\n },\n [numberOfItems]\n );\n\n const getItemLayout = useCallback(\n (_: ArrayLike<string> | null | undefined, index: number) => ({\n length: styles.pickerItemContainer.height,\n offset: styles.pickerItemContainer.height * index,\n index,\n }),\n [styles.pickerItemContainer.height]\n );\n\n const viewabilityConfigCallbackPairs =\n useRef<ViewabilityConfigCallbackPairs>([\n {\n viewabilityConfig: { viewAreaCoveragePercentThreshold: 25 },\n onViewableItemsChanged: onViewableItemsChanged,\n },\n ]);\n\n return (\n <View\n testID={testID}\n style={{\n height:\n styles.pickerItemContainer.height * numberOfItemsToShow,\n overflow: \"hidden\",\n }}>\n <FlatList\n ref={flatListRef}\n data={data}\n getItemLayout={getItemLayout}\n initialScrollIndex={initialScrollIndex}\n windowSize={numberOfItemsToShow}\n renderItem={renderItem}\n keyExtractor={KEY_EXTRACTOR}\n showsVerticalScrollIndicator={false}\n decelerationRate={0.88}\n scrollEventThrottle={16}\n snapToAlignment=\"start\"\n // used in place of snapToOffset due to bug on Android\n snapToOffsets={[...Array(data.length)].map(\n (_, i) => i * styles.pickerItemContainer.height\n )}\n viewabilityConfigCallbackPairs={\n !disableInfiniteScroll\n ? viewabilityConfigCallbackPairs?.current\n : undefined\n }\n onMomentumScrollEnd={onMomentumScrollEnd}\n onScroll={\n aggressivelyGetLatestDuration ? onScroll : undefined\n }\n testID=\"duration-scroll-flatlist\"\n />\n <View style={styles.pickerLabelContainer} pointerEvents=\"none\">\n {typeof label === \"string\" ? (\n <Text style={styles.pickerLabel}>{label}</Text>\n ) : (\n label ?? null\n )}\n </View>\n {LinearGradient ? (\n <>\n <LinearGradient\n colors={[\n styles.pickerContainer.backgroundColor ??\n \"white\",\n colorToRgba({\n color:\n styles.pickerContainer\n .backgroundColor ?? \"white\",\n opacity: 0,\n }),\n ]}\n start={{ x: 1, y: 0.3 }}\n end={{ x: 1, y: 1 }}\n pointerEvents=\"none\"\n {...pickerGradientOverlayProps}\n {...topPickerGradientOverlayProps}\n style={[styles.pickerGradientOverlay, { top: 0 }]}\n />\n <LinearGradient\n colors={[\n colorToRgba({\n color:\n styles.pickerContainer\n .backgroundColor ?? \"white\",\n opacity: 0,\n }),\n styles.pickerContainer.backgroundColor ??\n \"white\",\n ]}\n start={{ x: 1, y: 0 }}\n end={{ x: 1, y: 0.7 }}\n pointerEvents=\"none\"\n {...pickerGradientOverlayProps}\n {...bottomPickerGradientOverlayProps}\n style={[\n styles.pickerGradientOverlay,\n { bottom: -1 },\n ]}\n />\n </>\n ) : null}\n </View>\n );\n }\n);\n\nexport default React.memo(DurationScroll);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_generateNumbers","_colorToRgba","_getAdjustedLimit","_getScrollIndex","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","KEY_EXTRACTOR","_","index","toString","DurationScroll","forwardRef","numberOfItems","label","initialValue","onDurationChange","padNumbersWithZero","disableInfiniteScroll","limit","aggressivelyGetLatestDuration","allowFontScaling","is12HourPicker","amLabel","pmLabel","padWithNItems","pickerGradientOverlayProps","topPickerGradientOverlayProps","bottomPickerGradientOverlayProps","LinearGradient","testID","styles","ref","data","generateNumbers","repeatNTimes","generate12HourNumbers","numberOfItemsToShow","adjustedLimited","getAdjustedLimit","initialScrollIndex","getScrollIndex","value","latestDuration","useRef","flatListRef","useImperativeHandle","reset","options","_flatListRef$current","current","scrollToIndex","animated","setValue","_flatListRef$current2","renderItem","useCallback","item","stringItem","intItem","isAm","parseInt","includes","replace","createElement","View","style","pickerItemContainer","Text","pickerItem","max","min","disabledPickerItem","pickerAmPmContainer","pointerEvents","pickerAmPmLabel","onScroll","newIndex","Math","round","nativeEvent","contentOffset","y","height","newDuration","onMomentumScrollEnd","_flatListRef$current3","targetScrollIndex","_flatListRef$current4","onViewableItemsChanged","viewableItems","_viewableItems$","_viewableItems$2","_flatListRef$current5","_flatListRef$current6","getItemLayout","offset","viewabilityConfigCallbackPairs","viewabilityConfig","viewAreaCoveragePercentThreshold","overflow","FlatList","windowSize","keyExtractor","showsVerticalScrollIndicator","decelerationRate","scrollEventThrottle","snapToAlignment","snapToOffsets","Array","map","undefined","pickerLabelContainer","pickerLabel","Fragment","colors","pickerContainer","backgroundColor","colorToRgba","color","opacity","start","x","end","pickerGradientOverlay","top","bottom","_default","exports","React","memo"],"sources":["DurationScroll.tsx"],"sourcesContent":["import React, {\n useRef,\n useCallback,\n forwardRef,\n useImperativeHandle,\n MutableRefObject,\n} from \"react\";\nimport {\n View,\n Text,\n FlatList,\n ViewabilityConfigCallbackPairs,\n ViewToken,\n NativeSyntheticEvent,\n NativeScrollEvent,\n} from \"react-native\";\n\nimport {\n generate12HourNumbers,\n generateNumbers,\n} from \"../../utils/generateNumbers\";\nimport { colorToRgba } from \"../../utils/colorToRgba\";\nimport { generateStyles } from \"./TimerPicker.styles\";\nimport { getAdjustedLimit } from \"../../utils/getAdjustedLimit\";\nimport { getScrollIndex } from \"../../utils/getScrollIndex\";\n\nexport interface DurationScrollRef {\n reset: (options?: { animated?: boolean }) => void;\n setValue: (value: number, options?: { animated?: boolean }) => void;\n latestDuration: MutableRefObject<number>;\n}\n\ntype LinearGradientPoint = {\n x: number;\n y: number;\n};\n\nexport type LinearGradientProps = React.ComponentProps<typeof View> & {\n colors: string[];\n locations?: number[] | null;\n start?: LinearGradientPoint | null;\n end?: LinearGradientPoint | null;\n};\n\nexport type LimitType = {\n max?: number;\n min?: number;\n};\n\ninterface DurationScrollProps {\n allowFontScaling?: boolean;\n numberOfItems: number;\n label?: string | React.ReactElement;\n initialValue?: number;\n onDurationChange: (duration: number) => void;\n padNumbersWithZero?: boolean;\n disableInfiniteScroll?: boolean;\n limit?: LimitType;\n aggressivelyGetLatestDuration: boolean;\n is12HourPicker?: boolean;\n amLabel?: string;\n pmLabel?: string;\n padWithNItems: number;\n pickerGradientOverlayProps?: Partial<LinearGradientProps>;\n topPickerGradientOverlayProps?: Partial<LinearGradientProps>;\n bottomPickerGradientOverlayProps?: Partial<LinearGradientProps>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LinearGradient?: any;\n testID?: string;\n styles: ReturnType<typeof generateStyles>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst KEY_EXTRACTOR = (_: any, index: number) => index.toString();\n\nconst DurationScroll = forwardRef<DurationScrollRef, DurationScrollProps>(\n (\n {\n numberOfItems,\n label,\n initialValue = 0,\n onDurationChange,\n padNumbersWithZero = false,\n disableInfiniteScroll = false,\n limit,\n aggressivelyGetLatestDuration,\n allowFontScaling = false,\n is12HourPicker,\n amLabel,\n pmLabel,\n padWithNItems,\n pickerGradientOverlayProps,\n topPickerGradientOverlayProps,\n bottomPickerGradientOverlayProps,\n LinearGradient,\n testID,\n styles,\n },\n ref\n ): React.ReactElement => {\n const data = !is12HourPicker\n ? generateNumbers(numberOfItems, {\n padNumbersWithZero,\n repeatNTimes: 3,\n disableInfiniteScroll,\n padWithNItems,\n })\n : generate12HourNumbers({\n padNumbersWithZero,\n repeatNTimes: 3,\n disableInfiniteScroll,\n padWithNItems,\n });\n\n const numberOfItemsToShow = 1 + padWithNItems * 2;\n\n const adjustedLimited = getAdjustedLimit(limit, numberOfItems);\n\n const initialScrollIndex = getScrollIndex({\n value: initialValue,\n numberOfItems,\n padWithNItems,\n disableInfiniteScroll,\n });\n\n const latestDuration = useRef(0);\n\n const flatListRef = useRef<FlatList | null>(null);\n\n useImperativeHandle(ref, () => ({\n reset: (options) => {\n flatListRef.current?.scrollToIndex({\n animated: options?.animated ?? false,\n index: initialScrollIndex,\n });\n },\n setValue: (value, options) => {\n flatListRef.current?.scrollToIndex({\n animated: options?.animated ?? false,\n index: getScrollIndex({\n value: value,\n numberOfItems,\n padWithNItems,\n disableInfiniteScroll,\n }),\n });\n },\n latestDuration: latestDuration,\n }));\n\n const renderItem = useCallback(\n ({ item }: { item: string }) => {\n let stringItem = item;\n let intItem: number;\n let isAm: boolean | undefined;\n\n if (!is12HourPicker) {\n intItem = parseInt(item);\n } else {\n isAm = item.includes(\"AM\");\n stringItem = item.replace(/\\s[AP]M/g, \"\");\n intItem = parseInt(stringItem);\n }\n\n return (\n <View\n key={item}\n style={styles.pickerItemContainer}\n testID=\"picker-item\">\n <Text\n allowFontScaling={allowFontScaling}\n style={[\n styles.pickerItem,\n intItem > adjustedLimited.max ||\n intItem < adjustedLimited.min\n ? styles.disabledPickerItem\n : {},\n ]}>\n {stringItem}\n </Text>\n {is12HourPicker ? (\n <View\n style={styles.pickerAmPmContainer}\n pointerEvents=\"none\">\n <Text\n style={[styles.pickerAmPmLabel]}\n allowFontScaling={allowFontScaling}>\n {isAm ? amLabel : pmLabel}\n </Text>\n </View>\n ) : null}\n </View>\n );\n },\n [\n adjustedLimited.max,\n adjustedLimited.min,\n allowFontScaling,\n amLabel,\n is12HourPicker,\n pmLabel,\n styles.disabledPickerItem,\n styles.pickerAmPmContainer,\n styles.pickerAmPmLabel,\n styles.pickerItem,\n styles.pickerItemContainer,\n ]\n );\n\n const onScroll = useCallback(\n (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n // this function is only used when the picker is in a modal\n // it is used to ensure that the modal gets the latest duration on clicking\n // the confirm button, even if the scrollview is still scrolling\n const newIndex = Math.round(\n e.nativeEvent.contentOffset.y /\n styles.pickerItemContainer.height\n );\n let newDuration =\n (disableInfiniteScroll\n ? newIndex\n : newIndex + padWithNItems) %\n (numberOfItems + 1);\n\n // check limits\n if (newDuration > adjustedLimited.max) {\n newDuration = adjustedLimited.max;\n } else if (newDuration < adjustedLimited.min) {\n newDuration = adjustedLimited.min;\n }\n latestDuration.current = newDuration;\n },\n [\n adjustedLimited.max,\n adjustedLimited.min,\n disableInfiniteScroll,\n numberOfItems,\n padWithNItems,\n styles.pickerItemContainer.height,\n ]\n );\n\n const onMomentumScrollEnd = useCallback(\n (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n const newIndex = Math.round(\n e.nativeEvent.contentOffset.y /\n styles.pickerItemContainer.height\n );\n let newDuration =\n (disableInfiniteScroll\n ? newIndex\n : newIndex + padWithNItems) %\n (numberOfItems + 1);\n\n // check limits\n if (newDuration > adjustedLimited.max) {\n const targetScrollIndex =\n newIndex - (newDuration - adjustedLimited.max);\n flatListRef.current?.scrollToIndex({\n animated: true,\n index:\n // guard against scrolling beyond end of list\n targetScrollIndex >= 0\n ? targetScrollIndex\n : adjustedLimited.max - 1,\n }); // scroll down to max\n newDuration = adjustedLimited.max;\n } else if (newDuration < adjustedLimited.min) {\n const targetScrollIndex =\n newIndex + (adjustedLimited.min - newDuration);\n flatListRef.current?.scrollToIndex({\n animated: true,\n index:\n // guard against scrolling beyond end of list\n targetScrollIndex <= data.length - 1\n ? targetScrollIndex\n : adjustedLimited.min,\n }); // scroll up to min\n newDuration = adjustedLimited.min;\n }\n\n onDurationChange(newDuration);\n },\n [\n adjustedLimited.max,\n adjustedLimited.min,\n data.length,\n disableInfiniteScroll,\n numberOfItems,\n onDurationChange,\n padWithNItems,\n styles.pickerItemContainer.height,\n ]\n );\n\n const onViewableItemsChanged = useCallback(\n ({ viewableItems }: { viewableItems: ViewToken[] }) => {\n if (\n viewableItems[0]?.index &&\n viewableItems[0].index < numberOfItems * 0.5\n ) {\n flatListRef.current?.scrollToIndex({\n animated: false,\n index: viewableItems[0].index + numberOfItems,\n });\n } else if (\n viewableItems[0]?.index &&\n viewableItems[0].index >= numberOfItems * 2.5\n ) {\n flatListRef.current?.scrollToIndex({\n animated: false,\n index: viewableItems[0].index - numberOfItems,\n });\n }\n },\n [numberOfItems]\n );\n\n const getItemLayout = useCallback(\n (_: ArrayLike<string> | null | undefined, index: number) => ({\n length: styles.pickerItemContainer.height,\n offset: styles.pickerItemContainer.height * index,\n index,\n }),\n [styles.pickerItemContainer.height]\n );\n\n const viewabilityConfigCallbackPairs =\n useRef<ViewabilityConfigCallbackPairs>([\n {\n viewabilityConfig: { viewAreaCoveragePercentThreshold: 25 },\n onViewableItemsChanged: onViewableItemsChanged,\n },\n ]);\n\n return (\n <View\n testID={testID}\n style={{\n height:\n styles.pickerItemContainer.height * numberOfItemsToShow,\n overflow: \"hidden\",\n }}>\n <FlatList\n ref={flatListRef}\n data={data}\n getItemLayout={getItemLayout}\n initialScrollIndex={initialScrollIndex}\n windowSize={numberOfItemsToShow}\n renderItem={renderItem}\n keyExtractor={KEY_EXTRACTOR}\n showsVerticalScrollIndicator={false}\n decelerationRate={0.88}\n scrollEventThrottle={16}\n snapToAlignment=\"start\"\n // used in place of snapToOffset due to bug on Android\n snapToOffsets={[...Array(data.length)].map(\n (_, i) => i * styles.pickerItemContainer.height\n )}\n viewabilityConfigCallbackPairs={\n !disableInfiniteScroll\n ? viewabilityConfigCallbackPairs?.current\n : undefined\n }\n onMomentumScrollEnd={onMomentumScrollEnd}\n onScroll={\n aggressivelyGetLatestDuration ? onScroll : undefined\n }\n testID=\"duration-scroll-flatlist\"\n />\n <View style={styles.pickerLabelContainer} pointerEvents=\"none\">\n {typeof label === \"string\" ? (\n <Text\n allowFontScaling={allowFontScaling}\n style={styles.pickerLabel}>\n {label}\n </Text>\n ) : (\n label ?? null\n )}\n </View>\n {LinearGradient ? (\n <>\n <LinearGradient\n colors={[\n styles.pickerContainer.backgroundColor ??\n \"white\",\n colorToRgba({\n color:\n styles.pickerContainer\n .backgroundColor ?? \"white\",\n opacity: 0,\n }),\n ]}\n start={{ x: 1, y: 0.3 }}\n end={{ x: 1, y: 1 }}\n pointerEvents=\"none\"\n {...pickerGradientOverlayProps}\n {...topPickerGradientOverlayProps}\n style={[styles.pickerGradientOverlay, { top: 0 }]}\n />\n <LinearGradient\n colors={[\n colorToRgba({\n color:\n styles.pickerContainer\n .backgroundColor ?? \"white\",\n opacity: 0,\n }),\n styles.pickerContainer.backgroundColor ??\n \"white\",\n ]}\n start={{ x: 1, y: 0 }}\n end={{ x: 1, y: 0.7 }}\n pointerEvents=\"none\"\n {...pickerGradientOverlayProps}\n {...bottomPickerGradientOverlayProps}\n style={[\n styles.pickerGradientOverlay,\n { bottom: -1 },\n ]}\n />\n </>\n ) : null}\n </View>\n );\n }\n);\n\nexport default React.memo(DurationScroll);\n"],"mappings":"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"}
@@ -13,6 +13,7 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
13
13
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
14
  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); }
15
15
  const TimerPicker = /*#__PURE__*/(0, _react.forwardRef)(({
16
+ allowFontScaling = false,
16
17
  onDurationChange,
17
18
  initialHours = 0,
18
19
  initialMinutes = 0,
@@ -93,6 +94,7 @@ const TimerPicker = /*#__PURE__*/(0, _react.forwardRef)(({
93
94
  numberOfItems: 23,
94
95
  label: hourLabel ?? (!use12HourPicker ? "h" : undefined),
95
96
  initialValue: initialHours,
97
+ allowFontScaling: allowFontScaling,
96
98
  aggressivelyGetLatestDuration: aggressivelyGetLatestDuration,
97
99
  onDurationChange: setSelectedHours,
98
100
  pickerGradientOverlayProps: pickerGradientOverlayProps,
@@ -112,6 +114,7 @@ const TimerPicker = /*#__PURE__*/(0, _react.forwardRef)(({
112
114
  numberOfItems: 59,
113
115
  label: minuteLabel ?? "m",
114
116
  initialValue: initialMinutes,
117
+ allowFontScaling: allowFontScaling,
115
118
  aggressivelyGetLatestDuration: aggressivelyGetLatestDuration,
116
119
  onDurationChange: setSelectedMinutes,
117
120
  padNumbersWithZero: true,
@@ -129,6 +132,7 @@ const TimerPicker = /*#__PURE__*/(0, _react.forwardRef)(({
129
132
  numberOfItems: 59,
130
133
  label: secondLabel ?? "s",
131
134
  initialValue: initialSeconds,
135
+ allowFontScaling: allowFontScaling,
132
136
  aggressivelyGetLatestDuration: aggressivelyGetLatestDuration,
133
137
  onDurationChange: setSelectedSeconds,
134
138
  padNumbersWithZero: true,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_DurationScroll","_interopRequireDefault","_TimerPicker","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","TimerPicker","forwardRef","onDurationChange","initialHours","initialMinutes","initialSeconds","hideHours","hideMinutes","hideSeconds","hourLimit","minuteLimit","secondLimit","hourLabel","minuteLabel","secondLabel","padWithNItems","disableInfiniteScroll","aggressivelyGetLatestDuration","use12HourPicker","amLabel","pmLabel","LinearGradient","pickerContainerProps","pickerGradientOverlayProps","topPickerGradientOverlayProps","bottomPickerGradientOverlayProps","styles","customStyles","ref","checkedPadWithNItems","Math","round","useMemo","generateStyles","selectedHours","setSelectedHours","useState","selectedMinutes","setSelectedMinutes","selectedSeconds","setSelectedSeconds","useEffect","hours","minutes","seconds","hoursDurationScrollRef","useRef","minutesDurationScrollRef","secondsDurationScrollRef","useImperativeHandle","_hoursDurationScrollR3","_minutesDurationScrol3","_secondsDurationScrol3","reset","options","_hoursDurationScrollR","_minutesDurationScrol","_secondsDurationScrol","current","setValue","value","_hoursDurationScrollR2","_minutesDurationScrol2","_secondsDurationScrol2","latestDuration","createElement","View","style","pickerContainer","testID","numberOfItems","label","undefined","initialValue","limit","is12HourPicker","padNumbersWithZero","_default","exports","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React, {\n MutableRefObject,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { View } from \"react-native\";\n\nimport DurationScroll, { DurationScrollRef, LimitType } from \"./DurationScroll\";\n\nimport { generateStyles, CustomTimerPickerStyles } from \"./TimerPicker.styles\";\nimport { LinearGradientProps } from \"./DurationScroll\";\n\nexport interface TimerPickerRef {\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 TimerPickerProps {\n onDurationChange?: (duration: {\n hours: number;\n minutes: number;\n seconds: number;\n }) => void;\n initialHours?: number;\n initialMinutes?: number;\n initialSeconds?: number;\n aggressivelyGetLatestDuration?: boolean;\n use12HourPicker?: boolean;\n amLabel?: string;\n pmLabel?: string;\n hideHours?: boolean;\n hideMinutes?: boolean;\n hideSeconds?: boolean;\n hourLimit?: LimitType;\n minuteLimit?: LimitType;\n secondLimit?: LimitType;\n hourLabel?: string | React.ReactElement;\n minuteLabel?: string | React.ReactElement;\n secondLabel?: string | React.ReactElement;\n padWithNItems?: number;\n disableInfiniteScroll?: boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LinearGradient?: any;\n pickerContainerProps?: React.ComponentProps<typeof View>;\n pickerGradientOverlayProps?: Partial<LinearGradientProps>;\n topPickerGradientOverlayProps?: Partial<LinearGradientProps>;\n bottomPickerGradientOverlayProps?: Partial<LinearGradientProps>;\n styles?: CustomTimerPickerStyles;\n}\n\nconst TimerPicker = forwardRef<TimerPickerRef, TimerPickerProps>(\n (\n {\n onDurationChange,\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 aggressivelyGetLatestDuration = false,\n use12HourPicker = false,\n amLabel = \"am\",\n pmLabel = \"pm\",\n LinearGradient,\n pickerContainerProps,\n pickerGradientOverlayProps,\n topPickerGradientOverlayProps,\n bottomPickerGradientOverlayProps,\n styles: customStyles,\n },\n ref\n ): React.ReactElement => {\n const checkedPadWithNItems =\n padWithNItems >= 0 ? Math.round(padWithNItems) : 0;\n\n const styles = useMemo(\n () =>\n generateStyles(customStyles, {\n padWithNItems: checkedPadWithNItems,\n }),\n\n [checkedPadWithNItems, customStyles]\n );\n\n const [selectedHours, setSelectedHours] = useState(initialHours);\n const [selectedMinutes, setSelectedMinutes] = useState(initialMinutes);\n const [selectedSeconds, setSelectedSeconds] = useState(initialSeconds);\n\n useEffect(() => {\n onDurationChange?.({\n hours: selectedHours,\n minutes: selectedMinutes,\n seconds: selectedSeconds,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedHours, selectedMinutes, selectedSeconds]);\n\n const hoursDurationScrollRef = useRef<DurationScrollRef>(null);\n const minutesDurationScrollRef = useRef<DurationScrollRef>(null);\n const secondsDurationScrollRef = useRef<DurationScrollRef>(null);\n\n useImperativeHandle(ref, () => ({\n reset: (options) => {\n setSelectedHours(initialHours);\n setSelectedMinutes(initialMinutes);\n setSelectedSeconds(initialSeconds);\n hoursDurationScrollRef.current?.reset(options);\n minutesDurationScrollRef.current?.reset(options);\n secondsDurationScrollRef.current?.reset(options);\n },\n setValue: (value, options) => {\n setSelectedHours(value.hours);\n setSelectedMinutes(value.minutes);\n setSelectedSeconds(value.seconds);\n hoursDurationScrollRef.current?.setValue(value.hours, options);\n minutesDurationScrollRef.current?.setValue(\n value.minutes,\n options\n );\n secondsDurationScrollRef.current?.setValue(\n value.seconds,\n options\n );\n },\n latestDuration: {\n hours: hoursDurationScrollRef.current?.latestDuration,\n minutes: minutesDurationScrollRef.current?.latestDuration,\n seconds: secondsDurationScrollRef.current?.latestDuration,\n },\n }));\n\n return (\n <View\n {...pickerContainerProps}\n style={styles.pickerContainer}\n testID=\"timer-picker\">\n {!hideHours ? (\n <DurationScroll\n ref={hoursDurationScrollRef}\n numberOfItems={23}\n label={\n hourLabel ?? (!use12HourPicker ? \"h\" : undefined)\n }\n initialValue={initialHours}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n onDurationChange={setSelectedHours}\n pickerGradientOverlayProps={pickerGradientOverlayProps}\n topPickerGradientOverlayProps={\n topPickerGradientOverlayProps\n }\n bottomPickerGradientOverlayProps={\n bottomPickerGradientOverlayProps\n }\n disableInfiniteScroll={disableInfiniteScroll}\n padWithNItems={checkedPadWithNItems}\n limit={hourLimit}\n LinearGradient={LinearGradient}\n is12HourPicker={use12HourPicker}\n amLabel={amLabel}\n pmLabel={pmLabel}\n styles={styles}\n testID=\"duration-scroll-hour\"\n />\n ) : null}\n {!hideMinutes ? (\n <DurationScroll\n ref={minutesDurationScrollRef}\n numberOfItems={59}\n label={minuteLabel ?? \"m\"}\n initialValue={initialMinutes}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n onDurationChange={setSelectedMinutes}\n padNumbersWithZero\n pickerGradientOverlayProps={pickerGradientOverlayProps}\n topPickerGradientOverlayProps={\n topPickerGradientOverlayProps\n }\n bottomPickerGradientOverlayProps={\n bottomPickerGradientOverlayProps\n }\n disableInfiniteScroll={disableInfiniteScroll}\n padWithNItems={checkedPadWithNItems}\n limit={minuteLimit}\n LinearGradient={LinearGradient}\n styles={styles}\n testID=\"duration-scroll-minute\"\n />\n ) : null}\n {!hideSeconds ? (\n <DurationScroll\n ref={secondsDurationScrollRef}\n numberOfItems={59}\n label={secondLabel ?? \"s\"}\n initialValue={initialSeconds}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n onDurationChange={setSelectedSeconds}\n padNumbersWithZero\n pickerGradientOverlayProps={pickerGradientOverlayProps}\n topPickerGradientOverlayProps={\n topPickerGradientOverlayProps\n }\n bottomPickerGradientOverlayProps={\n bottomPickerGradientOverlayProps\n }\n disableInfiniteScroll={disableInfiniteScroll}\n padWithNItems={checkedPadWithNItems}\n limit={secondLimit}\n LinearGradient={LinearGradient}\n styles={styles}\n testID=\"duration-scroll-second\"\n />\n ) : null}\n </View>\n );\n }\n);\n\nexport default React.memo(TimerPicker);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_DurationScroll","_interopRequireDefault","_TimerPicker","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","TimerPicker","forwardRef","allowFontScaling","onDurationChange","initialHours","initialMinutes","initialSeconds","hideHours","hideMinutes","hideSeconds","hourLimit","minuteLimit","secondLimit","hourLabel","minuteLabel","secondLabel","padWithNItems","disableInfiniteScroll","aggressivelyGetLatestDuration","use12HourPicker","amLabel","pmLabel","LinearGradient","pickerContainerProps","pickerGradientOverlayProps","topPickerGradientOverlayProps","bottomPickerGradientOverlayProps","styles","customStyles","ref","checkedPadWithNItems","Math","round","useMemo","generateStyles","selectedHours","setSelectedHours","useState","selectedMinutes","setSelectedMinutes","selectedSeconds","setSelectedSeconds","useEffect","hours","minutes","seconds","hoursDurationScrollRef","useRef","minutesDurationScrollRef","secondsDurationScrollRef","useImperativeHandle","_hoursDurationScrollR3","_minutesDurationScrol3","_secondsDurationScrol3","reset","options","_hoursDurationScrollR","_minutesDurationScrol","_secondsDurationScrol","current","setValue","value","_hoursDurationScrollR2","_minutesDurationScrol2","_secondsDurationScrol2","latestDuration","createElement","View","style","pickerContainer","testID","numberOfItems","label","undefined","initialValue","limit","is12HourPicker","padNumbersWithZero","_default","exports","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React, {\n MutableRefObject,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { View } from \"react-native\";\n\nimport DurationScroll, { DurationScrollRef, LimitType } from \"./DurationScroll\";\n\nimport { generateStyles, CustomTimerPickerStyles } from \"./TimerPicker.styles\";\nimport { LinearGradientProps } from \"./DurationScroll\";\n\nexport interface TimerPickerRef {\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 TimerPickerProps {\n allowFontScaling?: boolean;\n onDurationChange?: (duration: {\n hours: number;\n minutes: number;\n seconds: number;\n }) => void;\n initialHours?: number;\n initialMinutes?: number;\n initialSeconds?: number;\n aggressivelyGetLatestDuration?: boolean;\n use12HourPicker?: boolean;\n amLabel?: string;\n pmLabel?: string;\n hideHours?: boolean;\n hideMinutes?: boolean;\n hideSeconds?: boolean;\n hourLimit?: LimitType;\n minuteLimit?: LimitType;\n secondLimit?: LimitType;\n hourLabel?: string | React.ReactElement;\n minuteLabel?: string | React.ReactElement;\n secondLabel?: string | React.ReactElement;\n padWithNItems?: number;\n disableInfiniteScroll?: boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LinearGradient?: any;\n pickerContainerProps?: React.ComponentProps<typeof View>;\n pickerGradientOverlayProps?: Partial<LinearGradientProps>;\n topPickerGradientOverlayProps?: Partial<LinearGradientProps>;\n bottomPickerGradientOverlayProps?: Partial<LinearGradientProps>;\n styles?: CustomTimerPickerStyles;\n}\n\nconst TimerPicker = forwardRef<TimerPickerRef, TimerPickerProps>(\n (\n {\n allowFontScaling = false,\n onDurationChange,\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 aggressivelyGetLatestDuration = false,\n use12HourPicker = false,\n amLabel = \"am\",\n pmLabel = \"pm\",\n LinearGradient,\n pickerContainerProps,\n pickerGradientOverlayProps,\n topPickerGradientOverlayProps,\n bottomPickerGradientOverlayProps,\n styles: customStyles,\n },\n ref\n ): React.ReactElement => {\n const checkedPadWithNItems =\n padWithNItems >= 0 ? Math.round(padWithNItems) : 0;\n\n const styles = useMemo(\n () =>\n generateStyles(customStyles, {\n padWithNItems: checkedPadWithNItems,\n }),\n\n [checkedPadWithNItems, customStyles]\n );\n\n const [selectedHours, setSelectedHours] = useState(initialHours);\n const [selectedMinutes, setSelectedMinutes] = useState(initialMinutes);\n const [selectedSeconds, setSelectedSeconds] = useState(initialSeconds);\n\n useEffect(() => {\n onDurationChange?.({\n hours: selectedHours,\n minutes: selectedMinutes,\n seconds: selectedSeconds,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedHours, selectedMinutes, selectedSeconds]);\n\n const hoursDurationScrollRef = useRef<DurationScrollRef>(null);\n const minutesDurationScrollRef = useRef<DurationScrollRef>(null);\n const secondsDurationScrollRef = useRef<DurationScrollRef>(null);\n\n useImperativeHandle(ref, () => ({\n reset: (options) => {\n setSelectedHours(initialHours);\n setSelectedMinutes(initialMinutes);\n setSelectedSeconds(initialSeconds);\n hoursDurationScrollRef.current?.reset(options);\n minutesDurationScrollRef.current?.reset(options);\n secondsDurationScrollRef.current?.reset(options);\n },\n setValue: (value, options) => {\n setSelectedHours(value.hours);\n setSelectedMinutes(value.minutes);\n setSelectedSeconds(value.seconds);\n hoursDurationScrollRef.current?.setValue(value.hours, options);\n minutesDurationScrollRef.current?.setValue(\n value.minutes,\n options\n );\n secondsDurationScrollRef.current?.setValue(\n value.seconds,\n options\n );\n },\n latestDuration: {\n hours: hoursDurationScrollRef.current?.latestDuration,\n minutes: minutesDurationScrollRef.current?.latestDuration,\n seconds: secondsDurationScrollRef.current?.latestDuration,\n },\n }));\n\n return (\n <View\n {...pickerContainerProps}\n style={styles.pickerContainer}\n testID=\"timer-picker\">\n {!hideHours ? (\n <DurationScroll\n ref={hoursDurationScrollRef}\n numberOfItems={23}\n label={\n hourLabel ?? (!use12HourPicker ? \"h\" : undefined)\n }\n initialValue={initialHours}\n allowFontScaling={allowFontScaling}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n onDurationChange={setSelectedHours}\n pickerGradientOverlayProps={pickerGradientOverlayProps}\n topPickerGradientOverlayProps={\n topPickerGradientOverlayProps\n }\n bottomPickerGradientOverlayProps={\n bottomPickerGradientOverlayProps\n }\n disableInfiniteScroll={disableInfiniteScroll}\n padWithNItems={checkedPadWithNItems}\n limit={hourLimit}\n LinearGradient={LinearGradient}\n is12HourPicker={use12HourPicker}\n amLabel={amLabel}\n pmLabel={pmLabel}\n styles={styles}\n testID=\"duration-scroll-hour\"\n />\n ) : null}\n {!hideMinutes ? (\n <DurationScroll\n ref={minutesDurationScrollRef}\n numberOfItems={59}\n label={minuteLabel ?? \"m\"}\n initialValue={initialMinutes}\n allowFontScaling={allowFontScaling}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n onDurationChange={setSelectedMinutes}\n padNumbersWithZero\n pickerGradientOverlayProps={pickerGradientOverlayProps}\n topPickerGradientOverlayProps={\n topPickerGradientOverlayProps\n }\n bottomPickerGradientOverlayProps={\n bottomPickerGradientOverlayProps\n }\n disableInfiniteScroll={disableInfiniteScroll}\n padWithNItems={checkedPadWithNItems}\n limit={minuteLimit}\n LinearGradient={LinearGradient}\n styles={styles}\n testID=\"duration-scroll-minute\"\n />\n ) : null}\n {!hideSeconds ? (\n <DurationScroll\n ref={secondsDurationScrollRef}\n numberOfItems={59}\n label={secondLabel ?? \"s\"}\n initialValue={initialSeconds}\n allowFontScaling={allowFontScaling}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n onDurationChange={setSelectedSeconds}\n padNumbersWithZero\n pickerGradientOverlayProps={pickerGradientOverlayProps}\n topPickerGradientOverlayProps={\n topPickerGradientOverlayProps\n }\n bottomPickerGradientOverlayProps={\n bottomPickerGradientOverlayProps\n }\n disableInfiniteScroll={disableInfiniteScroll}\n padWithNItems={checkedPadWithNItems}\n limit={secondLimit}\n LinearGradient={LinearGradient}\n styles={styles}\n testID=\"duration-scroll-second\"\n />\n ) : null}\n </View>\n );\n }\n);\n\nexport default React.memo(TimerPicker);\n"],"mappings":"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"}
@@ -34,6 +34,7 @@ const TimerPickerModal = /*#__PURE__*/(0, _react.forwardRef)(({
34
34
  secondLabel,
35
35
  padWithNItems = 1,
36
36
  disableInfiniteScroll = false,
37
+ allowFontScaling = false,
37
38
  use12HourPicker,
38
39
  amLabel,
39
40
  pmLabel,
@@ -152,6 +153,7 @@ const TimerPickerModal = /*#__PURE__*/(0, _react.forwardRef)(({
152
153
  secondLabel: secondLabel,
153
154
  padWithNItems: padWithNItems,
154
155
  disableInfiniteScroll: disableInfiniteScroll,
156
+ allowFontScaling: allowFontScaling,
155
157
  use12HourPicker: use12HourPicker,
156
158
  amLabel: amLabel,
157
159
  pmLabel: pmLabel,
@@ -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","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 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 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","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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"}
@@ -16,6 +16,7 @@ const DurationScroll = /*#__PURE__*/forwardRef(({
16
16
  disableInfiniteScroll = false,
17
17
  limit,
18
18
  aggressivelyGetLatestDuration,
19
+ allowFontScaling = false,
19
20
  is12HourPicker,
20
21
  amLabel,
21
22
  pmLabel,
@@ -88,14 +89,16 @@ const DurationScroll = /*#__PURE__*/forwardRef(({
88
89
  style: styles.pickerItemContainer,
89
90
  testID: "picker-item"
90
91
  }, /*#__PURE__*/React.createElement(Text, {
92
+ allowFontScaling: allowFontScaling,
91
93
  style: [styles.pickerItem, intItem > adjustedLimited.max || intItem < adjustedLimited.min ? styles.disabledPickerItem : {}]
92
94
  }, stringItem), is12HourPicker ? /*#__PURE__*/React.createElement(View, {
93
95
  style: styles.pickerAmPmContainer,
94
96
  pointerEvents: "none"
95
97
  }, /*#__PURE__*/React.createElement(Text, {
96
- style: [styles.pickerAmPmLabel]
98
+ style: [styles.pickerAmPmLabel],
99
+ allowFontScaling: allowFontScaling
97
100
  }, isAm ? amLabel : pmLabel)) : null);
98
- }, [adjustedLimited.max, adjustedLimited.min, amLabel, is12HourPicker, pmLabel, styles.disabledPickerItem, styles.pickerAmPmContainer, styles.pickerAmPmLabel, styles.pickerItem, styles.pickerItemContainer]);
101
+ }, [adjustedLimited.max, adjustedLimited.min, allowFontScaling, amLabel, is12HourPicker, pmLabel, styles.disabledPickerItem, styles.pickerAmPmContainer, styles.pickerAmPmLabel, styles.pickerItem, styles.pickerItemContainer]);
99
102
  const onScroll = useCallback(e => {
100
103
  // this function is only used when the picker is in a modal
101
104
  // it is used to ensure that the modal gets the latest duration on clicking
@@ -197,6 +200,7 @@ const DurationScroll = /*#__PURE__*/forwardRef(({
197
200
  style: styles.pickerLabelContainer,
198
201
  pointerEvents: "none"
199
202
  }, typeof label === "string" ? /*#__PURE__*/React.createElement(Text, {
203
+ allowFontScaling: allowFontScaling,
200
204
  style: styles.pickerLabel
201
205
  }, label) : label ?? null), LinearGradient ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(LinearGradient, _extends({
202
206
  colors: [styles.pickerContainer.backgroundColor ?? "white", colorToRgba({
@@ -1 +1 @@
1
- {"version":3,"names":["React","useRef","useCallback","forwardRef","useImperativeHandle","View","Text","FlatList","generate12HourNumbers","generateNumbers","colorToRgba","getAdjustedLimit","getScrollIndex","KEY_EXTRACTOR","_","index","toString","DurationScroll","numberOfItems","label","initialValue","onDurationChange","padNumbersWithZero","disableInfiniteScroll","limit","aggressivelyGetLatestDuration","is12HourPicker","amLabel","pmLabel","padWithNItems","pickerGradientOverlayProps","topPickerGradientOverlayProps","bottomPickerGradientOverlayProps","LinearGradient","testID","styles","ref","data","repeatNTimes","numberOfItemsToShow","adjustedLimited","initialScrollIndex","value","latestDuration","flatListRef","reset","options","_flatListRef$current","current","scrollToIndex","animated","setValue","_flatListRef$current2","renderItem","item","stringItem","intItem","isAm","parseInt","includes","replace","createElement","key","style","pickerItemContainer","pickerItem","max","min","disabledPickerItem","pickerAmPmContainer","pointerEvents","pickerAmPmLabel","onScroll","e","newIndex","Math","round","nativeEvent","contentOffset","y","height","newDuration","onMomentumScrollEnd","_flatListRef$current3","targetScrollIndex","_flatListRef$current4","length","onViewableItemsChanged","viewableItems","_viewableItems$","_viewableItems$2","_flatListRef$current5","_flatListRef$current6","getItemLayout","offset","viewabilityConfigCallbackPairs","viewabilityConfig","viewAreaCoveragePercentThreshold","overflow","windowSize","keyExtractor","showsVerticalScrollIndicator","decelerationRate","scrollEventThrottle","snapToAlignment","snapToOffsets","Array","map","i","undefined","pickerLabelContainer","pickerLabel","Fragment","_extends","colors","pickerContainer","backgroundColor","color","opacity","start","x","end","pickerGradientOverlay","top","bottom","memo"],"sources":["DurationScroll.tsx"],"sourcesContent":["import React, {\n useRef,\n useCallback,\n forwardRef,\n useImperativeHandle,\n MutableRefObject,\n} from \"react\";\nimport {\n View,\n Text,\n FlatList,\n ViewabilityConfigCallbackPairs,\n ViewToken,\n NativeSyntheticEvent,\n NativeScrollEvent,\n} from \"react-native\";\n\nimport {\n generate12HourNumbers,\n generateNumbers,\n} from \"../../utils/generateNumbers\";\nimport { colorToRgba } from \"../../utils/colorToRgba\";\nimport { generateStyles } from \"./TimerPicker.styles\";\nimport { getAdjustedLimit } from \"../../utils/getAdjustedLimit\";\nimport { getScrollIndex } from \"../../utils/getScrollIndex\";\n\nexport interface DurationScrollRef {\n reset: (options?: { animated?: boolean }) => void;\n setValue: (value: number, options?: { animated?: boolean }) => void;\n latestDuration: MutableRefObject<number>;\n}\n\ntype LinearGradientPoint = {\n x: number;\n y: number;\n};\n\nexport type LinearGradientProps = React.ComponentProps<typeof View> & {\n colors: string[];\n locations?: number[] | null;\n start?: LinearGradientPoint | null;\n end?: LinearGradientPoint | null;\n};\n\nexport type LimitType = {\n max?: number;\n min?: number;\n};\n\ninterface DurationScrollProps {\n numberOfItems: number;\n label?: string | React.ReactElement;\n initialValue?: number;\n onDurationChange: (duration: number) => void;\n padNumbersWithZero?: boolean;\n disableInfiniteScroll?: boolean;\n limit?: LimitType;\n aggressivelyGetLatestDuration: boolean;\n is12HourPicker?: boolean;\n amLabel?: string;\n pmLabel?: string;\n padWithNItems: number;\n pickerGradientOverlayProps?: Partial<LinearGradientProps>;\n topPickerGradientOverlayProps?: Partial<LinearGradientProps>;\n bottomPickerGradientOverlayProps?: Partial<LinearGradientProps>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LinearGradient?: any;\n testID?: string;\n styles: ReturnType<typeof generateStyles>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst KEY_EXTRACTOR = (_: any, index: number) => index.toString();\n\nconst DurationScroll = forwardRef<DurationScrollRef, DurationScrollProps>(\n (\n {\n numberOfItems,\n label,\n initialValue = 0,\n onDurationChange,\n padNumbersWithZero = false,\n disableInfiniteScroll = false,\n limit,\n aggressivelyGetLatestDuration,\n is12HourPicker,\n amLabel,\n pmLabel,\n padWithNItems,\n pickerGradientOverlayProps,\n topPickerGradientOverlayProps,\n bottomPickerGradientOverlayProps,\n LinearGradient,\n testID,\n styles,\n },\n ref\n ): React.ReactElement => {\n const data = !is12HourPicker\n ? generateNumbers(numberOfItems, {\n padNumbersWithZero,\n repeatNTimes: 3,\n disableInfiniteScroll,\n padWithNItems,\n })\n : generate12HourNumbers({\n padNumbersWithZero,\n repeatNTimes: 3,\n disableInfiniteScroll,\n padWithNItems,\n });\n\n const numberOfItemsToShow = 1 + padWithNItems * 2;\n\n const adjustedLimited = getAdjustedLimit(limit, numberOfItems);\n\n const initialScrollIndex = getScrollIndex({\n value: initialValue,\n numberOfItems,\n padWithNItems,\n disableInfiniteScroll,\n });\n\n const latestDuration = useRef(0);\n\n const flatListRef = useRef<FlatList | null>(null);\n\n useImperativeHandle(ref, () => ({\n reset: (options) => {\n flatListRef.current?.scrollToIndex({\n animated: options?.animated ?? false,\n index: initialScrollIndex,\n });\n },\n setValue: (value, options) => {\n flatListRef.current?.scrollToIndex({\n animated: options?.animated ?? false,\n index: getScrollIndex({\n value: value,\n numberOfItems,\n padWithNItems,\n disableInfiniteScroll,\n }),\n });\n },\n latestDuration: latestDuration,\n }));\n\n const renderItem = useCallback(\n ({ item }: { item: string }) => {\n let stringItem = item;\n let intItem: number;\n let isAm: boolean | undefined;\n\n if (!is12HourPicker) {\n intItem = parseInt(item);\n } else {\n isAm = item.includes(\"AM\");\n stringItem = item.replace(/\\s[AP]M/g, \"\");\n intItem = parseInt(stringItem);\n }\n\n return (\n <View\n key={item}\n style={styles.pickerItemContainer}\n testID=\"picker-item\">\n <Text\n style={[\n styles.pickerItem,\n intItem > adjustedLimited.max ||\n intItem < adjustedLimited.min\n ? styles.disabledPickerItem\n : {},\n ]}>\n {stringItem}\n </Text>\n {is12HourPicker ? (\n <View\n style={styles.pickerAmPmContainer}\n pointerEvents=\"none\">\n <Text style={[styles.pickerAmPmLabel]}>\n {isAm ? amLabel : pmLabel}\n </Text>\n </View>\n ) : null}\n </View>\n );\n },\n [\n adjustedLimited.max,\n adjustedLimited.min,\n amLabel,\n is12HourPicker,\n pmLabel,\n styles.disabledPickerItem,\n styles.pickerAmPmContainer,\n styles.pickerAmPmLabel,\n styles.pickerItem,\n styles.pickerItemContainer,\n ]\n );\n\n const onScroll = useCallback(\n (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n // this function is only used when the picker is in a modal\n // it is used to ensure that the modal gets the latest duration on clicking\n // the confirm button, even if the scrollview is still scrolling\n const newIndex = Math.round(\n e.nativeEvent.contentOffset.y /\n styles.pickerItemContainer.height\n );\n let newDuration =\n (disableInfiniteScroll\n ? newIndex\n : newIndex + padWithNItems) %\n (numberOfItems + 1);\n\n // check limits\n if (newDuration > adjustedLimited.max) {\n newDuration = adjustedLimited.max;\n } else if (newDuration < adjustedLimited.min) {\n newDuration = adjustedLimited.min;\n }\n latestDuration.current = newDuration;\n },\n [\n adjustedLimited.max,\n adjustedLimited.min,\n disableInfiniteScroll,\n numberOfItems,\n padWithNItems,\n styles.pickerItemContainer.height,\n ]\n );\n\n const onMomentumScrollEnd = useCallback(\n (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n const newIndex = Math.round(\n e.nativeEvent.contentOffset.y /\n styles.pickerItemContainer.height\n );\n let newDuration =\n (disableInfiniteScroll\n ? newIndex\n : newIndex + padWithNItems) %\n (numberOfItems + 1);\n\n // check limits\n if (newDuration > adjustedLimited.max) {\n const targetScrollIndex =\n newIndex - (newDuration - adjustedLimited.max);\n flatListRef.current?.scrollToIndex({\n animated: true,\n index:\n // guard against scrolling beyond end of list\n targetScrollIndex >= 0\n ? targetScrollIndex\n : adjustedLimited.max - 1,\n }); // scroll down to max\n newDuration = adjustedLimited.max;\n } else if (newDuration < adjustedLimited.min) {\n const targetScrollIndex =\n newIndex + (adjustedLimited.min - newDuration);\n flatListRef.current?.scrollToIndex({\n animated: true,\n index:\n // guard against scrolling beyond end of list\n targetScrollIndex <= data.length - 1\n ? targetScrollIndex\n : adjustedLimited.min,\n }); // scroll up to min\n newDuration = adjustedLimited.min;\n }\n\n onDurationChange(newDuration);\n },\n [\n adjustedLimited.max,\n adjustedLimited.min,\n data.length,\n disableInfiniteScroll,\n numberOfItems,\n onDurationChange,\n padWithNItems,\n styles.pickerItemContainer.height,\n ]\n );\n\n const onViewableItemsChanged = useCallback(\n ({ viewableItems }: { viewableItems: ViewToken[] }) => {\n if (\n viewableItems[0]?.index &&\n viewableItems[0].index < numberOfItems * 0.5\n ) {\n flatListRef.current?.scrollToIndex({\n animated: false,\n index: viewableItems[0].index + numberOfItems,\n });\n } else if (\n viewableItems[0]?.index &&\n viewableItems[0].index >= numberOfItems * 2.5\n ) {\n flatListRef.current?.scrollToIndex({\n animated: false,\n index: viewableItems[0].index - numberOfItems,\n });\n }\n },\n [numberOfItems]\n );\n\n const getItemLayout = useCallback(\n (_: ArrayLike<string> | null | undefined, index: number) => ({\n length: styles.pickerItemContainer.height,\n offset: styles.pickerItemContainer.height * index,\n index,\n }),\n [styles.pickerItemContainer.height]\n );\n\n const viewabilityConfigCallbackPairs =\n useRef<ViewabilityConfigCallbackPairs>([\n {\n viewabilityConfig: { viewAreaCoveragePercentThreshold: 25 },\n onViewableItemsChanged: onViewableItemsChanged,\n },\n ]);\n\n return (\n <View\n testID={testID}\n style={{\n height:\n styles.pickerItemContainer.height * numberOfItemsToShow,\n overflow: \"hidden\",\n }}>\n <FlatList\n ref={flatListRef}\n data={data}\n getItemLayout={getItemLayout}\n initialScrollIndex={initialScrollIndex}\n windowSize={numberOfItemsToShow}\n renderItem={renderItem}\n keyExtractor={KEY_EXTRACTOR}\n showsVerticalScrollIndicator={false}\n decelerationRate={0.88}\n scrollEventThrottle={16}\n snapToAlignment=\"start\"\n // used in place of snapToOffset due to bug on Android\n snapToOffsets={[...Array(data.length)].map(\n (_, i) => i * styles.pickerItemContainer.height\n )}\n viewabilityConfigCallbackPairs={\n !disableInfiniteScroll\n ? viewabilityConfigCallbackPairs?.current\n : undefined\n }\n onMomentumScrollEnd={onMomentumScrollEnd}\n onScroll={\n aggressivelyGetLatestDuration ? onScroll : undefined\n }\n testID=\"duration-scroll-flatlist\"\n />\n <View style={styles.pickerLabelContainer} pointerEvents=\"none\">\n {typeof label === \"string\" ? (\n <Text style={styles.pickerLabel}>{label}</Text>\n ) : (\n label ?? null\n )}\n </View>\n {LinearGradient ? (\n <>\n <LinearGradient\n colors={[\n styles.pickerContainer.backgroundColor ??\n \"white\",\n colorToRgba({\n color:\n styles.pickerContainer\n .backgroundColor ?? \"white\",\n opacity: 0,\n }),\n ]}\n start={{ x: 1, y: 0.3 }}\n end={{ x: 1, y: 1 }}\n pointerEvents=\"none\"\n {...pickerGradientOverlayProps}\n {...topPickerGradientOverlayProps}\n style={[styles.pickerGradientOverlay, { top: 0 }]}\n />\n <LinearGradient\n colors={[\n colorToRgba({\n color:\n styles.pickerContainer\n .backgroundColor ?? \"white\",\n opacity: 0,\n }),\n styles.pickerContainer.backgroundColor ??\n \"white\",\n ]}\n start={{ x: 1, y: 0 }}\n end={{ x: 1, y: 0.7 }}\n pointerEvents=\"none\"\n {...pickerGradientOverlayProps}\n {...bottomPickerGradientOverlayProps}\n style={[\n styles.pickerGradientOverlay,\n { bottom: -1 },\n ]}\n />\n </>\n ) : null}\n </View>\n );\n }\n);\n\nexport default React.memo(DurationScroll);\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useRef","useCallback","forwardRef","useImperativeHandle","View","Text","FlatList","generate12HourNumbers","generateNumbers","colorToRgba","getAdjustedLimit","getScrollIndex","KEY_EXTRACTOR","_","index","toString","DurationScroll","numberOfItems","label","initialValue","onDurationChange","padNumbersWithZero","disableInfiniteScroll","limit","aggressivelyGetLatestDuration","allowFontScaling","is12HourPicker","amLabel","pmLabel","padWithNItems","pickerGradientOverlayProps","topPickerGradientOverlayProps","bottomPickerGradientOverlayProps","LinearGradient","testID","styles","ref","data","repeatNTimes","numberOfItemsToShow","adjustedLimited","initialScrollIndex","value","latestDuration","flatListRef","reset","options","_flatListRef$current","current","scrollToIndex","animated","setValue","_flatListRef$current2","renderItem","item","stringItem","intItem","isAm","parseInt","includes","replace","createElement","key","style","pickerItemContainer","pickerItem","max","min","disabledPickerItem","pickerAmPmContainer","pointerEvents","pickerAmPmLabel","onScroll","e","newIndex","Math","round","nativeEvent","contentOffset","y","height","newDuration","onMomentumScrollEnd","_flatListRef$current3","targetScrollIndex","_flatListRef$current4","length","onViewableItemsChanged","viewableItems","_viewableItems$","_viewableItems$2","_flatListRef$current5","_flatListRef$current6","getItemLayout","offset","viewabilityConfigCallbackPairs","viewabilityConfig","viewAreaCoveragePercentThreshold","overflow","windowSize","keyExtractor","showsVerticalScrollIndicator","decelerationRate","scrollEventThrottle","snapToAlignment","snapToOffsets","Array","map","i","undefined","pickerLabelContainer","pickerLabel","Fragment","_extends","colors","pickerContainer","backgroundColor","color","opacity","start","x","end","pickerGradientOverlay","top","bottom","memo"],"sources":["DurationScroll.tsx"],"sourcesContent":["import React, {\n useRef,\n useCallback,\n forwardRef,\n useImperativeHandle,\n MutableRefObject,\n} from \"react\";\nimport {\n View,\n Text,\n FlatList,\n ViewabilityConfigCallbackPairs,\n ViewToken,\n NativeSyntheticEvent,\n NativeScrollEvent,\n} from \"react-native\";\n\nimport {\n generate12HourNumbers,\n generateNumbers,\n} from \"../../utils/generateNumbers\";\nimport { colorToRgba } from \"../../utils/colorToRgba\";\nimport { generateStyles } from \"./TimerPicker.styles\";\nimport { getAdjustedLimit } from \"../../utils/getAdjustedLimit\";\nimport { getScrollIndex } from \"../../utils/getScrollIndex\";\n\nexport interface DurationScrollRef {\n reset: (options?: { animated?: boolean }) => void;\n setValue: (value: number, options?: { animated?: boolean }) => void;\n latestDuration: MutableRefObject<number>;\n}\n\ntype LinearGradientPoint = {\n x: number;\n y: number;\n};\n\nexport type LinearGradientProps = React.ComponentProps<typeof View> & {\n colors: string[];\n locations?: number[] | null;\n start?: LinearGradientPoint | null;\n end?: LinearGradientPoint | null;\n};\n\nexport type LimitType = {\n max?: number;\n min?: number;\n};\n\ninterface DurationScrollProps {\n allowFontScaling?: boolean;\n numberOfItems: number;\n label?: string | React.ReactElement;\n initialValue?: number;\n onDurationChange: (duration: number) => void;\n padNumbersWithZero?: boolean;\n disableInfiniteScroll?: boolean;\n limit?: LimitType;\n aggressivelyGetLatestDuration: boolean;\n is12HourPicker?: boolean;\n amLabel?: string;\n pmLabel?: string;\n padWithNItems: number;\n pickerGradientOverlayProps?: Partial<LinearGradientProps>;\n topPickerGradientOverlayProps?: Partial<LinearGradientProps>;\n bottomPickerGradientOverlayProps?: Partial<LinearGradientProps>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LinearGradient?: any;\n testID?: string;\n styles: ReturnType<typeof generateStyles>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst KEY_EXTRACTOR = (_: any, index: number) => index.toString();\n\nconst DurationScroll = forwardRef<DurationScrollRef, DurationScrollProps>(\n (\n {\n numberOfItems,\n label,\n initialValue = 0,\n onDurationChange,\n padNumbersWithZero = false,\n disableInfiniteScroll = false,\n limit,\n aggressivelyGetLatestDuration,\n allowFontScaling = false,\n is12HourPicker,\n amLabel,\n pmLabel,\n padWithNItems,\n pickerGradientOverlayProps,\n topPickerGradientOverlayProps,\n bottomPickerGradientOverlayProps,\n LinearGradient,\n testID,\n styles,\n },\n ref\n ): React.ReactElement => {\n const data = !is12HourPicker\n ? generateNumbers(numberOfItems, {\n padNumbersWithZero,\n repeatNTimes: 3,\n disableInfiniteScroll,\n padWithNItems,\n })\n : generate12HourNumbers({\n padNumbersWithZero,\n repeatNTimes: 3,\n disableInfiniteScroll,\n padWithNItems,\n });\n\n const numberOfItemsToShow = 1 + padWithNItems * 2;\n\n const adjustedLimited = getAdjustedLimit(limit, numberOfItems);\n\n const initialScrollIndex = getScrollIndex({\n value: initialValue,\n numberOfItems,\n padWithNItems,\n disableInfiniteScroll,\n });\n\n const latestDuration = useRef(0);\n\n const flatListRef = useRef<FlatList | null>(null);\n\n useImperativeHandle(ref, () => ({\n reset: (options) => {\n flatListRef.current?.scrollToIndex({\n animated: options?.animated ?? false,\n index: initialScrollIndex,\n });\n },\n setValue: (value, options) => {\n flatListRef.current?.scrollToIndex({\n animated: options?.animated ?? false,\n index: getScrollIndex({\n value: value,\n numberOfItems,\n padWithNItems,\n disableInfiniteScroll,\n }),\n });\n },\n latestDuration: latestDuration,\n }));\n\n const renderItem = useCallback(\n ({ item }: { item: string }) => {\n let stringItem = item;\n let intItem: number;\n let isAm: boolean | undefined;\n\n if (!is12HourPicker) {\n intItem = parseInt(item);\n } else {\n isAm = item.includes(\"AM\");\n stringItem = item.replace(/\\s[AP]M/g, \"\");\n intItem = parseInt(stringItem);\n }\n\n return (\n <View\n key={item}\n style={styles.pickerItemContainer}\n testID=\"picker-item\">\n <Text\n allowFontScaling={allowFontScaling}\n style={[\n styles.pickerItem,\n intItem > adjustedLimited.max ||\n intItem < adjustedLimited.min\n ? styles.disabledPickerItem\n : {},\n ]}>\n {stringItem}\n </Text>\n {is12HourPicker ? (\n <View\n style={styles.pickerAmPmContainer}\n pointerEvents=\"none\">\n <Text\n style={[styles.pickerAmPmLabel]}\n allowFontScaling={allowFontScaling}>\n {isAm ? amLabel : pmLabel}\n </Text>\n </View>\n ) : null}\n </View>\n );\n },\n [\n adjustedLimited.max,\n adjustedLimited.min,\n allowFontScaling,\n amLabel,\n is12HourPicker,\n pmLabel,\n styles.disabledPickerItem,\n styles.pickerAmPmContainer,\n styles.pickerAmPmLabel,\n styles.pickerItem,\n styles.pickerItemContainer,\n ]\n );\n\n const onScroll = useCallback(\n (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n // this function is only used when the picker is in a modal\n // it is used to ensure that the modal gets the latest duration on clicking\n // the confirm button, even if the scrollview is still scrolling\n const newIndex = Math.round(\n e.nativeEvent.contentOffset.y /\n styles.pickerItemContainer.height\n );\n let newDuration =\n (disableInfiniteScroll\n ? newIndex\n : newIndex + padWithNItems) %\n (numberOfItems + 1);\n\n // check limits\n if (newDuration > adjustedLimited.max) {\n newDuration = adjustedLimited.max;\n } else if (newDuration < adjustedLimited.min) {\n newDuration = adjustedLimited.min;\n }\n latestDuration.current = newDuration;\n },\n [\n adjustedLimited.max,\n adjustedLimited.min,\n disableInfiniteScroll,\n numberOfItems,\n padWithNItems,\n styles.pickerItemContainer.height,\n ]\n );\n\n const onMomentumScrollEnd = useCallback(\n (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n const newIndex = Math.round(\n e.nativeEvent.contentOffset.y /\n styles.pickerItemContainer.height\n );\n let newDuration =\n (disableInfiniteScroll\n ? newIndex\n : newIndex + padWithNItems) %\n (numberOfItems + 1);\n\n // check limits\n if (newDuration > adjustedLimited.max) {\n const targetScrollIndex =\n newIndex - (newDuration - adjustedLimited.max);\n flatListRef.current?.scrollToIndex({\n animated: true,\n index:\n // guard against scrolling beyond end of list\n targetScrollIndex >= 0\n ? targetScrollIndex\n : adjustedLimited.max - 1,\n }); // scroll down to max\n newDuration = adjustedLimited.max;\n } else if (newDuration < adjustedLimited.min) {\n const targetScrollIndex =\n newIndex + (adjustedLimited.min - newDuration);\n flatListRef.current?.scrollToIndex({\n animated: true,\n index:\n // guard against scrolling beyond end of list\n targetScrollIndex <= data.length - 1\n ? targetScrollIndex\n : adjustedLimited.min,\n }); // scroll up to min\n newDuration = adjustedLimited.min;\n }\n\n onDurationChange(newDuration);\n },\n [\n adjustedLimited.max,\n adjustedLimited.min,\n data.length,\n disableInfiniteScroll,\n numberOfItems,\n onDurationChange,\n padWithNItems,\n styles.pickerItemContainer.height,\n ]\n );\n\n const onViewableItemsChanged = useCallback(\n ({ viewableItems }: { viewableItems: ViewToken[] }) => {\n if (\n viewableItems[0]?.index &&\n viewableItems[0].index < numberOfItems * 0.5\n ) {\n flatListRef.current?.scrollToIndex({\n animated: false,\n index: viewableItems[0].index + numberOfItems,\n });\n } else if (\n viewableItems[0]?.index &&\n viewableItems[0].index >= numberOfItems * 2.5\n ) {\n flatListRef.current?.scrollToIndex({\n animated: false,\n index: viewableItems[0].index - numberOfItems,\n });\n }\n },\n [numberOfItems]\n );\n\n const getItemLayout = useCallback(\n (_: ArrayLike<string> | null | undefined, index: number) => ({\n length: styles.pickerItemContainer.height,\n offset: styles.pickerItemContainer.height * index,\n index,\n }),\n [styles.pickerItemContainer.height]\n );\n\n const viewabilityConfigCallbackPairs =\n useRef<ViewabilityConfigCallbackPairs>([\n {\n viewabilityConfig: { viewAreaCoveragePercentThreshold: 25 },\n onViewableItemsChanged: onViewableItemsChanged,\n },\n ]);\n\n return (\n <View\n testID={testID}\n style={{\n height:\n styles.pickerItemContainer.height * numberOfItemsToShow,\n overflow: \"hidden\",\n }}>\n <FlatList\n ref={flatListRef}\n data={data}\n getItemLayout={getItemLayout}\n initialScrollIndex={initialScrollIndex}\n windowSize={numberOfItemsToShow}\n renderItem={renderItem}\n keyExtractor={KEY_EXTRACTOR}\n showsVerticalScrollIndicator={false}\n decelerationRate={0.88}\n scrollEventThrottle={16}\n snapToAlignment=\"start\"\n // used in place of snapToOffset due to bug on Android\n snapToOffsets={[...Array(data.length)].map(\n (_, i) => i * styles.pickerItemContainer.height\n )}\n viewabilityConfigCallbackPairs={\n !disableInfiniteScroll\n ? viewabilityConfigCallbackPairs?.current\n : undefined\n }\n onMomentumScrollEnd={onMomentumScrollEnd}\n onScroll={\n aggressivelyGetLatestDuration ? onScroll : undefined\n }\n testID=\"duration-scroll-flatlist\"\n />\n <View style={styles.pickerLabelContainer} pointerEvents=\"none\">\n {typeof label === \"string\" ? (\n <Text\n allowFontScaling={allowFontScaling}\n style={styles.pickerLabel}>\n {label}\n </Text>\n ) : (\n label ?? null\n )}\n </View>\n {LinearGradient ? (\n <>\n <LinearGradient\n colors={[\n styles.pickerContainer.backgroundColor ??\n \"white\",\n colorToRgba({\n color:\n styles.pickerContainer\n .backgroundColor ?? \"white\",\n opacity: 0,\n }),\n ]}\n start={{ x: 1, y: 0.3 }}\n end={{ x: 1, y: 1 }}\n pointerEvents=\"none\"\n {...pickerGradientOverlayProps}\n {...topPickerGradientOverlayProps}\n style={[styles.pickerGradientOverlay, { top: 0 }]}\n />\n <LinearGradient\n colors={[\n colorToRgba({\n color:\n styles.pickerContainer\n .backgroundColor ?? \"white\",\n opacity: 0,\n }),\n styles.pickerContainer.backgroundColor ??\n \"white\",\n ]}\n start={{ x: 1, y: 0 }}\n end={{ x: 1, y: 0.7 }}\n pointerEvents=\"none\"\n {...pickerGradientOverlayProps}\n {...bottomPickerGradientOverlayProps}\n style={[\n styles.pickerGradientOverlay,\n { bottom: -1 },\n ]}\n />\n </>\n ) : null}\n </View>\n );\n }\n);\n\nexport default React.memo(DurationScroll);\n"],"mappings":"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"}
@@ -4,6 +4,7 @@ import { View } from "react-native";
4
4
  import DurationScroll from "./DurationScroll";
5
5
  import { generateStyles } from "./TimerPicker.styles";
6
6
  const TimerPicker = /*#__PURE__*/forwardRef(({
7
+ allowFontScaling = false,
7
8
  onDurationChange,
8
9
  initialHours = 0,
9
10
  initialMinutes = 0,
@@ -84,6 +85,7 @@ const TimerPicker = /*#__PURE__*/forwardRef(({
84
85
  numberOfItems: 23,
85
86
  label: hourLabel ?? (!use12HourPicker ? "h" : undefined),
86
87
  initialValue: initialHours,
88
+ allowFontScaling: allowFontScaling,
87
89
  aggressivelyGetLatestDuration: aggressivelyGetLatestDuration,
88
90
  onDurationChange: setSelectedHours,
89
91
  pickerGradientOverlayProps: pickerGradientOverlayProps,
@@ -103,6 +105,7 @@ const TimerPicker = /*#__PURE__*/forwardRef(({
103
105
  numberOfItems: 59,
104
106
  label: minuteLabel ?? "m",
105
107
  initialValue: initialMinutes,
108
+ allowFontScaling: allowFontScaling,
106
109
  aggressivelyGetLatestDuration: aggressivelyGetLatestDuration,
107
110
  onDurationChange: setSelectedMinutes,
108
111
  padNumbersWithZero: true,
@@ -120,6 +123,7 @@ const TimerPicker = /*#__PURE__*/forwardRef(({
120
123
  numberOfItems: 59,
121
124
  label: secondLabel ?? "s",
122
125
  initialValue: initialSeconds,
126
+ allowFontScaling: allowFontScaling,
123
127
  aggressivelyGetLatestDuration: aggressivelyGetLatestDuration,
124
128
  onDurationChange: setSelectedSeconds,
125
129
  padNumbersWithZero: true,
@@ -1 +1 @@
1
- {"version":3,"names":["React","forwardRef","useEffect","useImperativeHandle","useMemo","useRef","useState","View","DurationScroll","generateStyles","TimerPicker","onDurationChange","initialHours","initialMinutes","initialSeconds","hideHours","hideMinutes","hideSeconds","hourLimit","minuteLimit","secondLimit","hourLabel","minuteLabel","secondLabel","padWithNItems","disableInfiniteScroll","aggressivelyGetLatestDuration","use12HourPicker","amLabel","pmLabel","LinearGradient","pickerContainerProps","pickerGradientOverlayProps","topPickerGradientOverlayProps","bottomPickerGradientOverlayProps","styles","customStyles","ref","checkedPadWithNItems","Math","round","selectedHours","setSelectedHours","selectedMinutes","setSelectedMinutes","selectedSeconds","setSelectedSeconds","hours","minutes","seconds","hoursDurationScrollRef","minutesDurationScrollRef","secondsDurationScrollRef","_hoursDurationScrollR3","_minutesDurationScrol3","_secondsDurationScrol3","reset","options","_hoursDurationScrollR","_minutesDurationScrol","_secondsDurationScrol","current","setValue","value","_hoursDurationScrollR2","_minutesDurationScrol2","_secondsDurationScrol2","latestDuration","createElement","_extends","style","pickerContainer","testID","numberOfItems","label","undefined","initialValue","limit","is12HourPicker","padNumbersWithZero","memo"],"sources":["index.tsx"],"sourcesContent":["import React, {\n MutableRefObject,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { View } from \"react-native\";\n\nimport DurationScroll, { DurationScrollRef, LimitType } from \"./DurationScroll\";\n\nimport { generateStyles, CustomTimerPickerStyles } from \"./TimerPicker.styles\";\nimport { LinearGradientProps } from \"./DurationScroll\";\n\nexport interface TimerPickerRef {\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 TimerPickerProps {\n onDurationChange?: (duration: {\n hours: number;\n minutes: number;\n seconds: number;\n }) => void;\n initialHours?: number;\n initialMinutes?: number;\n initialSeconds?: number;\n aggressivelyGetLatestDuration?: boolean;\n use12HourPicker?: boolean;\n amLabel?: string;\n pmLabel?: string;\n hideHours?: boolean;\n hideMinutes?: boolean;\n hideSeconds?: boolean;\n hourLimit?: LimitType;\n minuteLimit?: LimitType;\n secondLimit?: LimitType;\n hourLabel?: string | React.ReactElement;\n minuteLabel?: string | React.ReactElement;\n secondLabel?: string | React.ReactElement;\n padWithNItems?: number;\n disableInfiniteScroll?: boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LinearGradient?: any;\n pickerContainerProps?: React.ComponentProps<typeof View>;\n pickerGradientOverlayProps?: Partial<LinearGradientProps>;\n topPickerGradientOverlayProps?: Partial<LinearGradientProps>;\n bottomPickerGradientOverlayProps?: Partial<LinearGradientProps>;\n styles?: CustomTimerPickerStyles;\n}\n\nconst TimerPicker = forwardRef<TimerPickerRef, TimerPickerProps>(\n (\n {\n onDurationChange,\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 aggressivelyGetLatestDuration = false,\n use12HourPicker = false,\n amLabel = \"am\",\n pmLabel = \"pm\",\n LinearGradient,\n pickerContainerProps,\n pickerGradientOverlayProps,\n topPickerGradientOverlayProps,\n bottomPickerGradientOverlayProps,\n styles: customStyles,\n },\n ref\n ): React.ReactElement => {\n const checkedPadWithNItems =\n padWithNItems >= 0 ? Math.round(padWithNItems) : 0;\n\n const styles = useMemo(\n () =>\n generateStyles(customStyles, {\n padWithNItems: checkedPadWithNItems,\n }),\n\n [checkedPadWithNItems, customStyles]\n );\n\n const [selectedHours, setSelectedHours] = useState(initialHours);\n const [selectedMinutes, setSelectedMinutes] = useState(initialMinutes);\n const [selectedSeconds, setSelectedSeconds] = useState(initialSeconds);\n\n useEffect(() => {\n onDurationChange?.({\n hours: selectedHours,\n minutes: selectedMinutes,\n seconds: selectedSeconds,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedHours, selectedMinutes, selectedSeconds]);\n\n const hoursDurationScrollRef = useRef<DurationScrollRef>(null);\n const minutesDurationScrollRef = useRef<DurationScrollRef>(null);\n const secondsDurationScrollRef = useRef<DurationScrollRef>(null);\n\n useImperativeHandle(ref, () => ({\n reset: (options) => {\n setSelectedHours(initialHours);\n setSelectedMinutes(initialMinutes);\n setSelectedSeconds(initialSeconds);\n hoursDurationScrollRef.current?.reset(options);\n minutesDurationScrollRef.current?.reset(options);\n secondsDurationScrollRef.current?.reset(options);\n },\n setValue: (value, options) => {\n setSelectedHours(value.hours);\n setSelectedMinutes(value.minutes);\n setSelectedSeconds(value.seconds);\n hoursDurationScrollRef.current?.setValue(value.hours, options);\n minutesDurationScrollRef.current?.setValue(\n value.minutes,\n options\n );\n secondsDurationScrollRef.current?.setValue(\n value.seconds,\n options\n );\n },\n latestDuration: {\n hours: hoursDurationScrollRef.current?.latestDuration,\n minutes: minutesDurationScrollRef.current?.latestDuration,\n seconds: secondsDurationScrollRef.current?.latestDuration,\n },\n }));\n\n return (\n <View\n {...pickerContainerProps}\n style={styles.pickerContainer}\n testID=\"timer-picker\">\n {!hideHours ? (\n <DurationScroll\n ref={hoursDurationScrollRef}\n numberOfItems={23}\n label={\n hourLabel ?? (!use12HourPicker ? \"h\" : undefined)\n }\n initialValue={initialHours}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n onDurationChange={setSelectedHours}\n pickerGradientOverlayProps={pickerGradientOverlayProps}\n topPickerGradientOverlayProps={\n topPickerGradientOverlayProps\n }\n bottomPickerGradientOverlayProps={\n bottomPickerGradientOverlayProps\n }\n disableInfiniteScroll={disableInfiniteScroll}\n padWithNItems={checkedPadWithNItems}\n limit={hourLimit}\n LinearGradient={LinearGradient}\n is12HourPicker={use12HourPicker}\n amLabel={amLabel}\n pmLabel={pmLabel}\n styles={styles}\n testID=\"duration-scroll-hour\"\n />\n ) : null}\n {!hideMinutes ? (\n <DurationScroll\n ref={minutesDurationScrollRef}\n numberOfItems={59}\n label={minuteLabel ?? \"m\"}\n initialValue={initialMinutes}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n onDurationChange={setSelectedMinutes}\n padNumbersWithZero\n pickerGradientOverlayProps={pickerGradientOverlayProps}\n topPickerGradientOverlayProps={\n topPickerGradientOverlayProps\n }\n bottomPickerGradientOverlayProps={\n bottomPickerGradientOverlayProps\n }\n disableInfiniteScroll={disableInfiniteScroll}\n padWithNItems={checkedPadWithNItems}\n limit={minuteLimit}\n LinearGradient={LinearGradient}\n styles={styles}\n testID=\"duration-scroll-minute\"\n />\n ) : null}\n {!hideSeconds ? (\n <DurationScroll\n ref={secondsDurationScrollRef}\n numberOfItems={59}\n label={secondLabel ?? \"s\"}\n initialValue={initialSeconds}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n onDurationChange={setSelectedSeconds}\n padNumbersWithZero\n pickerGradientOverlayProps={pickerGradientOverlayProps}\n topPickerGradientOverlayProps={\n topPickerGradientOverlayProps\n }\n bottomPickerGradientOverlayProps={\n bottomPickerGradientOverlayProps\n }\n disableInfiniteScroll={disableInfiniteScroll}\n padWithNItems={checkedPadWithNItems}\n limit={secondLimit}\n LinearGradient={LinearGradient}\n styles={styles}\n testID=\"duration-scroll-second\"\n />\n ) : null}\n </View>\n );\n }\n);\n\nexport default React.memo(TimerPicker);\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","forwardRef","useEffect","useImperativeHandle","useMemo","useRef","useState","View","DurationScroll","generateStyles","TimerPicker","allowFontScaling","onDurationChange","initialHours","initialMinutes","initialSeconds","hideHours","hideMinutes","hideSeconds","hourLimit","minuteLimit","secondLimit","hourLabel","minuteLabel","secondLabel","padWithNItems","disableInfiniteScroll","aggressivelyGetLatestDuration","use12HourPicker","amLabel","pmLabel","LinearGradient","pickerContainerProps","pickerGradientOverlayProps","topPickerGradientOverlayProps","bottomPickerGradientOverlayProps","styles","customStyles","ref","checkedPadWithNItems","Math","round","selectedHours","setSelectedHours","selectedMinutes","setSelectedMinutes","selectedSeconds","setSelectedSeconds","hours","minutes","seconds","hoursDurationScrollRef","minutesDurationScrollRef","secondsDurationScrollRef","_hoursDurationScrollR3","_minutesDurationScrol3","_secondsDurationScrol3","reset","options","_hoursDurationScrollR","_minutesDurationScrol","_secondsDurationScrol","current","setValue","value","_hoursDurationScrollR2","_minutesDurationScrol2","_secondsDurationScrol2","latestDuration","createElement","_extends","style","pickerContainer","testID","numberOfItems","label","undefined","initialValue","limit","is12HourPicker","padNumbersWithZero","memo"],"sources":["index.tsx"],"sourcesContent":["import React, {\n MutableRefObject,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { View } from \"react-native\";\n\nimport DurationScroll, { DurationScrollRef, LimitType } from \"./DurationScroll\";\n\nimport { generateStyles, CustomTimerPickerStyles } from \"./TimerPicker.styles\";\nimport { LinearGradientProps } from \"./DurationScroll\";\n\nexport interface TimerPickerRef {\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 TimerPickerProps {\n allowFontScaling?: boolean;\n onDurationChange?: (duration: {\n hours: number;\n minutes: number;\n seconds: number;\n }) => void;\n initialHours?: number;\n initialMinutes?: number;\n initialSeconds?: number;\n aggressivelyGetLatestDuration?: boolean;\n use12HourPicker?: boolean;\n amLabel?: string;\n pmLabel?: string;\n hideHours?: boolean;\n hideMinutes?: boolean;\n hideSeconds?: boolean;\n hourLimit?: LimitType;\n minuteLimit?: LimitType;\n secondLimit?: LimitType;\n hourLabel?: string | React.ReactElement;\n minuteLabel?: string | React.ReactElement;\n secondLabel?: string | React.ReactElement;\n padWithNItems?: number;\n disableInfiniteScroll?: boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LinearGradient?: any;\n pickerContainerProps?: React.ComponentProps<typeof View>;\n pickerGradientOverlayProps?: Partial<LinearGradientProps>;\n topPickerGradientOverlayProps?: Partial<LinearGradientProps>;\n bottomPickerGradientOverlayProps?: Partial<LinearGradientProps>;\n styles?: CustomTimerPickerStyles;\n}\n\nconst TimerPicker = forwardRef<TimerPickerRef, TimerPickerProps>(\n (\n {\n allowFontScaling = false,\n onDurationChange,\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 aggressivelyGetLatestDuration = false,\n use12HourPicker = false,\n amLabel = \"am\",\n pmLabel = \"pm\",\n LinearGradient,\n pickerContainerProps,\n pickerGradientOverlayProps,\n topPickerGradientOverlayProps,\n bottomPickerGradientOverlayProps,\n styles: customStyles,\n },\n ref\n ): React.ReactElement => {\n const checkedPadWithNItems =\n padWithNItems >= 0 ? Math.round(padWithNItems) : 0;\n\n const styles = useMemo(\n () =>\n generateStyles(customStyles, {\n padWithNItems: checkedPadWithNItems,\n }),\n\n [checkedPadWithNItems, customStyles]\n );\n\n const [selectedHours, setSelectedHours] = useState(initialHours);\n const [selectedMinutes, setSelectedMinutes] = useState(initialMinutes);\n const [selectedSeconds, setSelectedSeconds] = useState(initialSeconds);\n\n useEffect(() => {\n onDurationChange?.({\n hours: selectedHours,\n minutes: selectedMinutes,\n seconds: selectedSeconds,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedHours, selectedMinutes, selectedSeconds]);\n\n const hoursDurationScrollRef = useRef<DurationScrollRef>(null);\n const minutesDurationScrollRef = useRef<DurationScrollRef>(null);\n const secondsDurationScrollRef = useRef<DurationScrollRef>(null);\n\n useImperativeHandle(ref, () => ({\n reset: (options) => {\n setSelectedHours(initialHours);\n setSelectedMinutes(initialMinutes);\n setSelectedSeconds(initialSeconds);\n hoursDurationScrollRef.current?.reset(options);\n minutesDurationScrollRef.current?.reset(options);\n secondsDurationScrollRef.current?.reset(options);\n },\n setValue: (value, options) => {\n setSelectedHours(value.hours);\n setSelectedMinutes(value.minutes);\n setSelectedSeconds(value.seconds);\n hoursDurationScrollRef.current?.setValue(value.hours, options);\n minutesDurationScrollRef.current?.setValue(\n value.minutes,\n options\n );\n secondsDurationScrollRef.current?.setValue(\n value.seconds,\n options\n );\n },\n latestDuration: {\n hours: hoursDurationScrollRef.current?.latestDuration,\n minutes: minutesDurationScrollRef.current?.latestDuration,\n seconds: secondsDurationScrollRef.current?.latestDuration,\n },\n }));\n\n return (\n <View\n {...pickerContainerProps}\n style={styles.pickerContainer}\n testID=\"timer-picker\">\n {!hideHours ? (\n <DurationScroll\n ref={hoursDurationScrollRef}\n numberOfItems={23}\n label={\n hourLabel ?? (!use12HourPicker ? \"h\" : undefined)\n }\n initialValue={initialHours}\n allowFontScaling={allowFontScaling}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n onDurationChange={setSelectedHours}\n pickerGradientOverlayProps={pickerGradientOverlayProps}\n topPickerGradientOverlayProps={\n topPickerGradientOverlayProps\n }\n bottomPickerGradientOverlayProps={\n bottomPickerGradientOverlayProps\n }\n disableInfiniteScroll={disableInfiniteScroll}\n padWithNItems={checkedPadWithNItems}\n limit={hourLimit}\n LinearGradient={LinearGradient}\n is12HourPicker={use12HourPicker}\n amLabel={amLabel}\n pmLabel={pmLabel}\n styles={styles}\n testID=\"duration-scroll-hour\"\n />\n ) : null}\n {!hideMinutes ? (\n <DurationScroll\n ref={minutesDurationScrollRef}\n numberOfItems={59}\n label={minuteLabel ?? \"m\"}\n initialValue={initialMinutes}\n allowFontScaling={allowFontScaling}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n onDurationChange={setSelectedMinutes}\n padNumbersWithZero\n pickerGradientOverlayProps={pickerGradientOverlayProps}\n topPickerGradientOverlayProps={\n topPickerGradientOverlayProps\n }\n bottomPickerGradientOverlayProps={\n bottomPickerGradientOverlayProps\n }\n disableInfiniteScroll={disableInfiniteScroll}\n padWithNItems={checkedPadWithNItems}\n limit={minuteLimit}\n LinearGradient={LinearGradient}\n styles={styles}\n testID=\"duration-scroll-minute\"\n />\n ) : null}\n {!hideSeconds ? (\n <DurationScroll\n ref={secondsDurationScrollRef}\n numberOfItems={59}\n label={secondLabel ?? \"s\"}\n initialValue={initialSeconds}\n allowFontScaling={allowFontScaling}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n onDurationChange={setSelectedSeconds}\n padNumbersWithZero\n pickerGradientOverlayProps={pickerGradientOverlayProps}\n topPickerGradientOverlayProps={\n topPickerGradientOverlayProps\n }\n bottomPickerGradientOverlayProps={\n bottomPickerGradientOverlayProps\n }\n disableInfiniteScroll={disableInfiniteScroll}\n padWithNItems={checkedPadWithNItems}\n limit={secondLimit}\n LinearGradient={LinearGradient}\n styles={styles}\n testID=\"duration-scroll-second\"\n />\n ) : null}\n </View>\n );\n }\n);\n\nexport default React.memo(TimerPicker);\n"],"mappings":"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"}
@@ -25,6 +25,7 @@ const TimerPickerModal = /*#__PURE__*/forwardRef(({
25
25
  secondLabel,
26
26
  padWithNItems = 1,
27
27
  disableInfiniteScroll = false,
28
+ allowFontScaling = false,
28
29
  use12HourPicker,
29
30
  amLabel,
30
31
  pmLabel,
@@ -143,6 +144,7 @@ const TimerPickerModal = /*#__PURE__*/forwardRef(({
143
144
  secondLabel: secondLabel,
144
145
  padWithNItems: padWithNItems,
145
146
  disableInfiniteScroll: disableInfiniteScroll,
147
+ allowFontScaling: allowFontScaling,
146
148
  use12HourPicker: use12HourPicker,
147
149
  amLabel: amLabel,
148
150
  pmLabel: pmLabel,
@@ -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","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 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 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":";AAAA,OAAOA,KAAK,IAERC,UAAU,EACVC,WAAW,EACXC,mBAAmB,EACnBC,MAAM,EACNC,QAAQ,QACL,OAAO;AACd,SAASC,IAAI,EAAEC,IAAI,EAAEC,gBAAgB,QAAQ,cAAc;AAE3D,OAAOC,WAAW,MAA4C,eAAe;AAC7E,OAAOC,KAAK,MAAM,SAAS;AAE3B,SACIC,cAAc,QAEX,2BAA2B;AA8ClC,MAAMC,gBAAgB,gBAAGX,UAAU,CAC/B,CACI;EACIY,OAAO;EACPC,YAAY;EACZC,SAAS;EACTC,QAAQ;EACRC,gBAAgB;EAChBC,mBAAmB;EACnBC,YAAY,GAAG,CAAC;EAChBC,cAAc,GAAG,CAAC;EAClBC,cAAc,GAAG,CAAC;EAClBC,SAAS,GAAG,KAAK;EACjBC,WAAW,GAAG,KAAK;EACnBC,WAAW,GAAG,KAAK;EACnBC,SAAS;EACTC,WAAW;EACXC,WAAW;EACXC,SAAS;EACTC,WAAW;EACXC,WAAW;EACXC,aAAa,GAAG,CAAC;EACjBC,qBAAqB,GAAG,KAAK;EAC7BC,eAAe;EACfC,OAAO;EACPC,OAAO;EACPC,gBAAgB,GAAG,KAAK;EACxBC,iBAAiB,GAAG,SAAS;EAC7BC,gBAAgB,GAAG,QAAQ;EAC3BC,UAAU;EACVC,cAAc;EACdC,UAAU;EACVC,cAAc;EACdC,qBAAqB;EACrBC,oBAAoB;EACpBC,oBAAoB;EACpBC,2BAA2B;EAC3BC,eAAe;EACfC,0BAA0B;EAC1BC,6BAA6B;EAC7BC,gCAAgC;EAChCC,MAAM,EAAEC;AACZ,CAAC,EACDC,GAAG,KACkB;EACrB,MAAMF,MAAM,GAAGxC,cAAc,CAACyC,YAAY,CAAC;EAE3C,MAAME,cAAc,GAAGlD,MAAM,CAAiB,IAAI,CAAC;EAEnD,MAAM,CAACmD,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGnD,QAAQ,CAAC;IACrDoD,KAAK,EAAEtC,YAAY;IACnBuC,OAAO,EAAEtC,cAAc;IACvBuC,OAAO,EAAEtC;EACb,CAAC,CAAC;EACF,MAAM,CAACuC,iBAAiB,EAAEC,oBAAoB,CAAC,GAAGxD,QAAQ,CAAC;IACvDoD,KAAK,EAAEtC,YAAY;IACnBuC,OAAO,EAAEtC,cAAc;IACvBuC,OAAO,EAAEtC;EACb,CAAC,CAAC;EAEF,MAAMyC,gBAAgB,GAAGA,CAAA,KAAM;IAC3BN,mBAAmB,CAAC;MAChBC,KAAK,EAAEG,iBAAiB,CAACH,KAAK;MAC9BC,OAAO,EAAEE,iBAAiB,CAACF,OAAO;MAClCC,OAAO,EAAEC,iBAAiB,CAACD;IAC/B,CAAC,CAAC;IACF7C,YAAY,CAAC,KAAK,CAAC;EACvB,CAAC;EAED,MAAMiD,cAAc,GAAGA,CAAA,KAAM;IAAA,IAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA;IACzB,MAAMC,cAAc,IAAAJ,qBAAA,GAAGV,cAAc,CAACe,OAAO,cAAAL,qBAAA,uBAAtBA,qBAAA,CAAwBI,cAAc;IAC7D,MAAME,WAAW,GAAG;MAChBb,KAAK,EAAE,CAAAW,cAAc,aAAdA,cAAc,gBAAAH,qBAAA,GAAdG,cAAc,CAAEX,KAAK,cAAAQ,qBAAA,uBAArBA,qBAAA,CAAuBI,OAAO,KAAId,gBAAgB,CAACE,KAAK;MAC/DC,OAAO,EACH,CAAAU,cAAc,aAAdA,cAAc,gBAAAF,qBAAA,GAAdE,cAAc,CAAEV,OAAO,cAAAQ,qBAAA,uBAAvBA,qBAAA,CAAyBG,OAAO,KAChCd,gBAAgB,CAACG,OAAO;MAC5BC,OAAO,EACH,CAAAS,cAAc,aAAdA,cAAc,gBAAAD,qBAAA,GAAdC,cAAc,CAAET,OAAO,cAAAQ,qBAAA,uBAAvBA,qBAAA,CAAyBE,OAAO,KAChCd,gBAAgB,CAACI;IACzB,CAAC;IACDE,oBAAoB,CAACS,WAAW,CAAC;IACjCvD,SAAS,CAACuD,WAAW,CAAC;EAC1B,CAAC;EAED,MAAMC,aAAa,GAAGA,CAAA,KAAM;IACxBzD,YAAY,CAAC,KAAK,CAAC;IACnB0C,mBAAmB,CAACI,iBAAiB,CAAC;IACtC5C,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAG,CAAC;EAChB,CAAC;;EAED;EACA,MAAMwD,qBAAqB,GAAGtE,WAAW,CACpCuE,QAA6D,IAAK;IAC/DjB,mBAAmB,CAACiB,QAAQ,CAAC;IAC7BxD,gBAAgB,aAAhBA,gBAAgB,eAAhBA,gBAAgB,CAAGwD,QAAQ,CAAC;EAChC,CAAC,EACD,CAACxD,gBAAgB,CACrB,CAAC;EAEDd,mBAAmB,CAACkD,GAAG,EAAE;IAAA,IAAAqB,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IAAA,OAAO;MAC5BC,KAAK,EAAGC,OAAO,IAAK;QAAA,IAAAC,sBAAA;QAChB,MAAMC,eAAe,GAAG;UACpBvB,KAAK,EAAEtC,YAAY;UACnBuC,OAAO,EAAEtC,cAAc;UACvBuC,OAAO,EAAEtC;QACb,CAAC;QACDmC,mBAAmB,CAACwB,eAAe,CAAC;QACpCnB,oBAAoB,CAACmB,eAAe,CAAC;QACrC,CAAAD,sBAAA,GAAAzB,cAAc,CAACe,OAAO,cAAAU,sBAAA,eAAtBA,sBAAA,CAAwBF,KAAK,CAACC,OAAO,CAAC;MAC1C,CAAC;MACDG,QAAQ,EAAEA,CAACC,KAAK,EAAEJ,OAAO,KAAK;QAAA,IAAAK,sBAAA;QAC1B3B,mBAAmB,CAAC0B,KAAK,CAAC;QAC1BrB,oBAAoB,CAACqB,KAAK,CAAC;QAC3B,CAAAC,sBAAA,GAAA7B,cAAc,CAACe,OAAO,cAAAc,sBAAA,eAAtBA,sBAAA,CAAwBF,QAAQ,CAACC,KAAK,EAAEJ,OAAO,CAAC;MACpD,CAAC;MACDV,cAAc,EAAE;QACZX,KAAK,GAAAiB,sBAAA,GAAEpB,cAAc,CAACe,OAAO,cAAAK,sBAAA,gBAAAA,sBAAA,GAAtBA,sBAAA,CAAwBN,cAAc,cAAAM,sBAAA,uBAAtCA,sBAAA,CAAwCjB,KAAK;QACpDC,OAAO,GAAAiB,sBAAA,GAAErB,cAAc,CAACe,OAAO,cAAAM,sBAAA,gBAAAA,sBAAA,GAAtBA,sBAAA,CAAwBP,cAAc,cAAAO,sBAAA,uBAAtCA,sBAAA,CAAwCjB,OAAO;QACxDC,OAAO,GAAAiB,sBAAA,GAAEtB,cAAc,CAACe,OAAO,cAAAO,sBAAA,gBAAAA,sBAAA,GAAtBA,sBAAA,CAAwBR,cAAc,cAAAQ,sBAAA,uBAAtCA,sBAAA,CAAwCjB;MACrD;IACJ,CAAC;EAAA,CAAC,CAAC;EAEH,oBACI3D,KAAA,CAAAoF,aAAA,CAAC1E,KAAK,EAAA2E,QAAA;IACFC,SAAS,EAAEzE,OAAQ;IACnB0E,cAAc,EACVrE,mBAAmB,GAAG4C,gBAAgB,GAAG0B;EAC5C,GACG/C,UAAU;IACdgD,MAAM,EAAC;EAAoB,iBAC3BzF,KAAA,CAAAoF,aAAA,CAAC9E,IAAI,EAAA+E,QAAA,KAAK3C,cAAc;IAAEgD,KAAK,EAAEvC,MAAM,CAACwC;EAAU,iBAC9C3F,KAAA,CAAAoF,aAAA,CAAC9E,IAAI,EAAA+E,QAAA,KACG1C,qBAAqB;IACzB+C,KAAK,EAAEvC,MAAM,CAACyC;EAAiB,IAC9BrD,UAAU,gBACPvC,KAAA,CAAAoF,aAAA,CAAC7E,IAAI,EAAA8E,QAAA,KACGtC,eAAe;IACnB2C,KAAK,EAAEvC,MAAM,CAACZ;EAAW,IACxBA,UACC,CAAC,GACP,IAAI,eACRvC,KAAA,CAAAoF,aAAA,CAAC3E,WAAW;IACR4C,GAAG,EAAEC,cAAe;IACpBrC,gBAAgB,EAAEuD,qBAAsB;IACxCrD,YAAY,EAAEyC,iBAAiB,CAACH,KAAM;IACtCrC,cAAc,EAAEwC,iBAAiB,CAACF,OAAQ;IAC1CrC,cAAc,EAAEuC,iBAAiB,CAACD,OAAQ;IAC1CkC,6BAA6B,EAAE,IAAK;IACpCvE,SAAS,EAAEA,SAAU;IACrBC,WAAW,EAAEA,WAAY;IACzBC,WAAW,EAAEA,WAAY;IACzBC,SAAS,EAAEA,SAAU;IACrBC,WAAW,EAAEA,WAAY;IACzBC,WAAW,EAAEA,WAAY;IACzBC,SAAS,EAAEA,SAAU;IACrBC,WAAW,EAAEA,WAAY;IACzBC,WAAW,EAAEA,WAAY;IACzBC,aAAa,EAAEA,aAAc;IAC7BC,qBAAqB,EAAEA,qBAAsB;IAC7CC,eAAe,EAAEA,eAAgB;IACjCC,OAAO,EAAEA,OAAQ;IACjBC,OAAO,EAAEA,OAAQ;IACjBK,cAAc,EAAEA,cAAe;IAC/BI,oBAAoB,EAAEA,oBAAqB;IAC3CI,0BAA0B,EACtBA,0BACH;IACDC,6BAA6B,EACzBA,6BACH;IACDC,gCAAgC,EAC5BA,gCACH;IACDC,MAAM,EAAEC;EAAa,CACxB,CAAC,eACFpD,KAAA,CAAAoF,aAAA,CAAC9E,IAAI,EAAA+E,QAAA,KACGxC,oBAAoB;IACxB6C,KAAK,EAAEvC,MAAM,CAAC2C;EAAgB,IAC7B,CAAC1D,gBAAgB,gBACdpC,KAAA,CAAAoF,aAAA,CAAC5E,gBAAgB,EAAA6E,QAAA;IACbU,OAAO,EAAExB;EAAc,GACnBzB,2BAA2B,gBAC/B9C,KAAA,CAAAoF,aAAA,CAAC7E,IAAI;IACDmF,KAAK,EAAE,CACHvC,MAAM,CAAC6C,MAAM,EACb7C,MAAM,CAAC8C,YAAY;EACrB,GACD3D,gBACC,CACQ,CAAC,GACnB,IAAI,eACRtC,KAAA,CAAAoF,aAAA,CAAC5E,gBAAgB,EAAA6E,QAAA;IACbU,OAAO,EAAEhC;EAAe,GACpBjB,2BAA2B,gBAC/B9C,KAAA,CAAAoF,aAAA,CAAC7E,IAAI;IACDmF,KAAK,EAAE,CACHvC,MAAM,CAAC6C,MAAM,EACb7C,MAAM,CAAC+C,aAAa;EACtB,GACD7D,iBACC,CACQ,CAChB,CACJ,CACJ,CACH,CAAC;AAEhB,CACJ,CAAC;AAED,4BAAerC,KAAK,CAACmG,IAAI,CAACvF,gBAAgB,CAAC"}
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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"}
@@ -25,6 +25,7 @@ export type LimitType = {
25
25
  min?: number;
26
26
  };
27
27
  interface DurationScrollProps {
28
+ allowFontScaling?: boolean;
28
29
  numberOfItems: number;
29
30
  label?: string | React.ReactElement;
30
31
  initialValue?: number;
@@ -21,6 +21,7 @@ export interface TimerPickerRef {
21
21
  };
22
22
  }
23
23
  export interface TimerPickerProps {
24
+ allowFontScaling?: boolean;
24
25
  onDurationChange?: (duration: {
25
26
  hours: number;
26
27
  minutes: number;
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "react-native-timer-picker",
3
- "description": "A simple, flexible, performant duration picker for Expo React Native apps 🔥\n\nGreat for timers, alarms and duration inputs ⏰🕰️⏳",
3
+ "description": "A simple, flexible, performant duration picker for React Native apps 🔥\n\nGreat for timers, alarms and duration inputs ⏰🕰️⏳",
4
4
  "author": {
5
5
  "name": "Tim Roberts",
6
6
  "url": "https://github.com/troberts-28"
7
7
  },
8
8
  "license": "MIT",
9
- "version": "1.4.0",
9
+ "version": "1.5.1",
10
10
  "main": "dist/commonjs/index.js",
11
11
  "types": "dist/typescript/src/index.d.ts",
12
12
  "scripts": {
@@ -48,6 +48,7 @@ export type LimitType = {
48
48
  };
49
49
 
50
50
  interface DurationScrollProps {
51
+ allowFontScaling?: boolean;
51
52
  numberOfItems: number;
52
53
  label?: string | React.ReactElement;
53
54
  initialValue?: number;
@@ -83,6 +84,7 @@ const DurationScroll = forwardRef<DurationScrollRef, DurationScrollProps>(
83
84
  disableInfiniteScroll = false,
84
85
  limit,
85
86
  aggressivelyGetLatestDuration,
87
+ allowFontScaling = false,
86
88
  is12HourPicker,
87
89
  amLabel,
88
90
  pmLabel,
@@ -166,6 +168,7 @@ const DurationScroll = forwardRef<DurationScrollRef, DurationScrollProps>(
166
168
  style={styles.pickerItemContainer}
167
169
  testID="picker-item">
168
170
  <Text
171
+ allowFontScaling={allowFontScaling}
169
172
  style={[
170
173
  styles.pickerItem,
171
174
  intItem > adjustedLimited.max ||
@@ -179,7 +182,9 @@ const DurationScroll = forwardRef<DurationScrollRef, DurationScrollProps>(
179
182
  <View
180
183
  style={styles.pickerAmPmContainer}
181
184
  pointerEvents="none">
182
- <Text style={[styles.pickerAmPmLabel]}>
185
+ <Text
186
+ style={[styles.pickerAmPmLabel]}
187
+ allowFontScaling={allowFontScaling}>
183
188
  {isAm ? amLabel : pmLabel}
184
189
  </Text>
185
190
  </View>
@@ -190,6 +195,7 @@ const DurationScroll = forwardRef<DurationScrollRef, DurationScrollProps>(
190
195
  [
191
196
  adjustedLimited.max,
192
197
  adjustedLimited.min,
198
+ allowFontScaling,
193
199
  amLabel,
194
200
  is12HourPicker,
195
201
  pmLabel,
@@ -364,7 +370,11 @@ const DurationScroll = forwardRef<DurationScrollRef, DurationScrollProps>(
364
370
  />
365
371
  <View style={styles.pickerLabelContainer} pointerEvents="none">
366
372
  {typeof label === "string" ? (
367
- <Text style={styles.pickerLabel}>{label}</Text>
373
+ <Text
374
+ allowFontScaling={allowFontScaling}
375
+ style={styles.pickerLabel}>
376
+ {label}
377
+ </Text>
368
378
  ) : (
369
379
  label ?? null
370
380
  )}
@@ -32,6 +32,7 @@ export interface TimerPickerRef {
32
32
  }
33
33
 
34
34
  export interface TimerPickerProps {
35
+ allowFontScaling?: boolean;
35
36
  onDurationChange?: (duration: {
36
37
  hours: number;
37
38
  minutes: number;
@@ -67,6 +68,7 @@ export interface TimerPickerProps {
67
68
  const TimerPicker = forwardRef<TimerPickerRef, TimerPickerProps>(
68
69
  (
69
70
  {
71
+ allowFontScaling = false,
70
72
  onDurationChange,
71
73
  initialHours = 0,
72
74
  initialMinutes = 0,
@@ -167,6 +169,7 @@ const TimerPicker = forwardRef<TimerPickerRef, TimerPickerProps>(
167
169
  hourLabel ?? (!use12HourPicker ? "h" : undefined)
168
170
  }
169
171
  initialValue={initialHours}
172
+ allowFontScaling={allowFontScaling}
170
173
  aggressivelyGetLatestDuration={
171
174
  aggressivelyGetLatestDuration
172
175
  }
@@ -195,6 +198,7 @@ const TimerPicker = forwardRef<TimerPickerRef, TimerPickerProps>(
195
198
  numberOfItems={59}
196
199
  label={minuteLabel ?? "m"}
197
200
  initialValue={initialMinutes}
201
+ allowFontScaling={allowFontScaling}
198
202
  aggressivelyGetLatestDuration={
199
203
  aggressivelyGetLatestDuration
200
204
  }
@@ -221,6 +225,7 @@ const TimerPicker = forwardRef<TimerPickerRef, TimerPickerProps>(
221
225
  numberOfItems={59}
222
226
  label={secondLabel ?? "s"}
223
227
  initialValue={initialSeconds}
228
+ allowFontScaling={allowFontScaling}
224
229
  aggressivelyGetLatestDuration={
225
230
  aggressivelyGetLatestDuration
226
231
  }
@@ -83,6 +83,7 @@ const TimerPickerModal = forwardRef<TimerPickerModalRef, TimerPickerModalProps>(
83
83
  secondLabel,
84
84
  padWithNItems = 1,
85
85
  disableInfiniteScroll = false,
86
+ allowFontScaling = false,
86
87
  use12HourPicker,
87
88
  amLabel,
88
89
  pmLabel,
@@ -219,6 +220,7 @@ const TimerPickerModal = forwardRef<TimerPickerModalRef, TimerPickerModalProps>(
219
220
  secondLabel={secondLabel}
220
221
  padWithNItems={padWithNItems}
221
222
  disableInfiniteScroll={disableInfiniteScroll}
223
+ allowFontScaling={allowFontScaling}
222
224
  use12HourPicker={use12HourPicker}
223
225
  amLabel={amLabel}
224
226
  pmLabel={pmLabel}