react-native-timer-picker 1.5.2 → 1.5.4

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
@@ -7,11 +7,11 @@
7
7
 
8
8
  A simple, flexible, performant duration picker component for React Native apps 🔥
9
9
 
10
- Great for timers, alarms and duration inputs ⏰🕰️⏳
10
+ Great for timers, alarms and duration inputs.
11
11
 
12
12
  Works with Expo and bare React Native apps.
13
13
 
14
- - [Demos 📱](#demos-📱)
14
+ - [Demos 📱](#demos-)
15
15
  - [Peer Dependencies 👶](#peer-dependencies-)
16
16
  - [Installation 🚀](#installation-)
17
17
  - [Examples 😎](#examples-)
@@ -27,13 +27,16 @@ Works with Expo and bare React Native apps.
27
27
  - [Methods 🔄](#methods-)
28
28
  - [TimerPicker](#timerpicker)
29
29
  - [TimerPickerModal](#timerpickermodal)
30
+ - [Contributing 🧑‍🤝‍🧑](#contributing-)
31
+ - [Dev Setup](#dev-setup)
32
+ - [GitHub Guidelines](#github-guidelines)
30
33
  - [License 📝](#license-)
31
34
 
32
35
  <br>
33
36
 
34
37
  ## Demos 📱
35
38
 
36
- **Try it out for yourself on [Expo Snack](https://snack.expo.dev/@nuumi/react-native-timer-picker-demo)!** Make sure to run it on iOS/Android to see it working properly.
39
+ **Try it out for yourself on [Expo Snack](https://snack.expo.dev/@nuumi/react-native-timer-picker-demo)!** Make sure to run it on a mobile to see it working properly.
37
40
 
38
41
  <p>
39
42
  <img src="demos/example1.gif" width="250" height="550" style="margin-right:50px"/>
@@ -257,6 +260,16 @@ return (
257
260
  pickerContainer: {
258
261
  marginRight: 6,
259
262
  },
263
+ pickerItemContainer: {
264
+ width: 100
265
+ },
266
+ pickerLabelContainer: {
267
+ right: -20,
268
+ top: 0,
269
+ bottom: 6,
270
+ width: 40,
271
+ alignItems: "center",
272
+ },
260
273
  }}
261
274
  />
262
275
  </View>
@@ -316,34 +329,34 @@ return (
316
329
 
317
330
  ### TimerPicker ⏲️
318
331
 
319
- | Prop | Description | Type | Default | Required |
320
- | :------------------------------: | :---------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----: | :------: |
321
- | onDurationChange | Callback when the duration changes | `(duration: { hours: number, minutes: number, seconds: number }) => void` | - | false |
322
- | initialHours | Initial value for hours | Number | - | false |
323
- | initialMinutes | Initial value for minutes | Number | - | false |
324
- | initialSeconds | Initial value for seconds | Number | - | false |
325
- | hideHours | Hide the hours picker | Boolean | false | false |
326
- | hideMinutes | Hide the minutes picker | Boolean | false | false |
327
- | hideSeconds | Hide the seconds picker | Boolean | false | false |
328
- | hourLimit | Limit on the hours it is possible to select | { max?: Number, min?: Number } | - | false |
329
- | minuteLimit | Limit on the minutes it is possible to select | { max?: Number, min?: Number } | - | false |
330
- | secondLimit | Limit on the seconds it is possible to select | { max?: Number, min?: Number } | - | false |
331
- | hourLabel | Label for the hours picker | String \| React.ReactElement | h | false |
332
- | minuteLabel | Label for the minutes picker | String \| React.ReactElement | m | false |
333
- | secondLabel | Label for the seconds picker | String \| React.ReactElement | s | false |
334
- | padWithNItems | Number of items to pad the picker with on either side | Number | 1 | false |
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 |
337
- | use12HourPicker | Switch the hour picker to 12-hour format with an AM / PM label | Boolean | false | false |
338
- | amLabel | Set the AM label if using the 12-hour picker | String | am | false |
339
- | pmLabel | Set the PM label if using the 12-hour picker | String | pm | false |
340
- | disableInfiniteScroll | Disable the infinite scroll feature | Boolean | false | false |
341
- | LinearGradient | Linear Gradient Component | [expo-linear-gradient](https://www.npmjs.com/package/expo-linear-gradient).LinearGradient or [react-native-linear-gradient](https://www.npmjs.com/package/react-native-linear-gradient).default | - | false |
342
- | pickerContainerProps | Props for the picker container | `React.ComponentProps<typeof View>` | - | false |
343
- | pickerGradientOverlayProps | Props for both gradient overlays | `Partial<LinearGradientProps>` | - | false |
344
- | topPickerGradientOverlayProps | Props for the top gradient overlay | `Partial<LinearGradientProps>` | - | false |
345
- | bottomPickerGradientOverlayProps | Props for the bottom gradient overlay | `Partial<LinearGradientProps>` | - | false |
346
- | styles | Custom styles for the timer picker | [CustomTimerPickerStyles](#custom-styles-) | - | false |
332
+ | Prop | Description | Type | Default | Required |
333
+ | :------------------------------: | :------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----: | :------: |
334
+ | onDurationChange | Callback when the duration changes | `(duration: { hours: number, minutes: number, seconds: number }) => void` | - | false |
335
+ | initialHours | Initial value for hours | Number | - | false |
336
+ | initialMinutes | Initial value for minutes | Number | - | false |
337
+ | initialSeconds | Initial value for seconds | Number | - | false |
338
+ | hideHours | Hide the hours picker | Boolean | false | false |
339
+ | hideMinutes | Hide the minutes picker | Boolean | false | false |
340
+ | hideSeconds | Hide the seconds picker | Boolean | false | false |
341
+ | hourLimit | Limit on the hours it is possible to select | { max?: Number, min?: Number } | - | false |
342
+ | minuteLimit | Limit on the minutes it is possible to select | { max?: Number, min?: Number } | - | false |
343
+ | secondLimit | Limit on the seconds it is possible to select | { max?: Number, min?: Number } | - | false |
344
+ | hourLabel | Label for the hours picker | String \| React.ReactElement | h | false |
345
+ | minuteLabel | Label for the minutes picker | String \| React.ReactElement | m | false |
346
+ | secondLabel | Label for the seconds picker | String \| React.ReactElement | s | false |
347
+ | padWithNItems | Number of items to pad the picker with on either side | Number | 1 | false |
348
+ | aggressivelyGetLatestDuration | Set to True to ask DurationScroll to aggressively update the latestDuration ref | Boolean | false | false |
349
+ | allowFontScaling | Allow font in the picker to scale with accessibility settings | Boolean | false | false |
350
+ | use12HourPicker | Switch the hour picker to 12-hour format with an AM / PM label | Boolean | false | false |
351
+ | amLabel | Set the AM label if using the 12-hour picker | String | am | false |
352
+ | pmLabel | Set the PM label if using the 12-hour picker | String | pm | false |
353
+ | disableInfiniteScroll | Disable the infinite scroll feature | Boolean | false | false |
354
+ | LinearGradient | Linear Gradient Component | [expo-linear-gradient](https://www.npmjs.com/package/expo-linear-gradient).LinearGradient or [react-native-linear-gradient](https://www.npmjs.com/package/react-native-linear-gradient).default | - | false |
355
+ | pickerContainerProps | Props for the picker container | `React.ComponentProps<typeof View>` | - | false |
356
+ | pickerGradientOverlayProps | Props for both gradient overlays | `Partial<LinearGradientProps>` | - | false |
357
+ | topPickerGradientOverlayProps | Props for the top gradient overlay | `Partial<LinearGradientProps>` | - | false |
358
+ | bottomPickerGradientOverlayProps | Props for the bottom gradient overlay | `Partial<LinearGradientProps>` | - | false |
359
+ | styles | Custom styles for the timer picker | [CustomTimerPickerStyles](#custom-styles-) | - | false |
347
360
 
348
361
  #### Custom Styles 👗
349
362
 
@@ -357,8 +370,8 @@ The following custom styles can be supplied to re-style the component in any way
357
370
  | pickerContainer | Main container for the picker | ViewStyle |
358
371
  | pickerLabelContainer | Container for the picker's labels | ViewStyle |
359
372
  | pickerLabel | Style for the picker's labels | TextStyle |
360
- | pickerAmPmContainer | Style for the picker's labels | ViewStyle |
361
- | pickerAmPmLabel | Style for the picker's labels | TextStyle |
373
+ | pickerAmPmContainer | Style for the picker's labels | ViewStyle |
374
+ | pickerAmPmLabel | Style for the picker's labels | TextStyle |
362
375
  | pickerItemContainer | Container for each number in the picker | ViewStyle |
363
376
  | pickerItem | Style for each individual picker number | TextStyle |
364
377
  | disabledPickerItem | Style for any numbers outside any set limits | TextStyle |
@@ -446,6 +459,29 @@ An identical ref is also exposed for the TimerPickerModal component.
446
459
 
447
460
  <br>
448
461
 
462
+ ## Contributing 🧑‍🤝‍🧑
463
+
464
+ Contributions to this project are more than welcome.
465
+
466
+ ### Dev Setup
467
+
468
+ To get this project running locally:
469
+
470
+ 1. Clone the Git repo.
471
+ 2. Run `yarn setup` from the project root (this installs the dev dependencies and the example's additional dependencies)
472
+ 3. Run `yarn start` to start the example in Expo Go.
473
+ 4. Start adding cool stuff! Your changes should be immediately reflected in the Expo Go app.
474
+
475
+ ### GitHub Guidelines
476
+
477
+ There are two permenant branches: `main` and `develop`. You should never work directly on either of these branches.
478
+
479
+ 1. Create a new branch off `develop` for your work using the pattern `feature/{DESCRIPTION}`.
480
+ 2. When you think your work is ready for review, submit a PR from your branch back to `develop`.
481
+ 3. Once the PR is resolved, your work will be merged into `develop`, and will be included in the next major/minor release.
482
+
483
+ <br>
484
+
449
485
  ## License 📝
450
486
 
451
487
  This project is licensed under the [MIT License](LICENSE).
@@ -183,7 +183,7 @@ const DurationScroll = /*#__PURE__*/(0, _react.forwardRef)(({
183
183
  testID: testID,
184
184
  style: {
185
185
  height: styles.pickerItemContainer.height * numberOfItemsToShow,
186
- overflow: "hidden"
186
+ overflow: "visible"
187
187
  }
188
188
  }, /*#__PURE__*/_react.default.createElement(_reactNative.FlatList, {
189
189
  ref: flatListRef,
@@ -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","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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"}
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: \"visible\",\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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"}
@@ -175,7 +175,7 @@ const DurationScroll = /*#__PURE__*/forwardRef(({
175
175
  testID: testID,
176
176
  style: {
177
177
  height: styles.pickerItemContainer.height * numberOfItemsToShow,
178
- overflow: "hidden"
178
+ overflow: "visible"
179
179
  }
180
180
  }, /*#__PURE__*/React.createElement(FlatList, {
181
181
  ref: flatListRef,
@@ -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","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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"}
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: \"visible\",\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":";AAAA,OAAOA,KAAK,IACRC,MAAM,EACNC,WAAW,EACXC,UAAU,EACVC,mBAAmB,QAEhB,OAAO;AACd,SACIC,IAAI,EACJC,IAAI,EACJC,QAAQ,QAKL,cAAc;AAErB,SACIC,qBAAqB,EACrBC,eAAe,QACZ,6BAA6B;AACpC,SAASC,WAAW,QAAQ,yBAAyB;AAErD,SAASC,gBAAgB,QAAQ,8BAA8B;AAC/D,SAASC,cAAc,QAAQ,4BAA4B;AAgD3D;AACA,MAAMC,aAAa,GAAGA,CAACC,CAAM,EAAEC,KAAa,KAAKA,KAAK,CAACC,QAAQ,CAAC,CAAC;AAEjE,MAAMC,cAAc,gBAAGd,UAAU,CAC7B,CACI;EACIe,aAAa;EACbC,KAAK;EACLC,YAAY,GAAG,CAAC;EAChBC,gBAAgB;EAChBC,kBAAkB,GAAG,KAAK;EAC1BC,qBAAqB,GAAG,KAAK;EAC7BC,KAAK;EACLC,6BAA6B;EAC7BC,gBAAgB,GAAG,KAAK;EACxBC,cAAc;EACdC,OAAO;EACPC,OAAO;EACPC,aAAa;EACbC,0BAA0B;EAC1BC,6BAA6B;EAC7BC,gCAAgC;EAChCC,cAAc;EACdC,MAAM;EACNC;AACJ,CAAC,EACDC,GAAG,KACkB;EACrB,MAAMC,IAAI,GAAG,CAACX,cAAc,GACtBlB,eAAe,CAACS,aAAa,EAAE;IAC3BI,kBAAkB;IAClBiB,YAAY,EAAE,CAAC;IACfhB,qBAAqB;IACrBO;EACJ,CAAC,CAAC,GACFtB,qBAAqB,CAAC;IAClBc,kBAAkB;IAClBiB,YAAY,EAAE,CAAC;IACfhB,qBAAqB;IACrBO;EACJ,CAAC,CAAC;EAER,MAAMU,mBAAmB,GAAG,CAAC,GAAGV,aAAa,GAAG,CAAC;EAEjD,MAAMW,eAAe,GAAG9B,gBAAgB,CAACa,KAAK,EAAEN,aAAa,CAAC;EAE9D,MAAMwB,kBAAkB,GAAG9B,cAAc,CAAC;IACtC+B,KAAK,EAAEvB,YAAY;IACnBF,aAAa;IACbY,aAAa;IACbP;EACJ,CAAC,CAAC;EAEF,MAAMqB,cAAc,GAAG3C,MAAM,CAAC,CAAC,CAAC;EAEhC,MAAM4C,WAAW,GAAG5C,MAAM,CAAkB,IAAI,CAAC;EAEjDG,mBAAmB,CAACiC,GAAG,EAAE,OAAO;IAC5BS,KAAK,EAAGC,OAAO,IAAK;MAAA,IAAAC,oBAAA;MAChB,CAAAA,oBAAA,GAAAH,WAAW,CAACI,OAAO,cAAAD,oBAAA,eAAnBA,oBAAA,CAAqBE,aAAa,CAAC;QAC/BC,QAAQ,EAAE,CAAAJ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEI,QAAQ,KAAI,KAAK;QACpCpC,KAAK,EAAE2B;MACX,CAAC,CAAC;IACN,CAAC;IACDU,QAAQ,EAAEA,CAACT,KAAK,EAAEI,OAAO,KAAK;MAAA,IAAAM,qBAAA;MAC1B,CAAAA,qBAAA,GAAAR,WAAW,CAACI,OAAO,cAAAI,qBAAA,eAAnBA,qBAAA,CAAqBH,aAAa,CAAC;QAC/BC,QAAQ,EAAE,CAAAJ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEI,QAAQ,KAAI,KAAK;QACpCpC,KAAK,EAAEH,cAAc,CAAC;UAClB+B,KAAK,EAAEA,KAAK;UACZzB,aAAa;UACbY,aAAa;UACbP;QACJ,CAAC;MACL,CAAC,CAAC;IACN,CAAC;IACDqB,cAAc,EAAEA;EACpB,CAAC,CAAC,CAAC;EAEH,MAAMU,UAAU,GAAGpD,WAAW,CAC1B,CAAC;IAAEqD;EAAuB,CAAC,KAAK;IAC5B,IAAIC,UAAU,GAAGD,IAAI;IACrB,IAAIE,OAAe;IACnB,IAAIC,IAAyB;IAE7B,IAAI,CAAC/B,cAAc,EAAE;MACjB8B,OAAO,GAAGE,QAAQ,CAACJ,IAAI,CAAC;IAC5B,CAAC,MAAM;MACHG,IAAI,GAAGH,IAAI,CAACK,QAAQ,CAAC,IAAI,CAAC;MAC1BJ,UAAU,GAAGD,IAAI,CAACM,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;MACzCJ,OAAO,GAAGE,QAAQ,CAACH,UAAU,CAAC;IAClC;IAEA,oBACIxD,KAAA,CAAA8D,aAAA,CAACzD,IAAI;MACD0D,GAAG,EAAER,IAAK;MACVS,KAAK,EAAE5B,MAAM,CAAC6B,mBAAoB;MAClC9B,MAAM,EAAC;IAAa,gBACpBnC,KAAA,CAAA8D,aAAA,CAACxD,IAAI;MACDoB,gBAAgB,EAAEA,gBAAiB;MACnCsC,KAAK,EAAE,CACH5B,MAAM,CAAC8B,UAAU,EACjBT,OAAO,GAAGhB,eAAe,CAAC0B,GAAG,IAC7BV,OAAO,GAAGhB,eAAe,CAAC2B,GAAG,GACvBhC,MAAM,CAACiC,kBAAkB,GACzB,CAAC,CAAC;IACV,GACDb,UACC,CAAC,EACN7B,cAAc,gBACX3B,KAAA,CAAA8D,aAAA,CAACzD,IAAI;MACD2D,KAAK,EAAE5B,MAAM,CAACkC,mBAAoB;MAClCC,aAAa,EAAC;IAAM,gBACpBvE,KAAA,CAAA8D,aAAA,CAACxD,IAAI;MACD0D,KAAK,EAAE,CAAC5B,MAAM,CAACoC,eAAe,CAAE;MAChC9C,gBAAgB,EAAEA;IAAiB,GAClCgC,IAAI,GAAG9B,OAAO,GAAGC,OAChB,CACJ,CAAC,GACP,IACF,CAAC;EAEf,CAAC,EACD,CACIY,eAAe,CAAC0B,GAAG,EACnB1B,eAAe,CAAC2B,GAAG,EACnB1C,gBAAgB,EAChBE,OAAO,EACPD,cAAc,EACdE,OAAO,EACPO,MAAM,CAACiC,kBAAkB,EACzBjC,MAAM,CAACkC,mBAAmB,EAC1BlC,MAAM,CAACoC,eAAe,EACtBpC,MAAM,CAAC8B,UAAU,EACjB9B,MAAM,CAAC6B,mBAAmB,CAElC,CAAC;EAED,MAAMQ,QAAQ,GAAGvE,WAAW,CACvBwE,CAA0C,IAAK;IAC5C;IACA;IACA;IACA,MAAMC,QAAQ,GAAGC,IAAI,CAACC,KAAK,CACvBH,CAAC,CAACI,WAAW,CAACC,aAAa,CAACC,CAAC,GACzB5C,MAAM,CAAC6B,mBAAmB,CAACgB,MACnC,CAAC;IACD,IAAIC,WAAW,GACX,CAAC3D,qBAAqB,GAChBoD,QAAQ,GACRA,QAAQ,GAAG7C,aAAa,KAC7BZ,aAAa,GAAG,CAAC,CAAC;;IAEvB;IACA,IAAIgE,WAAW,GAAGzC,eAAe,CAAC0B,GAAG,EAAE;MACnCe,WAAW,GAAGzC,eAAe,CAAC0B,GAAG;IACrC,CAAC,MAAM,IAAIe,WAAW,GAAGzC,eAAe,CAAC2B,GAAG,EAAE;MAC1Cc,WAAW,GAAGzC,eAAe,CAAC2B,GAAG;IACrC;IACAxB,cAAc,CAACK,OAAO,GAAGiC,WAAW;EACxC,CAAC,EACD,CACIzC,eAAe,CAAC0B,GAAG,EACnB1B,eAAe,CAAC2B,GAAG,EACnB7C,qBAAqB,EACrBL,aAAa,EACbY,aAAa,EACbM,MAAM,CAAC6B,mBAAmB,CAACgB,MAAM,CAEzC,CAAC;EAED,MAAME,mBAAmB,GAAGjF,WAAW,CAClCwE,CAA0C,IAAK;IAC5C,MAAMC,QAAQ,GAAGC,IAAI,CAACC,KAAK,CACvBH,CAAC,CAACI,WAAW,CAACC,aAAa,CAACC,CAAC,GACzB5C,MAAM,CAAC6B,mBAAmB,CAACgB,MACnC,CAAC;IACD,IAAIC,WAAW,GACX,CAAC3D,qBAAqB,GAChBoD,QAAQ,GACRA,QAAQ,GAAG7C,aAAa,KAC7BZ,aAAa,GAAG,CAAC,CAAC;;IAEvB;IACA,IAAIgE,WAAW,GAAGzC,eAAe,CAAC0B,GAAG,EAAE;MAAA,IAAAiB,qBAAA;MACnC,MAAMC,iBAAiB,GACnBV,QAAQ,IAAIO,WAAW,GAAGzC,eAAe,CAAC0B,GAAG,CAAC;MAClD,CAAAiB,qBAAA,GAAAvC,WAAW,CAACI,OAAO,cAAAmC,qBAAA,eAAnBA,qBAAA,CAAqBlC,aAAa,CAAC;QAC/BC,QAAQ,EAAE,IAAI;QACdpC,KAAK;QACD;QACAsE,iBAAiB,IAAI,CAAC,GAChBA,iBAAiB,GACjB5C,eAAe,CAAC0B,GAAG,GAAG;MACpC,CAAC,CAAC,CAAC,CAAC;MACJe,WAAW,GAAGzC,eAAe,CAAC0B,GAAG;IACrC,CAAC,MAAM,IAAIe,WAAW,GAAGzC,eAAe,CAAC2B,GAAG,EAAE;MAAA,IAAAkB,qBAAA;MAC1C,MAAMD,iBAAiB,GACnBV,QAAQ,IAAIlC,eAAe,CAAC2B,GAAG,GAAGc,WAAW,CAAC;MAClD,CAAAI,qBAAA,GAAAzC,WAAW,CAACI,OAAO,cAAAqC,qBAAA,eAAnBA,qBAAA,CAAqBpC,aAAa,CAAC;QAC/BC,QAAQ,EAAE,IAAI;QACdpC,KAAK;QACD;QACAsE,iBAAiB,IAAI/C,IAAI,CAACiD,MAAM,GAAG,CAAC,GAC9BF,iBAAiB,GACjB5C,eAAe,CAAC2B;MAC9B,CAAC,CAAC,CAAC,CAAC;MACJc,WAAW,GAAGzC,eAAe,CAAC2B,GAAG;IACrC;IAEA/C,gBAAgB,CAAC6D,WAAW,CAAC;EACjC,CAAC,EACD,CACIzC,eAAe,CAAC0B,GAAG,EACnB1B,eAAe,CAAC2B,GAAG,EACnB9B,IAAI,CAACiD,MAAM,EACXhE,qBAAqB,EACrBL,aAAa,EACbG,gBAAgB,EAChBS,aAAa,EACbM,MAAM,CAAC6B,mBAAmB,CAACgB,MAAM,CAEzC,CAAC;EAED,MAAMO,sBAAsB,GAAGtF,WAAW,CACtC,CAAC;IAAEuF;EAA8C,CAAC,KAAK;IAAA,IAAAC,eAAA,EAAAC,gBAAA;IACnD,IACI,CAAAD,eAAA,GAAAD,aAAa,CAAC,CAAC,CAAC,cAAAC,eAAA,eAAhBA,eAAA,CAAkB3E,KAAK,IACvB0E,aAAa,CAAC,CAAC,CAAC,CAAC1E,KAAK,GAAGG,aAAa,GAAG,GAAG,EAC9C;MAAA,IAAA0E,qBAAA;MACE,CAAAA,qBAAA,GAAA/C,WAAW,CAACI,OAAO,cAAA2C,qBAAA,eAAnBA,qBAAA,CAAqB1C,aAAa,CAAC;QAC/BC,QAAQ,EAAE,KAAK;QACfpC,KAAK,EAAE0E,aAAa,CAAC,CAAC,CAAC,CAAC1E,KAAK,GAAGG;MACpC,CAAC,CAAC;IACN,CAAC,MAAM,IACH,CAAAyE,gBAAA,GAAAF,aAAa,CAAC,CAAC,CAAC,cAAAE,gBAAA,eAAhBA,gBAAA,CAAkB5E,KAAK,IACvB0E,aAAa,CAAC,CAAC,CAAC,CAAC1E,KAAK,IAAIG,aAAa,GAAG,GAAG,EAC/C;MAAA,IAAA2E,qBAAA;MACE,CAAAA,qBAAA,GAAAhD,WAAW,CAACI,OAAO,cAAA4C,qBAAA,eAAnBA,qBAAA,CAAqB3C,aAAa,CAAC;QAC/BC,QAAQ,EAAE,KAAK;QACfpC,KAAK,EAAE0E,aAAa,CAAC,CAAC,CAAC,CAAC1E,KAAK,GAAGG;MACpC,CAAC,CAAC;IACN;EACJ,CAAC,EACD,CAACA,aAAa,CAClB,CAAC;EAED,MAAM4E,aAAa,GAAG5F,WAAW,CAC7B,CAACY,CAAuC,EAAEC,KAAa,MAAM;IACzDwE,MAAM,EAAEnD,MAAM,CAAC6B,mBAAmB,CAACgB,MAAM;IACzCc,MAAM,EAAE3D,MAAM,CAAC6B,mBAAmB,CAACgB,MAAM,GAAGlE,KAAK;IACjDA;EACJ,CAAC,CAAC,EACF,CAACqB,MAAM,CAAC6B,mBAAmB,CAACgB,MAAM,CACtC,CAAC;EAED,MAAMe,8BAA8B,GAChC/F,MAAM,CAAiC,CACnC;IACIgG,iBAAiB,EAAE;MAAEC,gCAAgC,EAAE;IAAG,CAAC;IAC3DV,sBAAsB,EAAEA;EAC5B,CAAC,CACJ,CAAC;EAEN,oBACIxF,KAAA,CAAA8D,aAAA,CAACzD,IAAI;IACD8B,MAAM,EAAEA,MAAO;IACf6B,KAAK,EAAE;MACHiB,MAAM,EACF7C,MAAM,CAAC6B,mBAAmB,CAACgB,MAAM,GAAGzC,mBAAmB;MAC3D2D,QAAQ,EAAE;IACd;EAAE,gBACFnG,KAAA,CAAA8D,aAAA,CAACvD,QAAQ;IACL8B,GAAG,EAAEQ,WAAY;IACjBP,IAAI,EAAEA,IAAK;IACXwD,aAAa,EAAEA,aAAc;IAC7BpD,kBAAkB,EAAEA,kBAAmB;IACvC0D,UAAU,EAAE5D,mBAAoB;IAChCc,UAAU,EAAEA,UAAW;IACvB+C,YAAY,EAAExF,aAAc;IAC5ByF,4BAA4B,EAAE,KAAM;IACpCC,gBAAgB,EAAE,IAAK;IACvBC,mBAAmB,EAAE,EAAG;IACxBC,eAAe,EAAC;IAChB;IAAA;IACAC,aAAa,EAAE,CAAC,GAAGC,KAAK,CAACrE,IAAI,CAACiD,MAAM,CAAC,CAAC,CAACqB,GAAG,CACtC,CAAC9F,CAAC,EAAE+F,CAAC,KAAKA,CAAC,GAAGzE,MAAM,CAAC6B,mBAAmB,CAACgB,MAC7C,CAAE;IACFe,8BAA8B,EAC1B,CAACzE,qBAAqB,GAChByE,8BAA8B,aAA9BA,8BAA8B,uBAA9BA,8BAA8B,CAAE/C,OAAO,GACvC6D,SACT;IACD3B,mBAAmB,EAAEA,mBAAoB;IACzCV,QAAQ,EACJhD,6BAA6B,GAAGgD,QAAQ,GAAGqC,SAC9C;IACD3E,MAAM,EAAC;EAA0B,CACpC,CAAC,eACFnC,KAAA,CAAA8D,aAAA,CAACzD,IAAI;IAAC2D,KAAK,EAAE5B,MAAM,CAAC2E,oBAAqB;IAACxC,aAAa,EAAC;EAAM,GACzD,OAAOpD,KAAK,KAAK,QAAQ,gBACtBnB,KAAA,CAAA8D,aAAA,CAACxD,IAAI;IACDoB,gBAAgB,EAAEA,gBAAiB;IACnCsC,KAAK,EAAE5B,MAAM,CAAC4E;EAAY,GACzB7F,KACC,CAAC,GAEPA,KAAK,IAAI,IAEX,CAAC,EACNe,cAAc,gBACXlC,KAAA,CAAA8D,aAAA,CAAA9D,KAAA,CAAAiH,QAAA,qBACIjH,KAAA,CAAA8D,aAAA,CAAC5B,cAAc,EAAAgF,QAAA;IACXC,MAAM,EAAE,CACJ/E,MAAM,CAACgF,eAAe,CAACC,eAAe,IAClC,OAAO,EACX3G,WAAW,CAAC;MACR4G,KAAK,EACDlF,MAAM,CAACgF,eAAe,CACjBC,eAAe,IAAI,OAAO;MACnCE,OAAO,EAAE;IACb,CAAC,CAAC,CACJ;IACFC,KAAK,EAAE;MAAEC,CAAC,EAAE,CAAC;MAAEzC,CAAC,EAAE;IAAI,CAAE;IACxB0C,GAAG,EAAE;MAAED,CAAC,EAAE,CAAC;MAAEzC,CAAC,EAAE;IAAE,CAAE;IACpBT,aAAa,EAAC;EAAM,GAChBxC,0BAA0B,EAC1BC,6BAA6B;IACjCgC,KAAK,EAAE,CAAC5B,MAAM,CAACuF,qBAAqB,EAAE;MAAEC,GAAG,EAAE;IAAE,CAAC;EAAE,EACrD,CAAC,eACF5H,KAAA,CAAA8D,aAAA,CAAC5B,cAAc,EAAAgF,QAAA;IACXC,MAAM,EAAE,CACJzG,WAAW,CAAC;MACR4G,KAAK,EACDlF,MAAM,CAACgF,eAAe,CACjBC,eAAe,IAAI,OAAO;MACnCE,OAAO,EAAE;IACb,CAAC,CAAC,EACFnF,MAAM,CAACgF,eAAe,CAACC,eAAe,IAClC,OAAO,CACb;IACFG,KAAK,EAAE;MAAEC,CAAC,EAAE,CAAC;MAAEzC,CAAC,EAAE;IAAE,CAAE;IACtB0C,GAAG,EAAE;MAAED,CAAC,EAAE,CAAC;MAAEzC,CAAC,EAAE;IAAI,CAAE;IACtBT,aAAa,EAAC;EAAM,GAChBxC,0BAA0B,EAC1BE,gCAAgC;IACpC+B,KAAK,EAAE,CACH5B,MAAM,CAACuF,qBAAqB,EAC5B;MAAEE,MAAM,EAAE,CAAC;IAAE,CAAC;EAChB,EACL,CACH,CAAC,GACH,IACF,CAAC;AAEf,CACJ,CAAC;AAED,4BAAe7H,KAAK,CAAC8H,IAAI,CAAC7G,cAAc,CAAC"}
package/package.json CHANGED
@@ -6,14 +6,15 @@
6
6
  "url": "https://github.com/troberts-28"
7
7
  },
8
8
  "license": "MIT",
9
- "version": "1.5.2",
9
+ "version": "1.5.4",
10
10
  "main": "dist/commonjs/index.js",
11
11
  "types": "dist/typescript/src/index.d.ts",
12
12
  "scripts": {
13
+ "setup": "yarn && cd example && yarn",
14
+ "start": " cd example && yarn start",
13
15
  "test": "jest --forceExit --silent",
14
16
  "build": "bob build",
15
17
  "clean": "rm yarn.lock && rm -rf ./node_modules && yarn install",
16
- "start": "cp -Rf src example && cd example && npx expo install && npx expo start",
17
18
  "lint": "eslint --ext .ts,.tsx .",
18
19
  "lint:fix": "eslint --ext .ts,.tsx . --fix",
19
20
  "prepare": "yarn build"
@@ -339,7 +339,7 @@ const DurationScroll = forwardRef<DurationScrollRef, DurationScrollProps>(
339
339
  style={{
340
340
  height:
341
341
  styles.pickerItemContainer.height * numberOfItemsToShow,
342
- overflow: "hidden",
342
+ overflow: "visible",
343
343
  }}>
344
344
  <FlatList
345
345
  ref={flatListRef}