react-native-timer-picker 2.5.0 → 2.6.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.
Files changed (122) hide show
  1. package/README.md +22 -13
  2. package/dist/commonjs/components/DurationScroll/DurationScroll.js +39 -18
  3. package/dist/commonjs/components/DurationScroll/DurationScroll.js.map +1 -1
  4. package/dist/commonjs/components/DurationScroll/types.js.map +1 -1
  5. package/dist/commonjs/components/Modal/Modal.js +10 -10
  6. package/dist/commonjs/components/Modal/Modal.js.map +1 -1
  7. package/dist/commonjs/components/Modal/styles.js +5 -5
  8. package/dist/commonjs/components/Modal/styles.js.map +1 -1
  9. package/dist/commonjs/components/Modal/types.js.map +1 -1
  10. package/dist/commonjs/components/PickerItem/PickerItem.js +2 -1
  11. package/dist/commonjs/components/PickerItem/PickerItem.js.map +1 -1
  12. package/dist/commonjs/components/TimerPicker/TimerPicker.js +47 -21
  13. package/dist/commonjs/components/TimerPicker/TimerPicker.js.map +1 -1
  14. package/dist/commonjs/components/TimerPicker/index.js.map +1 -1
  15. package/dist/commonjs/components/TimerPicker/styles.js +79 -69
  16. package/dist/commonjs/components/TimerPicker/styles.js.map +1 -1
  17. package/dist/commonjs/components/TimerPicker/types.js.map +1 -1
  18. package/dist/commonjs/components/TimerPickerModal/TimerPickerModal.js +34 -14
  19. package/dist/commonjs/components/TimerPickerModal/TimerPickerModal.js.map +1 -1
  20. package/dist/commonjs/components/TimerPickerModal/styles.js +34 -28
  21. package/dist/commonjs/components/TimerPickerModal/styles.js.map +1 -1
  22. package/dist/commonjs/components/TimerPickerModal/types.js.map +1 -1
  23. package/dist/commonjs/index.js +3 -39
  24. package/dist/commonjs/index.js.map +1 -1
  25. package/dist/commonjs/tests/DurationScroll.test.js +8 -8
  26. package/dist/commonjs/tests/DurationScroll.test.js.map +1 -1
  27. package/dist/commonjs/tests/Modal.test.js.map +1 -1
  28. package/dist/commonjs/tests/TimerPicker.test.js +1 -9
  29. package/dist/commonjs/tests/TimerPicker.test.js.map +1 -1
  30. package/dist/commonjs/tests/TimerPickerModal.test.js +3 -3
  31. package/dist/commonjs/tests/TimerPickerModal.test.js.map +1 -1
  32. package/dist/commonjs/tests/colorToRgba.test.js.map +1 -1
  33. package/dist/commonjs/tests/generateNumbers.test.js +63 -63
  34. package/dist/commonjs/tests/generateNumbers.test.js.map +1 -1
  35. package/dist/commonjs/tests/getAdjustedLimit.test.js +38 -38
  36. package/dist/commonjs/tests/getAdjustedLimit.test.js.map +1 -1
  37. package/dist/commonjs/tests/getDurationAndIndexFromScrollOffset.test.js.map +1 -1
  38. package/dist/commonjs/tests/getInitialScrollIndex.test.js.map +1 -1
  39. package/dist/commonjs/tests/getSafeInitialValue.test.js +2 -0
  40. package/dist/commonjs/tests/getSafeInitialValue.test.js.map +1 -1
  41. package/dist/commonjs/tests/padNumber.test.js.map +1 -1
  42. package/dist/commonjs/utils/colorToRgba.js +4 -4
  43. package/dist/commonjs/utils/colorToRgba.js.map +1 -1
  44. package/dist/commonjs/utils/generateNumbers.js.map +1 -1
  45. package/dist/commonjs/utils/getAdjustedLimit.js.map +1 -1
  46. package/dist/commonjs/utils/getDurationAndIndexFromScrollOffset.js.map +1 -1
  47. package/dist/commonjs/utils/getInitialScrollIndex.js +4 -4
  48. package/dist/commonjs/utils/getInitialScrollIndex.js.map +1 -1
  49. package/dist/commonjs/utils/getSafeInitialValue.js +5 -5
  50. package/dist/commonjs/utils/getSafeInitialValue.js.map +1 -1
  51. package/dist/commonjs/utils/padNumber.js.map +1 -1
  52. package/dist/module/components/DurationScroll/DurationScroll.js +39 -18
  53. package/dist/module/components/DurationScroll/DurationScroll.js.map +1 -1
  54. package/dist/module/components/DurationScroll/types.js.map +1 -1
  55. package/dist/module/components/Modal/Modal.js +10 -10
  56. package/dist/module/components/Modal/Modal.js.map +1 -1
  57. package/dist/module/components/Modal/styles.js +5 -5
  58. package/dist/module/components/Modal/styles.js.map +1 -1
  59. package/dist/module/components/Modal/types.js.map +1 -1
  60. package/dist/module/components/PickerItem/PickerItem.js +2 -1
  61. package/dist/module/components/PickerItem/PickerItem.js.map +1 -1
  62. package/dist/module/components/TimerPicker/TimerPicker.js +47 -21
  63. package/dist/module/components/TimerPicker/TimerPicker.js.map +1 -1
  64. package/dist/module/components/TimerPicker/index.js.map +1 -1
  65. package/dist/module/components/TimerPicker/styles.js +79 -69
  66. package/dist/module/components/TimerPicker/styles.js.map +1 -1
  67. package/dist/module/components/TimerPicker/types.js.map +1 -1
  68. package/dist/module/components/TimerPickerModal/TimerPickerModal.js +35 -15
  69. package/dist/module/components/TimerPickerModal/TimerPickerModal.js.map +1 -1
  70. package/dist/module/components/TimerPickerModal/styles.js +33 -27
  71. package/dist/module/components/TimerPickerModal/styles.js.map +1 -1
  72. package/dist/module/components/TimerPickerModal/types.js.map +1 -1
  73. package/dist/module/index.js +2 -2
  74. package/dist/module/index.js.map +1 -1
  75. package/dist/module/tests/DurationScroll.test.js +8 -8
  76. package/dist/module/tests/DurationScroll.test.js.map +1 -1
  77. package/dist/module/tests/Modal.test.js.map +1 -1
  78. package/dist/module/tests/TimerPicker.test.js +1 -8
  79. package/dist/module/tests/TimerPicker.test.js.map +1 -1
  80. package/dist/module/tests/TimerPickerModal.test.js +3 -3
  81. package/dist/module/tests/TimerPickerModal.test.js.map +1 -1
  82. package/dist/module/tests/colorToRgba.test.js.map +1 -1
  83. package/dist/module/tests/generateNumbers.test.js +63 -63
  84. package/dist/module/tests/generateNumbers.test.js.map +1 -1
  85. package/dist/module/tests/getAdjustedLimit.test.js +38 -38
  86. package/dist/module/tests/getAdjustedLimit.test.js.map +1 -1
  87. package/dist/module/tests/getDurationAndIndexFromScrollOffset.test.js.map +1 -1
  88. package/dist/module/tests/getInitialScrollIndex.test.js.map +1 -1
  89. package/dist/module/tests/getSafeInitialValue.test.js +1 -0
  90. package/dist/module/tests/getSafeInitialValue.test.js.map +1 -1
  91. package/dist/module/tests/padNumber.test.js.map +1 -1
  92. package/dist/module/utils/colorToRgba.js +4 -4
  93. package/dist/module/utils/colorToRgba.js.map +1 -1
  94. package/dist/module/utils/generateNumbers.js.map +1 -1
  95. package/dist/module/utils/getAdjustedLimit.js.map +1 -1
  96. package/dist/module/utils/getDurationAndIndexFromScrollOffset.js.map +1 -1
  97. package/dist/module/utils/getInitialScrollIndex.js +4 -4
  98. package/dist/module/utils/getInitialScrollIndex.js.map +1 -1
  99. package/dist/module/utils/getSafeInitialValue.js +5 -5
  100. package/dist/module/utils/getSafeInitialValue.js.map +1 -1
  101. package/dist/module/utils/padNumber.js.map +1 -1
  102. package/dist/typescript/components/DurationScroll/types.d.ts +9 -6
  103. package/dist/typescript/components/Modal/styles.d.ts +5 -5
  104. package/dist/typescript/components/Modal/types.d.ts +2 -1
  105. package/dist/typescript/components/PickerItem/PickerItem.d.ts +4 -0
  106. package/dist/typescript/components/TimerPicker/styles.d.ts +230 -225
  107. package/dist/typescript/components/TimerPicker/types.d.ts +9 -8
  108. package/dist/typescript/components/TimerPickerModal/styles.d.ts +158 -154
  109. package/dist/typescript/components/TimerPickerModal/types.d.ts +2 -1
  110. package/dist/typescript/index.d.ts +4 -2
  111. package/dist/typescript/tests/DurationScroll.test.d.ts +1 -0
  112. package/dist/typescript/tests/Modal.test.d.ts +1 -0
  113. package/dist/typescript/tests/TimerPicker.test.d.ts +1 -0
  114. package/dist/typescript/tests/TimerPickerModal.test.d.ts +1 -0
  115. package/dist/typescript/tests/colorToRgba.test.d.ts +1 -0
  116. package/dist/typescript/tests/generateNumbers.test.d.ts +1 -0
  117. package/dist/typescript/tests/getAdjustedLimit.test.d.ts +1 -0
  118. package/dist/typescript/tests/getDurationAndIndexFromScrollOffset.test.d.ts +1 -0
  119. package/dist/typescript/tests/getInitialScrollIndex.test.d.ts +1 -0
  120. package/dist/typescript/tests/getSafeInitialValue.test.d.ts +1 -0
  121. package/dist/typescript/tests/padNumber.test.d.ts +1 -0
  122. package/package.json +144 -126
package/README.md CHANGED
@@ -13,6 +13,7 @@ Works with Expo and bare React Native apps ✅
13
13
 
14
14
  Includes iOS-style haptic and audio feedback 🍏
15
15
 
16
+ - [React Native Timer Picker ⏰🕰️⏳](#react-native-timer-picker-️)
16
17
  - [Demos 📱](#demos-)
17
18
  - [Installation 🚀](#installation-)
18
19
  - [Peer Dependencies 👶](#peer-dependencies-)
@@ -289,6 +290,9 @@ return (
289
290
  setIsVisible={setShowPicker}
290
291
  styles={{
291
292
  theme: "light",
293
+ pickerColumnWidth: {
294
+ hours: 90,
295
+ },
292
296
  }}
293
297
  use12HourPicker
294
298
  visible={showPicker}
@@ -426,6 +430,8 @@ return (
426
430
  setIsVisible={setShowPicker}
427
431
  styles={{
428
432
  theme: "dark",
433
+ pickerLabelGap: 10,
434
+ text: { fontSize: 18 },
429
435
  }}
430
436
  visible={showPicker}
431
437
  />
@@ -464,14 +470,13 @@ return (
464
470
  pickerItem: {
465
471
  fontSize: 34,
466
472
  },
467
- pickerLabelContainer: {
468
- marginTop: -4,
469
- right: 0,
470
- left: undefined,
471
- },
472
473
  pickerLabel: {
473
474
  fontSize: 32,
474
475
  },
476
+ pickerLabelContainer: {
477
+ marginTop: -4,
478
+ },
479
+ pickerLabelGap: 23,
475
480
  pickerContainer: {
476
481
  paddingHorizontal: 50,
477
482
  },
@@ -502,7 +507,7 @@ return (
502
507
  secondLabel="sec"
503
508
  styles={{
504
509
  theme: "light",
505
- labelOffsetPercentage: 0,
510
+ pickerLabelGap: 8,
506
511
  pickerItem: {
507
512
  fontSize: 34,
508
513
  },
@@ -582,14 +587,18 @@ return (
582
587
 
583
588
  #### Custom Styles 👗
584
589
 
585
- The component should look good straight out of the box, but you can use these styles to make it fit in with your App's theme:
590
+ The component should look good straight out of the box, but you can use these easy styles to make it fit in with your App's theme:
591
+
592
+ | Style Prop | Description | Type |
593
+ | :---------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------: |
594
+ | theme | Theme of the component | "light" \| "dark" |
595
+ | backgroundColor | Main background color | string |
596
+ | text | Base text style | TextStyle |
597
+ | pickerLabelGap | Pixel gap between the label and the picker number column. Can be a single number or a per-column object (e.g. `{ hours: 10, minutes: 8 }`). Default: `6` | `PerColumnValue`\* |
598
+ | pickerColumnWidth | Width of individual picker columns in pixels. Can be a single number or a per-column object. Overrides default flex-based sizing when set | `PerColumnValue`\* |
599
+ | labelOffsetPercentage **(DEPRECATED)** | Percentage offset for horizontal label positioning relative to the picker (use `pickerLabelGap` instead) | number |
586
600
 
587
- | Style Prop | Description | Type |
588
- | :-------------------: | :----------------------------------------------------------------------- | :---------------: |
589
- | theme | Theme of the component | "light" \| "dark" |
590
- | backgroundColor | Main background color | string |
591
- | text | Base text style | TextStyle |
592
- | labelOffsetPercentage | Percentage offset for horizonal label positioning relative to the picker | number |
601
+ **\*`PerColumnValue` type:** `number | { days?: number, hours?: number, minutes?: number, seconds?: number }` — pass a single number for all columns, or an object to set values per column. Omitted columns use the default.
593
602
 
594
603
  For deeper style customization, you can supply the following custom styles to adjust the component in any way. These are applied on top of the default styling so take a look at those [styles](src/components/TimerPicker/styles.ts) if something isn't adjusting in the way you'd expect.
595
604
 
@@ -40,8 +40,10 @@ const DurationScroll = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
40
40
  onDurationChange,
41
41
  padNumbersWithZero = false,
42
42
  padWithNItems,
43
+ pickerColumnWidth,
43
44
  pickerFeedback,
44
45
  pickerGradientOverlayProps,
46
+ pickerLabelGap,
45
47
  pmLabel,
46
48
  repeatNumbersNTimes = 3,
47
49
  repeatNumbersNTimesNotExplicitlySet,
@@ -49,6 +51,21 @@ const DurationScroll = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
49
51
  styles,
50
52
  testID
51
53
  } = props;
54
+ const labelPositionStyle = (0, _react.useMemo)(() => {
55
+ // When the style already has an explicit `left` (from legacy percentage system or
56
+ // user override), don't apply pixel-based positioning.
57
+ if (styles.pickerLabelContainer.left != null) {
58
+ return undefined;
59
+ }
60
+ const gap = pickerLabelGap ?? 6;
61
+ const fontSize = styles.pickerItem.fontSize ?? 25;
62
+ const maxDigitCount = Math.max(2, String(maximumValue).length);
63
+ const halfNumberWidth = maxDigitCount * fontSize * 0.55 / 2;
64
+ return {
65
+ left: "50%",
66
+ marginLeft: halfNumberWidth + gap
67
+ };
68
+ }, [maximumValue, pickerLabelGap, styles.pickerItem.fontSize, styles.pickerLabelContainer.left]);
52
69
  const numberOfItems = (0, _react.useMemo)(() => {
53
70
  // guard against negative maximum values
54
71
  if (maximumValue < 0) {
@@ -78,19 +95,19 @@ const DurationScroll = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
78
95
  const numbersForFlatList = (0, _react.useMemo)(() => {
79
96
  if (is12HourPicker) {
80
97
  return (0, _generateNumbers.generate12HourNumbers)({
81
- padNumbersWithZero,
82
- repeatNTimes: safeRepeatNumbersNTimes,
83
98
  disableInfiniteScroll,
99
+ interval,
100
+ padNumbersWithZero,
84
101
  padWithNItems,
85
- interval
102
+ repeatNTimes: safeRepeatNumbersNTimes
86
103
  });
87
104
  }
88
105
  return (0, _generateNumbers.generateNumbers)(numberOfItems, {
89
- padNumbersWithZero,
90
- repeatNTimes: safeRepeatNumbersNTimes,
91
106
  disableInfiniteScroll,
107
+ interval,
108
+ padNumbersWithZero,
92
109
  padWithNItems,
93
- interval
110
+ repeatNTimes: safeRepeatNumbersNTimes
94
111
  });
95
112
  }, [disableInfiniteScroll, is12HourPicker, interval, numberOfItems, padNumbersWithZero, padWithNItems, safeRepeatNumbersNTimes]);
96
113
  const initialScrollIndex = (0, _react.useMemo)(() => (0, _getInitialScrollIndex.getInitialScrollIndex)({
@@ -160,10 +177,11 @@ const DurationScroll = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
160
177
  amLabel: amLabel,
161
178
  is12HourPicker: is12HourPicker,
162
179
  item: item,
180
+ pickerAmPmPositionStyle: labelPositionStyle,
163
181
  pmLabel: pmLabel,
164
182
  selectedValue: selectedValue,
165
183
  styles: styles
166
- }), [adjustedLimited.max, adjustedLimited.min, allowFontScaling, amLabel, is12HourPicker, pmLabel, selectedValue, styles]);
184
+ }), [adjustedLimited.max, adjustedLimited.min, allowFontScaling, amLabel, is12HourPicker, labelPositionStyle, pmLabel, selectedValue, styles]);
167
185
  const onScroll = (0, _react.useCallback)(e => {
168
186
  // this function is only used when the picker is in a modal and/or has Haptic/Audio feedback
169
187
  // it is used to ensure that the modal gets the latest duration on clicking
@@ -278,10 +296,10 @@ const DurationScroll = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
278
296
  }
279
297
  }, [numberOfItems, safeRepeatNumbersNTimes]);
280
298
  const [viewabilityConfigCallbackPairs, setViewabilityConfigCallbackPairs] = (0, _react.useState)(!disableInfiniteScroll ? [{
299
+ onViewableItemsChanged: onViewableItemsChanged,
281
300
  viewabilityConfig: {
282
301
  viewAreaCoveragePercentThreshold: 0
283
- },
284
- onViewableItemsChanged: onViewableItemsChanged
302
+ }
285
303
  }] : undefined);
286
304
  const [flatListRenderKey, setFlatListRenderKey] = (0, _react.useState)(0);
287
305
  const initialRender = (0, _react.useRef)(true);
@@ -296,18 +314,19 @@ const DurationScroll = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
296
314
  // which requires the FlatList to be remounted, hence the increase of the FlatList key
297
315
  setFlatListRenderKey(prev => prev + 1);
298
316
  setViewabilityConfigCallbackPairs(!disableInfiniteScroll ? [{
317
+ onViewableItemsChanged: onViewableItemsChanged,
299
318
  viewabilityConfig: {
300
319
  viewAreaCoveragePercentThreshold: 0
301
- },
302
- onViewableItemsChanged: onViewableItemsChanged
320
+ }
303
321
  }] : undefined);
304
322
  }, [disableInfiniteScroll, onViewableItemsChanged]);
305
323
  const getItemLayout = (0, _react.useCallback)((_, index) => ({
324
+ index,
306
325
  length: styles.pickerItemContainer.height,
307
- offset: styles.pickerItemContainer.height * index,
308
- index
326
+ offset: styles.pickerItemContainer.height * index
309
327
  }), [styles.pickerItemContainer.height]);
310
328
  (0, _react.useImperativeHandle)(ref, () => ({
329
+ latestDuration: latestDuration,
311
330
  reset: options => {
312
331
  var _flatListRef$current5;
313
332
  (_flatListRef$current5 = flatListRef.current) === null || _flatListRef$current5 === void 0 || _flatListRef$current5.scrollToIndex({
@@ -328,8 +347,7 @@ const DurationScroll = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
328
347
  value: value
329
348
  })
330
349
  });
331
- },
332
- latestDuration: latestDuration
350
+ }
333
351
  }));
334
352
  const renderContent = (0, _react.useMemo)(() => {
335
353
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(FlatList, {
@@ -358,12 +376,12 @@ const DurationScroll = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
358
376
  windowSize: numberOfItemsToShow
359
377
  }), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
360
378
  pointerEvents: "none",
361
- style: styles.pickerLabelContainer
379
+ style: [styles.pickerLabelContainer, labelPositionStyle]
362
380
  }, typeof label === "string" ? /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
363
381
  allowFontScaling: allowFontScaling,
364
382
  style: styles.pickerLabel
365
383
  }, label) : label ?? null));
366
- }, [FlatList, allowFontScaling, decelerationRate, flatListRenderKey, getItemLayout, initialScrollIndex, isDisabled, label, numberOfItemsToShow, numbersForFlatList, onMomentumScrollEnd, onScroll, renderItem, styles.durationScrollFlatList, styles.durationScrollFlatListContentContainer, styles.pickerItemContainer.height, styles.pickerLabel, styles.pickerLabelContainer, viewabilityConfigCallbackPairs]);
384
+ }, [FlatList, allowFontScaling, decelerationRate, flatListRenderKey, getItemLayout, initialScrollIndex, isDisabled, label, labelPositionStyle, numberOfItemsToShow, numbersForFlatList, onMomentumScrollEnd, onScroll, renderItem, styles.durationScrollFlatList, styles.durationScrollFlatListContentContainer, styles.pickerItemContainer.height, styles.pickerLabel, styles.pickerLabelContainer, viewabilityConfigCallbackPairs]);
367
385
  const renderLinearGradient = (0, _react.useMemo)(() => {
368
386
  if (!LinearGradient) {
369
387
  return null;
@@ -392,7 +410,10 @@ const DurationScroll = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
392
410
  }, [LinearGradient, MaskedView, padWithNItems, pickerGradientOverlayProps, styles.pickerContainer.backgroundColor, styles.pickerGradientOverlay]);
393
411
  return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
394
412
  pointerEvents: isDisabled ? "none" : undefined,
395
- style: [styles.durationScrollFlatListContainer, {
413
+ style: [styles.durationScrollFlatListContainer, pickerColumnWidth != null && {
414
+ flex: 0,
415
+ width: pickerColumnWidth
416
+ }, {
396
417
  height: styles.pickerItemContainer.height * numberOfItemsToShow
397
418
  }, isDisabled && styles.disabledPickerContainer],
398
419
  testID: testID
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_colorToRgba","_generateNumbers","_getAdjustedLimit","_getDurationAndIndexFromScrollOffset","_getInitialScrollIndex","_PickerItem","_interopRequireDefault","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","keyExtractor","item","index","toString","DurationScroll","forwardRef","props","ref","aggressivelyGetLatestDuration","allowFontScaling","amLabel","Audio","clickSoundAsset","decelerationRate","disableInfiniteScroll","FlatList","RNFlatList","Haptics","initialValue","interval","is12HourPicker","isDisabled","label","limit","LinearGradient","MaskedView","maximumValue","onDurationChange","padNumbersWithZero","padWithNItems","pickerFeedback","pickerGradientOverlayProps","pmLabel","repeatNumbersNTimes","repeatNumbersNTimesNotExplicitlySet","selectedValue","styles","testID","numberOfItems","useMemo","Math","floor","safeRepeatNumbersNTimes","isNaN","max","round","numbersForFlatList","generate12HourNumbers","repeatNTimes","generateNumbers","initialScrollIndex","getInitialScrollIndex","value","adjustedLimited","getAdjustedLimit","numberOfItemsToShow","latestDuration","useRef","lastFeedbackIndex","flatListRef","clickSound","setClickSound","useState","useEffect","soundInstance","loadSound","sound","newSound","Sound","createAsync","uri","shouldPlay","error","console","warn","_soundInstance","unloadAsync","playClickSound","useCallback","replayAsync","renderItem","createElement","adjustedLimitedMax","adjustedLimitedMin","min","onScroll","newValues","getDurationAndIndexFromScrollOffset","itemHeight","pickerItemContainer","height","yContentOffset","nativeEvent","contentOffset","y","duration","current","feedbackIndex","selectionAsync","onMomentumScrollEnd","_flatListRef$current","targetScrollIndex","scrollToIndex","animated","_flatListRef$current2","onViewableItemsChanged","viewableItems","_viewableItems$","_viewableItems$2","_flatListRef$current3","_flatListRef$current4","viewabilityConfigCallbackPairs","setViewabilityConfigCallbackPairs","viewabilityConfig","viewAreaCoveragePercentThreshold","undefined","flatListRenderKey","setFlatListRenderKey","initialRender","prev","getItemLayout","_","offset","useImperativeHandle","reset","options","_flatListRef$current5","setValue","_flatListRef$current6","renderContent","Fragment","key","contentContainerStyle","durationScrollFlatListContentContainer","data","nestedScrollEnabled","scrollEnabled","scrollEventThrottle","showsVerticalScrollIndicator","snapToAlignment","snapToOffsets","Array","map","style","durationScrollFlatList","windowSize","View","pointerEvents","pickerLabelContainer","Text","pickerLabel","renderLinearGradient","colors","backgroundColor","pickerContainer","transparentBackgroundColor","colorToRgba","color","opacity","gradientHeight","locations","pickerGradientOverlay","durationScrollFlatListContainer","disabledPickerContainer","maskElement","maskedView","_default","exports","React","memo"],"sources":["DurationScroll.tsx"],"sourcesContent":["import React, {\n useRef,\n useCallback,\n forwardRef,\n useImperativeHandle,\n useState,\n useEffect,\n useMemo,\n} from \"react\";\n\nimport { View, Text, FlatList as RNFlatList } from \"react-native\";\nimport type {\n ViewabilityConfigCallbackPairs,\n FlatListProps,\n} from \"react-native\";\n\nimport { colorToRgba } from \"../../utils/colorToRgba\";\nimport {\n generate12HourNumbers,\n generateNumbers,\n} from \"../../utils/generateNumbers\";\nimport { getAdjustedLimit } from \"../../utils/getAdjustedLimit\";\nimport { getDurationAndIndexFromScrollOffset } from \"../../utils/getDurationAndIndexFromScrollOffset\";\nimport { getInitialScrollIndex } from \"../../utils/getInitialScrollIndex\";\nimport PickerItem from \"../PickerItem\";\n\nimport type {\n DurationScrollProps,\n DurationScrollRef,\n ExpoAvAudioInstance,\n} from \"./types\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst keyExtractor = (item: any, index: number) => index.toString();\n\nconst DurationScroll = forwardRef<DurationScrollRef, DurationScrollProps>(\n (props, ref) => {\n const {\n aggressivelyGetLatestDuration,\n allowFontScaling = false,\n amLabel,\n Audio,\n clickSoundAsset,\n decelerationRate = 0.88,\n disableInfiniteScroll = false,\n FlatList = RNFlatList,\n Haptics,\n initialValue = 0,\n interval,\n is12HourPicker,\n isDisabled,\n label,\n limit,\n LinearGradient,\n MaskedView,\n maximumValue,\n onDurationChange,\n padNumbersWithZero = false,\n padWithNItems,\n pickerFeedback,\n pickerGradientOverlayProps,\n pmLabel,\n repeatNumbersNTimes = 3,\n repeatNumbersNTimesNotExplicitlySet,\n selectedValue,\n styles,\n testID,\n } = props;\n\n const numberOfItems = useMemo(() => {\n // guard against negative maximum values\n if (maximumValue < 0) {\n return 1;\n }\n\n return Math.floor(maximumValue / interval) + 1;\n }, [interval, maximumValue]);\n\n const safeRepeatNumbersNTimes = useMemo(() => {\n // do not repeat numbers if there is only one option\n if (numberOfItems === 1) {\n return 1;\n }\n\n if (!disableInfiniteScroll && repeatNumbersNTimes < 2) {\n return 2;\n } else if (repeatNumbersNTimes < 1 || isNaN(repeatNumbersNTimes)) {\n return 1;\n }\n\n // if this variable is not explicitly set, we calculate a reasonable value based on\n // the number of items in the picker, avoiding regular jumps up/down the list\n // whilst avoiding rendering too many items in the picker\n if (repeatNumbersNTimesNotExplicitlySet) {\n return Math.max(Math.round(180 / numberOfItems), 1);\n }\n\n return Math.round(repeatNumbersNTimes);\n }, [\n disableInfiniteScroll,\n numberOfItems,\n repeatNumbersNTimes,\n repeatNumbersNTimesNotExplicitlySet,\n ]);\n\n const numbersForFlatList = useMemo(() => {\n if (is12HourPicker) {\n return generate12HourNumbers({\n padNumbersWithZero,\n repeatNTimes: safeRepeatNumbersNTimes,\n disableInfiniteScroll,\n padWithNItems,\n interval,\n });\n }\n\n return generateNumbers(numberOfItems, {\n padNumbersWithZero,\n repeatNTimes: safeRepeatNumbersNTimes,\n disableInfiniteScroll,\n padWithNItems,\n interval,\n });\n }, [\n disableInfiniteScroll,\n is12HourPicker,\n interval,\n numberOfItems,\n padNumbersWithZero,\n padWithNItems,\n safeRepeatNumbersNTimes,\n ]);\n\n const initialScrollIndex = useMemo(\n () =>\n getInitialScrollIndex({\n disableInfiniteScroll,\n interval,\n numberOfItems,\n padWithNItems,\n repeatNumbersNTimes: safeRepeatNumbersNTimes,\n value: initialValue,\n }),\n [\n disableInfiniteScroll,\n initialValue,\n interval,\n numberOfItems,\n padWithNItems,\n safeRepeatNumbersNTimes,\n ]\n );\n\n const adjustedLimited = useMemo(\n () => getAdjustedLimit(limit, numberOfItems, interval),\n [interval, limit, numberOfItems]\n );\n\n const numberOfItemsToShow = 1 + padWithNItems * 2;\n\n // keep track of the latest duration as it scrolls\n const latestDuration = useRef(0);\n // keep track of the last index scrolled past for haptic/audio feedback\n const lastFeedbackIndex = useRef(0);\n\n const flatListRef = useRef<RNFlatList | null>(null);\n\n const [clickSound, setClickSound] =\n useState<ExpoAvAudioInstance | null>(null);\n\n useEffect(() => {\n // Audio prop deprecated in v2.2.0 (use pickerFeedback instead) - will be removed in a future version\n\n // preload the sound when the component mounts\n let soundInstance: ExpoAvAudioInstance | null = null;\n\n const loadSound = async () => {\n if (!Audio) {\n return;\n }\n\n try {\n const { sound: newSound } = await Audio.Sound.createAsync(\n clickSoundAsset ?? {\n // use a hosted sound as a fallback (do not use local asset due to loader issues\n // in some environments when including mp3 in library)\n uri: \"https://drive.google.com/uc?export=download&id=10e1YkbNsRh-vGx1jmS1Nntz8xzkBp4_I\",\n },\n { shouldPlay: false }\n );\n soundInstance = newSound;\n setClickSound(newSound);\n } catch (error) {\n console.warn(\"Failed to load click sound:\", error);\n }\n };\n\n loadSound();\n\n return () => {\n // unload sound when component unmounts\n soundInstance?.unloadAsync();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [Audio]);\n\n const playClickSound = useCallback(async () => {\n if (!clickSound) return;\n\n try {\n await clickSound.replayAsync();\n } catch (error) {\n console.warn(\"Failed to play click sound:\", error);\n }\n }, [clickSound]);\n\n const renderItem = useCallback<\n NonNullable<FlatListProps<string>[\"renderItem\"]>\n >(\n ({ item }) => (\n <PickerItem\n adjustedLimitedMax={adjustedLimited.max}\n adjustedLimitedMin={adjustedLimited.min}\n allowFontScaling={allowFontScaling}\n amLabel={amLabel}\n is12HourPicker={is12HourPicker}\n item={item}\n pmLabel={pmLabel}\n selectedValue={selectedValue}\n styles={styles}\n />\n ),\n [\n adjustedLimited.max,\n adjustedLimited.min,\n allowFontScaling,\n amLabel,\n is12HourPicker,\n pmLabel,\n selectedValue,\n styles,\n ]\n );\n\n const onScroll = useCallback<\n NonNullable<FlatListProps<string>[\"onScroll\"]>\n >(\n (e) => {\n // this function is only used when the picker is in a modal and/or has Haptic/Audio feedback\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 if (\n !aggressivelyGetLatestDuration &&\n !Haptics &&\n !Audio &&\n !pickerFeedback\n ) {\n return;\n }\n\n if (aggressivelyGetLatestDuration) {\n const newValues = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll,\n interval,\n itemHeight: styles.pickerItemContainer.height,\n numberOfItems,\n padWithNItems,\n yContentOffset: e.nativeEvent.contentOffset.y,\n });\n\n if (newValues.duration !== latestDuration.current) {\n // check limits\n if (newValues.duration > adjustedLimited.max) {\n newValues.duration = adjustedLimited.max;\n } else if (newValues.duration < adjustedLimited.min) {\n newValues.duration = adjustedLimited.min;\n }\n\n latestDuration.current = newValues.duration;\n }\n }\n\n if (pickerFeedback || Haptics || Audio) {\n const feedbackIndex = Math.round(\n (e.nativeEvent.contentOffset.y +\n styles.pickerItemContainer.height / 2) /\n styles.pickerItemContainer.height\n );\n\n if (feedbackIndex !== lastFeedbackIndex.current) {\n // this check stops the feedback firing when the component mounts\n if (lastFeedbackIndex.current) {\n // fire haptic feedback if available\n try {\n Haptics?.selectionAsync();\n } catch {\n // do nothing\n }\n\n // play click sound if available\n try {\n playClickSound();\n } catch {\n // do nothing\n }\n\n // fire custom feedback if available\n try {\n pickerFeedback?.();\n } catch {\n // do nothing\n }\n }\n\n lastFeedbackIndex.current = feedbackIndex;\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n adjustedLimited.max,\n adjustedLimited.min,\n aggressivelyGetLatestDuration,\n playClickSound,\n disableInfiniteScroll,\n interval,\n numberOfItems,\n padWithNItems,\n styles.pickerItemContainer.height,\n ]\n );\n\n const onMomentumScrollEnd = useCallback<\n NonNullable<FlatListProps<string>[\"onMomentumScrollEnd\"]>\n >(\n (e) => {\n const newValues = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll,\n interval,\n itemHeight: styles.pickerItemContainer.height,\n numberOfItems,\n padWithNItems,\n yContentOffset: e.nativeEvent.contentOffset.y,\n });\n\n // check limits\n if (newValues.duration > adjustedLimited.max) {\n const targetScrollIndex =\n newValues.index -\n (newValues.duration - 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 newValues.duration = adjustedLimited.max;\n } else if (newValues.duration < adjustedLimited.min) {\n const targetScrollIndex =\n newValues.index +\n (adjustedLimited.min - newValues.duration);\n flatListRef.current?.scrollToIndex({\n animated: true,\n index:\n // guard against scrolling beyond end of list\n targetScrollIndex <= numbersForFlatList.length - 1\n ? targetScrollIndex\n : adjustedLimited.min,\n }); // scroll up to min\n newValues.duration = adjustedLimited.min;\n }\n\n onDurationChange(newValues.duration);\n },\n [\n disableInfiniteScroll,\n interval,\n styles.pickerItemContainer.height,\n numberOfItems,\n padWithNItems,\n adjustedLimited.max,\n adjustedLimited.min,\n onDurationChange,\n numbersForFlatList.length,\n ]\n );\n\n const onViewableItemsChanged = useCallback<\n NonNullable<FlatListProps<string>[\"onViewableItemsChanged\"]>\n >(\n ({ viewableItems }) => {\n if (numberOfItems === 1) {\n return;\n }\n\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 >=\n numberOfItems * (safeRepeatNumbersNTimes - 0.5)\n ) {\n flatListRef.current?.scrollToIndex({\n animated: false,\n index: viewableItems[0].index - numberOfItems,\n });\n }\n },\n [numberOfItems, safeRepeatNumbersNTimes]\n );\n\n const [\n viewabilityConfigCallbackPairs,\n setViewabilityConfigCallbackPairs,\n ] = useState<ViewabilityConfigCallbackPairs | undefined>(\n !disableInfiniteScroll\n ? [\n {\n viewabilityConfig: {\n viewAreaCoveragePercentThreshold: 0,\n },\n onViewableItemsChanged: onViewableItemsChanged,\n },\n ]\n : undefined\n );\n\n const [flatListRenderKey, setFlatListRenderKey] = useState(0);\n\n const initialRender = useRef(true);\n\n useEffect(() => {\n // don't run on first render\n if (initialRender.current) {\n initialRender.current = false;\n return;\n }\n\n // if the onViewableItemsChanged callback changes, we need to update viewabilityConfigCallbackPairs\n // which requires the FlatList to be remounted, hence the increase of the FlatList key\n setFlatListRenderKey((prev) => prev + 1);\n setViewabilityConfigCallbackPairs(\n !disableInfiniteScroll\n ? [\n {\n viewabilityConfig: {\n viewAreaCoveragePercentThreshold: 0,\n },\n onViewableItemsChanged: onViewableItemsChanged,\n },\n ]\n : undefined\n );\n }, [disableInfiniteScroll, onViewableItemsChanged]);\n\n const getItemLayout = useCallback<\n NonNullable<FlatListProps<string>[\"getItemLayout\"]>\n >(\n (_, index) => ({\n length: styles.pickerItemContainer.height,\n offset: styles.pickerItemContainer.height * index,\n index,\n }),\n [styles.pickerItemContainer.height]\n );\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: getInitialScrollIndex({\n disableInfiniteScroll,\n interval,\n numberOfItems,\n padWithNItems,\n repeatNumbersNTimes: safeRepeatNumbersNTimes,\n value: value,\n }),\n });\n },\n latestDuration: latestDuration,\n }));\n\n const renderContent = useMemo(() => {\n return (\n <>\n <FlatList\n key={flatListRenderKey}\n ref={flatListRef}\n contentContainerStyle={\n styles.durationScrollFlatListContentContainer\n }\n data={numbersForFlatList}\n decelerationRate={decelerationRate}\n getItemLayout={getItemLayout}\n initialScrollIndex={initialScrollIndex}\n keyExtractor={keyExtractor}\n nestedScrollEnabled\n onMomentumScrollEnd={onMomentumScrollEnd}\n onScroll={onScroll}\n renderItem={renderItem}\n scrollEnabled={!isDisabled}\n scrollEventThrottle={16}\n showsVerticalScrollIndicator={false}\n snapToAlignment=\"start\"\n // used in place of snapToInterval due to bug on Android\n snapToOffsets={[\n ...Array(numbersForFlatList.length),\n ].map((_, i) => i * styles.pickerItemContainer.height)}\n style={styles.durationScrollFlatList}\n testID=\"duration-scroll-flatlist\"\n viewabilityConfigCallbackPairs={\n viewabilityConfigCallbackPairs\n }\n windowSize={numberOfItemsToShow}\n />\n <View\n pointerEvents=\"none\"\n style={styles.pickerLabelContainer}>\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 </>\n );\n }, [\n FlatList,\n allowFontScaling,\n decelerationRate,\n flatListRenderKey,\n getItemLayout,\n initialScrollIndex,\n isDisabled,\n label,\n numberOfItemsToShow,\n numbersForFlatList,\n onMomentumScrollEnd,\n onScroll,\n renderItem,\n styles.durationScrollFlatList,\n styles.durationScrollFlatListContentContainer,\n styles.pickerItemContainer.height,\n styles.pickerLabel,\n styles.pickerLabelContainer,\n viewabilityConfigCallbackPairs,\n ]);\n\n const renderLinearGradient = useMemo(() => {\n if (!LinearGradient) {\n return null;\n }\n\n let colors: string[];\n\n if (MaskedView) {\n // if using masked view, we only care about the opacity\n colors = [\n \"rgba(0,0,0,0)\",\n \"rgba(0,0,0,1)\",\n \"rgba(0,0,0,1)\",\n \"rgba(0,0,0,0)\",\n ];\n } else {\n const backgroundColor =\n styles.pickerContainer.backgroundColor ?? \"white\";\n const transparentBackgroundColor = colorToRgba({\n color: backgroundColor,\n opacity: 0,\n });\n colors = [\n backgroundColor,\n transparentBackgroundColor,\n transparentBackgroundColor,\n backgroundColor,\n ];\n }\n\n // calculate the gradient height to cover the top item and bottom item\n const gradientHeight =\n padWithNItems > 0 ? 1 / (padWithNItems * 2 + 1) : 0.3;\n\n return (\n <LinearGradient\n colors={colors}\n locations={[0, gradientHeight, 1 - gradientHeight, 1]}\n pointerEvents=\"none\"\n style={styles.pickerGradientOverlay}\n {...pickerGradientOverlayProps}\n />\n );\n }, [\n LinearGradient,\n MaskedView,\n padWithNItems,\n pickerGradientOverlayProps,\n styles.pickerContainer.backgroundColor,\n styles.pickerGradientOverlay,\n ]);\n\n return (\n <View\n pointerEvents={isDisabled ? \"none\" : undefined}\n style={[\n styles.durationScrollFlatListContainer,\n {\n height:\n styles.pickerItemContainer.height *\n numberOfItemsToShow,\n },\n isDisabled && styles.disabledPickerContainer,\n ]}\n testID={testID}>\n {MaskedView ? (\n <MaskedView\n maskElement={renderLinearGradient}\n style={[styles.maskedView]}>\n {renderContent}\n </MaskedView>\n ) : (\n <>\n {renderContent}\n {renderLinearGradient}\n </>\n )}\n </View>\n );\n }\n);\n\nexport default React.memo(DurationScroll);"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_colorToRgba","_generateNumbers","_getAdjustedLimit","_getDurationAndIndexFromScrollOffset","_getInitialScrollIndex","_PickerItem","_interopRequireDefault","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","keyExtractor","item","index","toString","DurationScroll","forwardRef","props","ref","aggressivelyGetLatestDuration","allowFontScaling","amLabel","Audio","clickSoundAsset","decelerationRate","disableInfiniteScroll","FlatList","RNFlatList","Haptics","initialValue","interval","is12HourPicker","isDisabled","label","limit","LinearGradient","MaskedView","maximumValue","onDurationChange","padNumbersWithZero","padWithNItems","pickerColumnWidth","pickerFeedback","pickerGradientOverlayProps","pickerLabelGap","pmLabel","repeatNumbersNTimes","repeatNumbersNTimesNotExplicitlySet","selectedValue","styles","testID","labelPositionStyle","useMemo","pickerLabelContainer","left","undefined","gap","fontSize","pickerItem","maxDigitCount","Math","max","String","halfNumberWidth","marginLeft","numberOfItems","floor","safeRepeatNumbersNTimes","isNaN","round","numbersForFlatList","generate12HourNumbers","repeatNTimes","generateNumbers","initialScrollIndex","getInitialScrollIndex","value","adjustedLimited","getAdjustedLimit","numberOfItemsToShow","latestDuration","useRef","lastFeedbackIndex","flatListRef","clickSound","setClickSound","useState","useEffect","soundInstance","loadSound","sound","newSound","Sound","createAsync","uri","shouldPlay","error","console","warn","_soundInstance","unloadAsync","playClickSound","useCallback","replayAsync","renderItem","createElement","adjustedLimitedMax","adjustedLimitedMin","min","pickerAmPmPositionStyle","onScroll","newValues","getDurationAndIndexFromScrollOffset","itemHeight","pickerItemContainer","height","yContentOffset","nativeEvent","contentOffset","y","duration","current","feedbackIndex","selectionAsync","onMomentumScrollEnd","_flatListRef$current","targetScrollIndex","scrollToIndex","animated","_flatListRef$current2","onViewableItemsChanged","viewableItems","_viewableItems$","_viewableItems$2","_flatListRef$current3","_flatListRef$current4","viewabilityConfigCallbackPairs","setViewabilityConfigCallbackPairs","viewabilityConfig","viewAreaCoveragePercentThreshold","flatListRenderKey","setFlatListRenderKey","initialRender","prev","getItemLayout","_","offset","useImperativeHandle","reset","options","_flatListRef$current5","setValue","_flatListRef$current6","renderContent","Fragment","key","contentContainerStyle","durationScrollFlatListContentContainer","data","nestedScrollEnabled","scrollEnabled","scrollEventThrottle","showsVerticalScrollIndicator","snapToAlignment","snapToOffsets","Array","map","style","durationScrollFlatList","windowSize","View","pointerEvents","Text","pickerLabel","renderLinearGradient","colors","backgroundColor","pickerContainer","transparentBackgroundColor","colorToRgba","color","opacity","gradientHeight","locations","pickerGradientOverlay","durationScrollFlatListContainer","flex","width","disabledPickerContainer","maskElement","maskedView","_default","exports","React","memo"],"sources":["DurationScroll.tsx"],"sourcesContent":["import React, {\n useRef,\n useCallback,\n forwardRef,\n useImperativeHandle,\n useState,\n useEffect,\n useMemo,\n} from \"react\";\n\nimport { View, Text, FlatList as RNFlatList } from \"react-native\";\nimport type { ViewabilityConfigCallbackPairs, FlatListProps } from \"react-native\";\n\nimport { colorToRgba } from \"../../utils/colorToRgba\";\nimport { generate12HourNumbers, generateNumbers } from \"../../utils/generateNumbers\";\nimport { getAdjustedLimit } from \"../../utils/getAdjustedLimit\";\nimport { getDurationAndIndexFromScrollOffset } from \"../../utils/getDurationAndIndexFromScrollOffset\";\nimport { getInitialScrollIndex } from \"../../utils/getInitialScrollIndex\";\nimport PickerItem from \"../PickerItem\";\nimport type { DurationScrollProps, DurationScrollRef, ExpoAvAudioInstance } from \"./types\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst keyExtractor = (item: any, index: number) => index.toString();\n\nconst DurationScroll = forwardRef<DurationScrollRef, DurationScrollProps>((props, ref) => {\n const {\n aggressivelyGetLatestDuration,\n allowFontScaling = false,\n amLabel,\n Audio,\n clickSoundAsset,\n decelerationRate = 0.88,\n disableInfiniteScroll = false,\n FlatList = RNFlatList,\n Haptics,\n initialValue = 0,\n interval,\n is12HourPicker,\n isDisabled,\n label,\n limit,\n LinearGradient,\n MaskedView,\n maximumValue,\n onDurationChange,\n padNumbersWithZero = false,\n padWithNItems,\n pickerColumnWidth,\n pickerFeedback,\n pickerGradientOverlayProps,\n pickerLabelGap,\n pmLabel,\n repeatNumbersNTimes = 3,\n repeatNumbersNTimesNotExplicitlySet,\n selectedValue,\n styles,\n testID,\n } = props;\n\n const labelPositionStyle = useMemo(() => {\n // When the style already has an explicit `left` (from legacy percentage system or\n // user override), don't apply pixel-based positioning.\n if (styles.pickerLabelContainer.left != null) {\n return undefined;\n }\n\n const gap = pickerLabelGap ?? 6;\n const fontSize = styles.pickerItem.fontSize ?? 25;\n const maxDigitCount = Math.max(2, String(maximumValue).length);\n const halfNumberWidth = (maxDigitCount * fontSize * 0.55) / 2;\n\n return {\n left: \"50%\" as const,\n marginLeft: halfNumberWidth + gap,\n };\n }, [maximumValue, pickerLabelGap, styles.pickerItem.fontSize, styles.pickerLabelContainer.left]);\n\n const numberOfItems = useMemo(() => {\n // guard against negative maximum values\n if (maximumValue < 0) {\n return 1;\n }\n\n return Math.floor(maximumValue / interval) + 1;\n }, [interval, maximumValue]);\n\n const safeRepeatNumbersNTimes = useMemo(() => {\n // do not repeat numbers if there is only one option\n if (numberOfItems === 1) {\n return 1;\n }\n\n if (!disableInfiniteScroll && repeatNumbersNTimes < 2) {\n return 2;\n } else if (repeatNumbersNTimes < 1 || isNaN(repeatNumbersNTimes)) {\n return 1;\n }\n\n // if this variable is not explicitly set, we calculate a reasonable value based on\n // the number of items in the picker, avoiding regular jumps up/down the list\n // whilst avoiding rendering too many items in the picker\n if (repeatNumbersNTimesNotExplicitlySet) {\n return Math.max(Math.round(180 / numberOfItems), 1);\n }\n\n return Math.round(repeatNumbersNTimes);\n }, [\n disableInfiniteScroll,\n numberOfItems,\n repeatNumbersNTimes,\n repeatNumbersNTimesNotExplicitlySet,\n ]);\n\n const numbersForFlatList = useMemo(() => {\n if (is12HourPicker) {\n return generate12HourNumbers({\n disableInfiniteScroll,\n interval,\n padNumbersWithZero,\n padWithNItems,\n repeatNTimes: safeRepeatNumbersNTimes,\n });\n }\n\n return generateNumbers(numberOfItems, {\n disableInfiniteScroll,\n interval,\n padNumbersWithZero,\n padWithNItems,\n repeatNTimes: safeRepeatNumbersNTimes,\n });\n }, [\n disableInfiniteScroll,\n is12HourPicker,\n interval,\n numberOfItems,\n padNumbersWithZero,\n padWithNItems,\n safeRepeatNumbersNTimes,\n ]);\n\n const initialScrollIndex = useMemo(\n () =>\n getInitialScrollIndex({\n disableInfiniteScroll,\n interval,\n numberOfItems,\n padWithNItems,\n repeatNumbersNTimes: safeRepeatNumbersNTimes,\n value: initialValue,\n }),\n [\n disableInfiniteScroll,\n initialValue,\n interval,\n numberOfItems,\n padWithNItems,\n safeRepeatNumbersNTimes,\n ]\n );\n\n const adjustedLimited = useMemo(\n () => getAdjustedLimit(limit, numberOfItems, interval),\n [interval, limit, numberOfItems]\n );\n\n const numberOfItemsToShow = 1 + padWithNItems * 2;\n\n // keep track of the latest duration as it scrolls\n const latestDuration = useRef(0);\n // keep track of the last index scrolled past for haptic/audio feedback\n const lastFeedbackIndex = useRef(0);\n\n const flatListRef = useRef<RNFlatList | null>(null);\n\n const [clickSound, setClickSound] = useState<ExpoAvAudioInstance | null>(null);\n\n useEffect(() => {\n // Audio prop deprecated in v2.2.0 (use pickerFeedback instead) - will be removed in a future version\n\n // preload the sound when the component mounts\n let soundInstance: ExpoAvAudioInstance | null = null;\n\n const loadSound = async () => {\n if (!Audio) {\n return;\n }\n\n try {\n const { sound: newSound } = await Audio.Sound.createAsync(\n clickSoundAsset ?? {\n // use a hosted sound as a fallback (do not use local asset due to loader issues\n // in some environments when including mp3 in library)\n uri: \"https://drive.google.com/uc?export=download&id=10e1YkbNsRh-vGx1jmS1Nntz8xzkBp4_I\",\n },\n { shouldPlay: false }\n );\n soundInstance = newSound;\n setClickSound(newSound);\n } catch (error) {\n console.warn(\"Failed to load click sound:\", error);\n }\n };\n\n loadSound();\n\n return () => {\n // unload sound when component unmounts\n soundInstance?.unloadAsync();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [Audio]);\n\n const playClickSound = useCallback(async () => {\n if (!clickSound) return;\n\n try {\n await clickSound.replayAsync();\n } catch (error) {\n console.warn(\"Failed to play click sound:\", error);\n }\n }, [clickSound]);\n\n const renderItem = useCallback<NonNullable<FlatListProps<string>[\"renderItem\"]>>(\n ({ item }) => (\n <PickerItem\n adjustedLimitedMax={adjustedLimited.max}\n adjustedLimitedMin={adjustedLimited.min}\n allowFontScaling={allowFontScaling}\n amLabel={amLabel}\n is12HourPicker={is12HourPicker}\n item={item}\n pickerAmPmPositionStyle={labelPositionStyle}\n pmLabel={pmLabel}\n selectedValue={selectedValue}\n styles={styles}\n />\n ),\n [\n adjustedLimited.max,\n adjustedLimited.min,\n allowFontScaling,\n amLabel,\n is12HourPicker,\n labelPositionStyle,\n pmLabel,\n selectedValue,\n styles,\n ]\n );\n\n const onScroll = useCallback<NonNullable<FlatListProps<string>[\"onScroll\"]>>(\n (e) => {\n // this function is only used when the picker is in a modal and/or has Haptic/Audio feedback\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 if (!aggressivelyGetLatestDuration && !Haptics && !Audio && !pickerFeedback) {\n return;\n }\n\n if (aggressivelyGetLatestDuration) {\n const newValues = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll,\n interval,\n itemHeight: styles.pickerItemContainer.height,\n numberOfItems,\n padWithNItems,\n yContentOffset: e.nativeEvent.contentOffset.y,\n });\n\n if (newValues.duration !== latestDuration.current) {\n // check limits\n if (newValues.duration > adjustedLimited.max) {\n newValues.duration = adjustedLimited.max;\n } else if (newValues.duration < adjustedLimited.min) {\n newValues.duration = adjustedLimited.min;\n }\n\n latestDuration.current = newValues.duration;\n }\n }\n\n if (pickerFeedback || Haptics || Audio) {\n const feedbackIndex = Math.round(\n (e.nativeEvent.contentOffset.y + styles.pickerItemContainer.height / 2) /\n styles.pickerItemContainer.height\n );\n\n if (feedbackIndex !== lastFeedbackIndex.current) {\n // this check stops the feedback firing when the component mounts\n if (lastFeedbackIndex.current) {\n // fire haptic feedback if available\n try {\n Haptics?.selectionAsync();\n } catch {\n // do nothing\n }\n\n // play click sound if available\n try {\n playClickSound();\n } catch {\n // do nothing\n }\n\n // fire custom feedback if available\n try {\n pickerFeedback?.();\n } catch {\n // do nothing\n }\n }\n\n lastFeedbackIndex.current = feedbackIndex;\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n adjustedLimited.max,\n adjustedLimited.min,\n aggressivelyGetLatestDuration,\n playClickSound,\n disableInfiniteScroll,\n interval,\n numberOfItems,\n padWithNItems,\n styles.pickerItemContainer.height,\n ]\n );\n\n const onMomentumScrollEnd = useCallback<\n NonNullable<FlatListProps<string>[\"onMomentumScrollEnd\"]>\n >(\n (e) => {\n const newValues = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll,\n interval,\n itemHeight: styles.pickerItemContainer.height,\n numberOfItems,\n padWithNItems,\n yContentOffset: e.nativeEvent.contentOffset.y,\n });\n\n // check limits\n if (newValues.duration > adjustedLimited.max) {\n const targetScrollIndex = newValues.index - (newValues.duration - adjustedLimited.max);\n flatListRef.current?.scrollToIndex({\n animated: true,\n index:\n // guard against scrolling beyond end of list\n targetScrollIndex >= 0 ? targetScrollIndex : adjustedLimited.max - 1,\n }); // scroll down to max\n newValues.duration = adjustedLimited.max;\n } else if (newValues.duration < adjustedLimited.min) {\n const targetScrollIndex = newValues.index + (adjustedLimited.min - newValues.duration);\n flatListRef.current?.scrollToIndex({\n animated: true,\n index:\n // guard against scrolling beyond end of list\n targetScrollIndex <= numbersForFlatList.length - 1\n ? targetScrollIndex\n : adjustedLimited.min,\n }); // scroll up to min\n newValues.duration = adjustedLimited.min;\n }\n\n onDurationChange(newValues.duration);\n },\n [\n disableInfiniteScroll,\n interval,\n styles.pickerItemContainer.height,\n numberOfItems,\n padWithNItems,\n adjustedLimited.max,\n adjustedLimited.min,\n onDurationChange,\n numbersForFlatList.length,\n ]\n );\n\n const onViewableItemsChanged = useCallback<\n NonNullable<FlatListProps<string>[\"onViewableItemsChanged\"]>\n >(\n ({ viewableItems }) => {\n if (numberOfItems === 1) {\n return;\n }\n\n if (viewableItems[0]?.index && viewableItems[0].index < numberOfItems * 0.5) {\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 * (safeRepeatNumbersNTimes - 0.5)\n ) {\n flatListRef.current?.scrollToIndex({\n animated: false,\n index: viewableItems[0].index - numberOfItems,\n });\n }\n },\n [numberOfItems, safeRepeatNumbersNTimes]\n );\n\n const [viewabilityConfigCallbackPairs, setViewabilityConfigCallbackPairs] = useState<\n ViewabilityConfigCallbackPairs | undefined\n >(\n !disableInfiniteScroll\n ? [\n {\n onViewableItemsChanged: onViewableItemsChanged,\n viewabilityConfig: {\n viewAreaCoveragePercentThreshold: 0,\n },\n },\n ]\n : undefined\n );\n\n const [flatListRenderKey, setFlatListRenderKey] = useState(0);\n\n const initialRender = useRef(true);\n\n useEffect(() => {\n // don't run on first render\n if (initialRender.current) {\n initialRender.current = false;\n return;\n }\n\n // if the onViewableItemsChanged callback changes, we need to update viewabilityConfigCallbackPairs\n // which requires the FlatList to be remounted, hence the increase of the FlatList key\n setFlatListRenderKey((prev) => prev + 1);\n setViewabilityConfigCallbackPairs(\n !disableInfiniteScroll\n ? [\n {\n onViewableItemsChanged: onViewableItemsChanged,\n viewabilityConfig: {\n viewAreaCoveragePercentThreshold: 0,\n },\n },\n ]\n : undefined\n );\n }, [disableInfiniteScroll, onViewableItemsChanged]);\n\n const getItemLayout = useCallback<NonNullable<FlatListProps<string>[\"getItemLayout\"]>>(\n (_, index) => ({\n index,\n length: styles.pickerItemContainer.height,\n offset: styles.pickerItemContainer.height * index,\n }),\n [styles.pickerItemContainer.height]\n );\n\n useImperativeHandle(ref, () => ({\n latestDuration: latestDuration,\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: getInitialScrollIndex({\n disableInfiniteScroll,\n interval,\n numberOfItems,\n padWithNItems,\n repeatNumbersNTimes: safeRepeatNumbersNTimes,\n value: value,\n }),\n });\n },\n }));\n\n const renderContent = useMemo(() => {\n return (\n <>\n <FlatList\n key={flatListRenderKey}\n ref={flatListRef}\n contentContainerStyle={styles.durationScrollFlatListContentContainer}\n data={numbersForFlatList}\n decelerationRate={decelerationRate}\n getItemLayout={getItemLayout}\n initialScrollIndex={initialScrollIndex}\n keyExtractor={keyExtractor}\n nestedScrollEnabled\n onMomentumScrollEnd={onMomentumScrollEnd}\n onScroll={onScroll}\n renderItem={renderItem}\n scrollEnabled={!isDisabled}\n scrollEventThrottle={16}\n showsVerticalScrollIndicator={false}\n snapToAlignment=\"start\"\n // used in place of snapToInterval due to bug on Android\n snapToOffsets={[...Array(numbersForFlatList.length)].map(\n (_, i) => i * styles.pickerItemContainer.height\n )}\n style={styles.durationScrollFlatList}\n testID=\"duration-scroll-flatlist\"\n viewabilityConfigCallbackPairs={viewabilityConfigCallbackPairs}\n windowSize={numberOfItemsToShow}\n />\n <View pointerEvents=\"none\" style={[styles.pickerLabelContainer, labelPositionStyle]}>\n {typeof label === \"string\" ? (\n <Text allowFontScaling={allowFontScaling} style={styles.pickerLabel}>\n {label}\n </Text>\n ) : (\n label ?? null\n )}\n </View>\n </>\n );\n }, [\n FlatList,\n allowFontScaling,\n decelerationRate,\n flatListRenderKey,\n getItemLayout,\n initialScrollIndex,\n isDisabled,\n label,\n labelPositionStyle,\n numberOfItemsToShow,\n numbersForFlatList,\n onMomentumScrollEnd,\n onScroll,\n renderItem,\n styles.durationScrollFlatList,\n styles.durationScrollFlatListContentContainer,\n styles.pickerItemContainer.height,\n styles.pickerLabel,\n styles.pickerLabelContainer,\n viewabilityConfigCallbackPairs,\n ]);\n\n const renderLinearGradient = useMemo(() => {\n if (!LinearGradient) {\n return null;\n }\n\n let colors: string[];\n\n if (MaskedView) {\n // if using masked view, we only care about the opacity\n colors = [\"rgba(0,0,0,0)\", \"rgba(0,0,0,1)\", \"rgba(0,0,0,1)\", \"rgba(0,0,0,0)\"];\n } else {\n const backgroundColor = styles.pickerContainer.backgroundColor ?? \"white\";\n const transparentBackgroundColor = colorToRgba({\n color: backgroundColor,\n opacity: 0,\n });\n colors = [\n backgroundColor,\n transparentBackgroundColor,\n transparentBackgroundColor,\n backgroundColor,\n ];\n }\n\n // calculate the gradient height to cover the top item and bottom item\n const gradientHeight = padWithNItems > 0 ? 1 / (padWithNItems * 2 + 1) : 0.3;\n\n return (\n <LinearGradient\n colors={colors}\n locations={[0, gradientHeight, 1 - gradientHeight, 1]}\n pointerEvents=\"none\"\n style={styles.pickerGradientOverlay}\n {...pickerGradientOverlayProps}\n />\n );\n }, [\n LinearGradient,\n MaskedView,\n padWithNItems,\n pickerGradientOverlayProps,\n styles.pickerContainer.backgroundColor,\n styles.pickerGradientOverlay,\n ]);\n\n return (\n <View\n pointerEvents={isDisabled ? \"none\" : undefined}\n style={[\n styles.durationScrollFlatListContainer,\n pickerColumnWidth != null && { flex: 0, width: pickerColumnWidth },\n {\n height: styles.pickerItemContainer.height * numberOfItemsToShow,\n },\n isDisabled && styles.disabledPickerContainer,\n ]}\n testID={testID}\n >\n {MaskedView ? (\n <MaskedView maskElement={renderLinearGradient} style={[styles.maskedView]}>\n {renderContent}\n </MaskedView>\n ) : (\n <>\n {renderContent}\n {renderLinearGradient}\n </>\n )}\n </View>\n );\n});\n\nexport default React.memo(DurationScroll);\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { RefObject } from \"react\";\n\nimport type { View } from \"react-native\";\n\nimport type { generateStyles } from \"../TimerPicker/styles\";\n\nexport interface DurationScrollProps {\n Audio?: any;\n FlatList?: any;\n Haptics?: any;\n LinearGradient?: any;\n MaskedView?: any;\n aggressivelyGetLatestDuration: boolean;\n allowFontScaling?: boolean;\n amLabel?: string;\n clickSoundAsset?: SoundAsset;\n decelerationRate?: number | \"normal\" | \"fast\";\n disableInfiniteScroll?: boolean;\n initialValue?: number;\n interval: number;\n is12HourPicker?: boolean;\n isDisabled?: boolean;\n label?: string | React.ReactElement;\n limit?: Limit;\n maximumValue: number;\n onDurationChange: (duration: number) => void;\n padNumbersWithZero?: boolean;\n padWithNItems: number;\n pickerFeedback?: () => void | Promise<void>;\n pickerGradientOverlayProps?: Partial<LinearGradientProps>;\n pmLabel?: string;\n repeatNumbersNTimes?: number;\n repeatNumbersNTimesNotExplicitlySet: boolean;\n selectedValue?: number;\n styles: ReturnType<typeof generateStyles>;\n testID?: string;\n}\n\nexport interface DurationScrollRef {\n latestDuration: RefObject<number>;\n reset: (options?: { animated?: boolean }) => void;\n setValue: (value: number, options?: { animated?: boolean }) => void;\n}\n\ntype LinearGradientPoint = {\n x: number;\n y: number;\n};\n\nexport type LinearGradientProps = React.ComponentProps<typeof View> & {\n colors: string[];\n end?: LinearGradientPoint | null;\n locations?: number[] | null;\n start?: LinearGradientPoint | null;\n};\n\nexport type Limit = {\n max?: number;\n min?: number;\n};\n\nexport type SoundAsset =\n | number\n | {\n headers?: Record<string, string>;\n overrideFileExtensionAndroid?: string;\n uri: string;\n };\n\nexport type ExpoAvAudioInstance = {\n replayAsync: () => Promise<void>;\n unloadAsync: () => Promise<void>;\n};"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type React from \"react\";\nimport { type RefObject } from \"react\";\n\nimport type { View } from \"react-native\";\n\nimport type { generateStyles } from \"../TimerPicker/styles\";\n\nexport interface DurationScrollProps {\n aggressivelyGetLatestDuration: boolean;\n allowFontScaling?: boolean;\n amLabel?: string;\n Audio?: any;\n clickSoundAsset?: SoundAsset;\n decelerationRate?: number | \"normal\" | \"fast\";\n disableInfiniteScroll?: boolean;\n FlatList?: any;\n Haptics?: any;\n initialValue?: number;\n interval: number;\n is12HourPicker?: boolean;\n isDisabled?: boolean;\n label?: string | React.ReactElement;\n limit?: Limit;\n LinearGradient?: any;\n MaskedView?: any;\n maximumValue: number;\n onDurationChange: (duration: number) => void;\n padNumbersWithZero?: boolean;\n padWithNItems: number;\n pickerColumnWidth?: number;\n pickerFeedback?: () => void | Promise<void>;\n pickerGradientOverlayProps?: Partial<LinearGradientProps>;\n pickerLabelGap?: number;\n pmLabel?: string;\n repeatNumbersNTimes?: number;\n repeatNumbersNTimesNotExplicitlySet: boolean;\n selectedValue?: number;\n styles: ReturnType<typeof generateStyles>;\n testID?: string;\n}\n\nexport interface DurationScrollRef {\n latestDuration: RefObject<number>;\n reset: (options?: { animated?: boolean }) => void;\n setValue: (value: number, options?: { animated?: boolean }) => void;\n}\n\ntype LinearGradientPoint = {\n x: number;\n y: number;\n};\n\nexport type LinearGradientProps = React.ComponentProps<typeof View> & {\n colors: string[];\n end?: LinearGradientPoint | null;\n locations?: number[] | null;\n start?: LinearGradientPoint | null;\n};\n\nexport type Limit = {\n max?: number;\n min?: number;\n};\n\nexport type SoundAsset =\n | number\n | {\n headers?: Record<string, string>;\n overrideFileExtensionAndroid?: string;\n uri: string;\n };\n\nexport type ExpoAvAudioInstance = {\n replayAsync: () => Promise<void>;\n unloadAsync: () => Promise<void>;\n};\n"],"mappings":"","ignoreList":[]}
@@ -47,28 +47,28 @@ const Modal = props => {
47
47
  const contentAnimatedStyle = {
48
48
  transform: [{
49
49
  translateY: animatedOpacity.current.interpolate({
50
+ extrapolate: "clamp",
50
51
  inputRange: [0, 1],
51
- outputRange: [screenHeight, 0],
52
- extrapolate: "clamp"
52
+ outputRange: [screenHeight, 0]
53
53
  })
54
54
  }]
55
55
  };
56
56
  const show = (0, _react.useCallback)(() => {
57
57
  _reactNative.Animated.timing(animatedOpacity.current, {
58
+ duration: animationDuration,
58
59
  easing: _reactNative.Easing.inOut(_reactNative.Easing.quad),
60
+ toValue: 1,
59
61
  // Using native driver in the modal makes the content flash
60
- useNativeDriver: true,
61
- duration: animationDuration,
62
- toValue: 1
62
+ useNativeDriver: true
63
63
  }).start();
64
64
  }, [animationDuration]);
65
65
  const hide = (0, _react.useCallback)(() => {
66
66
  _reactNative.Animated.timing(animatedOpacity.current, {
67
+ duration: animationDuration,
67
68
  easing: _reactNative.Easing.inOut(_reactNative.Easing.quad),
69
+ toValue: 0,
68
70
  // Using native driver in the modal makes the content flash
69
- useNativeDriver: true,
70
- duration: animationDuration,
71
- toValue: 0
71
+ useNativeDriver: true
72
72
  }).start(() => {
73
73
  if (isMounted.current) {
74
74
  onHide === null || onHide === void 0 || onHide();
@@ -94,8 +94,8 @@ const Modal = props => {
94
94
  testID: "modal-backdrop"
95
95
  }, /*#__PURE__*/_react.default.createElement(_reactNative.Animated.View, {
96
96
  style: [_styles.styles.backdrop, backdropAnimatedStyle, {
97
- width: screenWidth,
98
- height: screenHeight
97
+ height: screenHeight,
98
+ width: screenWidth
99
99
  }, overlayStyle]
100
100
  })), /*#__PURE__*/_react.default.createElement(_reactNative.Animated.View, {
101
101
  pointerEvents: "box-none",
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_styles","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","Modal","props","animationDuration","children","contentStyle","isVisible","modalProps","onHide","onOverlayPress","overlayOpacity","overlayStyle","testID","height","screenHeight","width","screenWidth","useWindowDimensions","isMounted","useRef","animatedOpacity","Animated","Value","useEffect","current","show","backdropAnimatedStyle","opacity","interpolate","inputRange","outputRange","contentAnimatedStyle","transform","translateY","extrapolate","useCallback","timing","easing","Easing","inOut","quad","useNativeDriver","duration","toValue","start","hide","createElement","animationType","transparent","visible","TouchableWithoutFeedback","onPress","View","style","styles","backdrop","pointerEvents","content","exports","_default","React","memo"],"sources":["Modal.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef } from \"react\";\n\nimport {\n Animated,\n Easing,\n Modal as ReactNativeModal,\n TouchableWithoutFeedback,\n useWindowDimensions,\n} from \"react-native\";\n\nimport { styles } from \"./styles\";\nimport type { ModalProps } from \"./types\";\n\nexport const Modal = (props: ModalProps) => {\n const {\n animationDuration = 300,\n children,\n contentStyle,\n isVisible = false,\n modalProps,\n onHide,\n onOverlayPress,\n overlayOpacity = 0.4,\n overlayStyle,\n testID = \"modal\",\n } = props;\n\n const { height: screenHeight, width: screenWidth } = useWindowDimensions();\n\n const isMounted = useRef(false);\n const animatedOpacity = useRef(new Animated.Value(0));\n\n useEffect(() => {\n isMounted.current = true;\n if (isVisible) {\n show();\n }\n\n return () => {\n isMounted.current = false;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const backdropAnimatedStyle = {\n opacity: animatedOpacity.current.interpolate({\n inputRange: [0, 1],\n outputRange: [0, overlayOpacity],\n }),\n };\n const contentAnimatedStyle = {\n transform: [\n {\n translateY: animatedOpacity.current.interpolate({\n inputRange: [0, 1],\n outputRange: [screenHeight, 0],\n extrapolate: \"clamp\",\n }),\n },\n ],\n };\n\n const show = useCallback(() => {\n Animated.timing(animatedOpacity.current, {\n easing: Easing.inOut(Easing.quad),\n // Using native driver in the modal makes the content flash\n useNativeDriver: true,\n duration: animationDuration,\n toValue: 1,\n }).start();\n }, [animationDuration]);\n\n const hide = useCallback(() => {\n Animated.timing(animatedOpacity.current, {\n easing: Easing.inOut(Easing.quad),\n // Using native driver in the modal makes the content flash\n useNativeDriver: true,\n duration: animationDuration,\n toValue: 0,\n }).start(() => {\n if (isMounted.current) {\n onHide?.();\n }\n });\n }, [animationDuration, onHide]);\n\n useEffect(() => {\n if (isVisible) {\n show();\n } else {\n hide();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isVisible]);\n\n return (\n <ReactNativeModal\n animationType=\"fade\"\n transparent\n visible={isVisible}\n {...modalProps}\n testID={testID}>\n <TouchableWithoutFeedback\n onPress={onOverlayPress}\n testID=\"modal-backdrop\">\n <Animated.View\n style={[\n styles.backdrop,\n backdropAnimatedStyle,\n { width: screenWidth, height: screenHeight },\n overlayStyle,\n ]}\n />\n </TouchableWithoutFeedback>\n <Animated.View\n pointerEvents=\"box-none\"\n style={[styles.content, contentAnimatedStyle, contentStyle]}>\n {children}\n </Animated.View>\n </ReactNativeModal>\n );\n};\n\nexport default React.memo(Modal);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_styles","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","Modal","props","animationDuration","children","contentStyle","isVisible","modalProps","onHide","onOverlayPress","overlayOpacity","overlayStyle","testID","height","screenHeight","width","screenWidth","useWindowDimensions","isMounted","useRef","animatedOpacity","Animated","Value","useEffect","current","show","backdropAnimatedStyle","opacity","interpolate","inputRange","outputRange","contentAnimatedStyle","transform","translateY","extrapolate","useCallback","timing","duration","easing","Easing","inOut","quad","toValue","useNativeDriver","start","hide","createElement","animationType","transparent","visible","TouchableWithoutFeedback","onPress","View","style","styles","backdrop","pointerEvents","content","exports","_default","React","memo"],"sources":["Modal.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef } from \"react\";\n\nimport {\n Animated,\n Easing,\n Modal as ReactNativeModal,\n TouchableWithoutFeedback,\n useWindowDimensions,\n} from \"react-native\";\n\nimport { styles } from \"./styles\";\nimport type { ModalProps } from \"./types\";\n\nexport const Modal = (props: ModalProps) => {\n const {\n animationDuration = 300,\n children,\n contentStyle,\n isVisible = false,\n modalProps,\n onHide,\n onOverlayPress,\n overlayOpacity = 0.4,\n overlayStyle,\n testID = \"modal\",\n } = props;\n\n const { height: screenHeight, width: screenWidth } = useWindowDimensions();\n\n const isMounted = useRef(false);\n const animatedOpacity = useRef(new Animated.Value(0));\n\n useEffect(() => {\n isMounted.current = true;\n if (isVisible) {\n show();\n }\n\n return () => {\n isMounted.current = false;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const backdropAnimatedStyle = {\n opacity: animatedOpacity.current.interpolate({\n inputRange: [0, 1],\n outputRange: [0, overlayOpacity],\n }),\n };\n const contentAnimatedStyle = {\n transform: [\n {\n translateY: animatedOpacity.current.interpolate({\n extrapolate: \"clamp\",\n inputRange: [0, 1],\n outputRange: [screenHeight, 0],\n }),\n },\n ],\n };\n\n const show = useCallback(() => {\n Animated.timing(animatedOpacity.current, {\n duration: animationDuration,\n easing: Easing.inOut(Easing.quad),\n toValue: 1,\n // Using native driver in the modal makes the content flash\n useNativeDriver: true,\n }).start();\n }, [animationDuration]);\n\n const hide = useCallback(() => {\n Animated.timing(animatedOpacity.current, {\n duration: animationDuration,\n easing: Easing.inOut(Easing.quad),\n toValue: 0,\n // Using native driver in the modal makes the content flash\n useNativeDriver: true,\n }).start(() => {\n if (isMounted.current) {\n onHide?.();\n }\n });\n }, [animationDuration, onHide]);\n\n useEffect(() => {\n if (isVisible) {\n show();\n } else {\n hide();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isVisible]);\n\n return (\n <ReactNativeModal\n animationType=\"fade\"\n transparent\n visible={isVisible}\n {...modalProps}\n testID={testID}\n >\n <TouchableWithoutFeedback onPress={onOverlayPress} testID=\"modal-backdrop\">\n <Animated.View\n style={[\n styles.backdrop,\n backdropAnimatedStyle,\n { height: screenHeight, width: screenWidth },\n overlayStyle,\n ]}\n />\n </TouchableWithoutFeedback>\n <Animated.View\n pointerEvents=\"box-none\"\n style={[styles.content, contentAnimatedStyle, contentStyle]}\n >\n {children}\n </Animated.View>\n </ReactNativeModal>\n );\n};\n\nexport default React.memo(Modal);\n"],"mappings":"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","ignoreList":[]}
@@ -7,18 +7,18 @@ exports.styles = void 0;
7
7
  var _reactNative = require("react-native");
8
8
  const styles = exports.styles = _reactNative.StyleSheet.create({
9
9
  backdrop: {
10
- position: "absolute",
11
- top: 0,
10
+ backgroundColor: "black",
12
11
  bottom: 0,
13
12
  left: 0,
13
+ opacity: 0,
14
+ position: "absolute",
14
15
  right: 0,
15
- backgroundColor: "black",
16
- opacity: 0
16
+ top: 0
17
17
  },
18
18
  content: {
19
+ alignItems: "center",
19
20
  flex: 1,
20
21
  justifyContent: "center",
21
- alignItems: "center",
22
22
  zIndex: 1
23
23
  }
24
24
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","styles","exports","StyleSheet","create","backdrop","position","top","bottom","left","right","backgroundColor","opacity","content","flex","justifyContent","alignItems","zIndex"],"sources":["styles.ts"],"sourcesContent":["import { StyleSheet } from \"react-native\";\n\nexport const styles = StyleSheet.create({\n backdrop: {\n position: \"absolute\",\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: \"black\",\n opacity: 0,\n },\n content: {\n flex: 1,\n justifyContent: \"center\",\n alignItems: \"center\",\n zIndex: 1,\n },\n});"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEO,MAAMC,MAAM,GAAAC,OAAA,CAAAD,MAAA,GAAGE,uBAAU,CAACC,MAAM,CAAC;EACpCC,QAAQ,EAAE;IACNC,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,MAAM,EAAE,CAAC;IACTC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,eAAe,EAAE,OAAO;IACxBC,OAAO,EAAE;EACb,CAAC;EACDC,OAAO,EAAE;IACLC,IAAI,EAAE,CAAC;IACPC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,MAAM,EAAE;EACZ;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","styles","exports","StyleSheet","create","backdrop","backgroundColor","bottom","left","opacity","position","right","top","content","alignItems","flex","justifyContent","zIndex"],"sources":["styles.ts"],"sourcesContent":["import { StyleSheet } from \"react-native\";\n\nexport const styles = StyleSheet.create({\n backdrop: {\n backgroundColor: \"black\",\n bottom: 0,\n left: 0,\n opacity: 0,\n position: \"absolute\",\n right: 0,\n top: 0,\n },\n content: {\n alignItems: \"center\",\n flex: 1,\n justifyContent: \"center\",\n zIndex: 1,\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEO,MAAMC,MAAM,GAAAC,OAAA,CAAAD,MAAA,GAAGE,uBAAU,CAACC,MAAM,CAAC;EACtCC,QAAQ,EAAE;IACRC,eAAe,EAAE,OAAO;IACxBC,MAAM,EAAE,CAAC;IACTC,IAAI,EAAE,CAAC;IACPC,OAAO,EAAE,CAAC;IACVC,QAAQ,EAAE,UAAU;IACpBC,KAAK,EAAE,CAAC;IACRC,GAAG,EAAE;EACP,CAAC;EACDC,OAAO,EAAE;IACPC,UAAU,EAAE,QAAQ;IACpBC,IAAI,EAAE,CAAC;IACPC,cAAc,EAAE,QAAQ;IACxBC,MAAM,EAAE;EACV;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { ComponentProps } from \"react\";\n\nimport type { ViewStyle } from \"react-native\";\nimport type { Modal as ReactNativeModal } from \"react-native\";\n\nexport interface ModalProps {\n animationDuration?: number;\n children?: React.ReactElement;\n contentStyle?: ViewStyle;\n isVisible?: boolean;\n modalProps?: ComponentProps<typeof ReactNativeModal>;\n onHide?: () => void;\n onOverlayPress?: () => void;\n overlayOpacity?: number;\n overlayStyle?: ViewStyle;\n testID?: string;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from \"react\";\nimport { type ComponentProps } from \"react\";\n\nimport type { ViewStyle } from \"react-native\";\nimport type { Modal as ReactNativeModal } from \"react-native\";\n\nexport interface ModalProps {\n animationDuration?: number;\n children?: React.ReactElement;\n contentStyle?: ViewStyle;\n isVisible?: boolean;\n modalProps?: ComponentProps<typeof ReactNativeModal>;\n onHide?: () => void;\n onOverlayPress?: () => void;\n overlayOpacity?: number;\n overlayStyle?: ViewStyle;\n testID?: string;\n}\n"],"mappings":"","ignoreList":[]}
@@ -14,6 +14,7 @@ const PickerItem = /*#__PURE__*/_react.default.memo(({
14
14
  amLabel,
15
15
  is12HourPicker,
16
16
  item,
17
+ pickerAmPmPositionStyle,
17
18
  pmLabel,
18
19
  selectedValue,
19
20
  styles
@@ -37,7 +38,7 @@ const PickerItem = /*#__PURE__*/_react.default.memo(({
37
38
  allowFontScaling: allowFontScaling,
38
39
  style: [styles.pickerItem, isSelected && styles.selectedPickerItem, intItem > adjustedLimitedMax || intItem < adjustedLimitedMin ? styles.disabledPickerItem : {}]
39
40
  }, stringItem), is12HourPicker && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
40
- style: styles.pickerAmPmContainer
41
+ style: [styles.pickerAmPmContainer, pickerAmPmPositionStyle]
41
42
  }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
42
43
  allowFontScaling: allowFontScaling,
43
44
  style: styles.pickerAmPmLabel