react-native-timer-picker 2.2.0 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -35
- package/dist/commonjs/components/TimerPicker/TimerPicker.js +20 -9
- package/dist/commonjs/components/TimerPicker/TimerPicker.js.map +1 -1
- package/dist/commonjs/components/TimerPicker/types.js.map +1 -1
- package/dist/commonjs/tests/DurationScroll.test.js +94 -0
- package/dist/commonjs/tests/DurationScroll.test.js.map +1 -1
- package/dist/commonjs/tests/Modal.test.js +79 -2
- package/dist/commonjs/tests/Modal.test.js.map +1 -1
- package/dist/commonjs/tests/TimerPicker.test.js +115 -0
- package/dist/commonjs/tests/TimerPicker.test.js.map +1 -1
- package/dist/commonjs/tests/TimerPickerModal.test.js +120 -0
- package/dist/commonjs/tests/TimerPickerModal.test.js.map +1 -1
- package/dist/commonjs/tests/colorToRgba.test.js +176 -0
- package/dist/commonjs/tests/colorToRgba.test.js.map +1 -0
- package/dist/commonjs/tests/generateNumbers.test.js +350 -0
- package/dist/commonjs/tests/generateNumbers.test.js.map +1 -0
- package/dist/commonjs/tests/getAdjustedLimit.test.js +324 -0
- package/dist/commonjs/tests/getAdjustedLimit.test.js.map +1 -0
- package/dist/commonjs/tests/getDurationAndIndexFromScrollOffset.test.js +424 -0
- package/dist/commonjs/tests/getDurationAndIndexFromScrollOffset.test.js.map +1 -0
- package/dist/commonjs/tests/getInitialScrollIndex.test.js +396 -0
- package/dist/commonjs/tests/getInitialScrollIndex.test.js.map +1 -0
- package/dist/commonjs/tests/getSafeInitialValue.test.js +497 -0
- package/dist/commonjs/tests/getSafeInitialValue.test.js.map +1 -0
- package/dist/commonjs/tests/padNumber.test.js +301 -0
- package/dist/commonjs/tests/padNumber.test.js.map +1 -0
- package/dist/commonjs/utils/colorToRgba.js +5 -0
- package/dist/commonjs/utils/colorToRgba.js.map +1 -1
- package/dist/commonjs/utils/getAdjustedLimit.js +3 -3
- package/dist/commonjs/utils/getAdjustedLimit.js.map +1 -1
- package/dist/module/components/TimerPicker/TimerPicker.js +20 -9
- package/dist/module/components/TimerPicker/TimerPicker.js.map +1 -1
- package/dist/module/components/TimerPicker/types.js.map +1 -1
- package/dist/module/tests/DurationScroll.test.js +94 -0
- package/dist/module/tests/DurationScroll.test.js.map +1 -1
- package/dist/module/tests/Modal.test.js +80 -3
- package/dist/module/tests/Modal.test.js.map +1 -1
- package/dist/module/tests/TimerPicker.test.js +115 -0
- package/dist/module/tests/TimerPicker.test.js.map +1 -1
- package/dist/module/tests/TimerPickerModal.test.js +121 -1
- package/dist/module/tests/TimerPickerModal.test.js.map +1 -1
- package/dist/module/tests/colorToRgba.test.js +174 -0
- package/dist/module/tests/colorToRgba.test.js.map +1 -0
- package/dist/module/tests/generateNumbers.test.js +348 -0
- package/dist/module/tests/generateNumbers.test.js.map +1 -0
- package/dist/module/tests/getAdjustedLimit.test.js +322 -0
- package/dist/module/tests/getAdjustedLimit.test.js.map +1 -0
- package/dist/module/tests/getDurationAndIndexFromScrollOffset.test.js +422 -0
- package/dist/module/tests/getDurationAndIndexFromScrollOffset.test.js.map +1 -0
- package/dist/module/tests/getInitialScrollIndex.test.js +394 -0
- package/dist/module/tests/getInitialScrollIndex.test.js.map +1 -0
- package/dist/module/tests/getSafeInitialValue.test.js +495 -0
- package/dist/module/tests/getSafeInitialValue.test.js.map +1 -0
- package/dist/module/tests/padNumber.test.js +299 -0
- package/dist/module/tests/padNumber.test.js.map +1 -0
- package/dist/module/utils/colorToRgba.js +5 -0
- package/dist/module/utils/colorToRgba.js.map +1 -1
- package/dist/module/utils/getAdjustedLimit.js +3 -3
- package/dist/module/utils/getAdjustedLimit.js.map +1 -1
- package/dist/typescript/components/TimerPicker/styles.d.ts +0 -247
- package/dist/typescript/components/TimerPicker/types.d.ts +4 -4
- package/dist/typescript/components/TimerPickerModal/styles.d.ts +0 -152
- package/package.json +3 -4
package/README.md
CHANGED
|
@@ -13,36 +13,37 @@ Works with Expo and bare React Native apps ✅
|
|
|
13
13
|
|
|
14
14
|
Includes iOS-style haptic and audio feedback 🍏
|
|
15
15
|
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
16
|
+
- [React Native Timer Picker ⏰🕰️⏳](#react-native-timer-picker-️)
|
|
17
|
+
- [Demos 📱](#demos-)
|
|
18
|
+
- [Installation 🚀](#installation-)
|
|
19
|
+
- [Peer Dependencies 👶](#peer-dependencies-)
|
|
20
|
+
- [Linear Gradient](#linear-gradient)
|
|
21
|
+
- [Masked View](#masked-view)
|
|
22
|
+
- [Examples 😎](#examples-)
|
|
23
|
+
- [Timer Picker Modal (Dark Mode) 🌚](#timer-picker-modal-dark-mode-)
|
|
24
|
+
- [Timer Picker Modal (Light Mode) 🌞](#timer-picker-modal-light-mode-)
|
|
25
|
+
- [Timer Picker with Transparent Fade-Out (Dark Mode) 🌒](#timer-picker-with-transparent-fade-out-dark-mode-)
|
|
26
|
+
- [Timer Picker with Customisation (Light Mode) 🌔](#timer-picker-with-customisation-light-mode-)
|
|
27
|
+
- [Props 💅](#props-)
|
|
28
|
+
- [TimerPicker ⏲️](#timerpicker-️)
|
|
29
|
+
- [Custom Styles 👗](#custom-styles-)
|
|
30
|
+
- [Performance](#performance)
|
|
31
|
+
- [Custom FlatList](#custom-flatlist)
|
|
32
|
+
- [TimerPickerModal ⏰](#timerpickermodal-)
|
|
33
|
+
- [Custom Styles 👕](#custom-styles--1)
|
|
34
|
+
- [Methods 🔄](#methods-)
|
|
35
|
+
- [TimerPicker](#timerpicker)
|
|
36
|
+
- [TimerPickerModal](#timerpickermodal)
|
|
37
|
+
- [Picker Feedback 📳🔉](#picker-feedback-)
|
|
38
|
+
- [Audio Feedack](#audio-feedack)
|
|
39
|
+
- [Haptic Feedback](#haptic-feedback)
|
|
40
|
+
- [Feedback Example](#feedback-example)
|
|
41
|
+
- [Expo-Specific Audio/Haptic Feedback (DEPRECATED)](#expo-specific-audiohaptic-feedback-deprecated)
|
|
42
|
+
- [Contributing 🧑🤝🧑](#contributing-)
|
|
43
|
+
- [Dev Setup](#dev-setup)
|
|
44
|
+
- [GitHub Guidelines](#github-guidelines)
|
|
45
|
+
- [Limitations ⚠](#limitations-)
|
|
46
|
+
- [License 📝](#license-)
|
|
46
47
|
|
|
47
48
|
<br>
|
|
48
49
|
|
|
@@ -63,7 +64,7 @@ Includes iOS-style haptic and audio feedback 🍏
|
|
|
63
64
|
|
|
64
65
|
## Installation 🚀
|
|
65
66
|
|
|
66
|
-
Supports React Native >= 0.
|
|
67
|
+
Supports React Native >= 0.72.0 and React >= 18.2.0.
|
|
67
68
|
|
|
68
69
|
Just run:
|
|
69
70
|
|
|
@@ -576,7 +577,7 @@ timerPickerRef.current.reset(options?: { animated: boolean });
|
|
|
576
577
|
`setValue` - imperative method to set the selected duration to a particular value
|
|
577
578
|
|
|
578
579
|
```javascript
|
|
579
|
-
timerPickerRef.current.setValue({ hours
|
|
580
|
+
timerPickerRef.current.setValue({ days?: number, hours?: number, minutes?: number, seconds?: number }, options?: { animated: boolean });
|
|
580
581
|
```
|
|
581
582
|
|
|
582
583
|
It also exposes the following ref object:
|
|
@@ -586,6 +587,7 @@ It also exposes the following ref object:
|
|
|
586
587
|
```javascript
|
|
587
588
|
const latestDuration = timerPickerRef.current?.latestDuration;
|
|
588
589
|
const newDuration = {
|
|
590
|
+
days: latestDuration?.days?.current,
|
|
589
591
|
hours: latestDuration?.hours?.current,
|
|
590
592
|
minutes: latestDuration?.minutes?.current,
|
|
591
593
|
seconds: latestDuration?.seconds?.current,
|
|
@@ -610,11 +612,11 @@ There is a challenge here with audio latency as we need to be able to play the c
|
|
|
610
612
|
|
|
611
613
|
Recommended libraries:
|
|
612
614
|
|
|
613
|
-
- [react-native-audio-api](https://www.npmjs.com/package/react-native-audio-api): this is a new library but
|
|
615
|
+
- [react-native-audio-api](https://www.npmjs.com/package/react-native-audio-api): this is a new library but it's built by Software Mansion and has strong potential for our application with low-latency audio. It is not currently straightforward to use a local sound asset with this library; please check out the [Expo example](./examples/example-expo/App.tsx) and [Bare React Native example](./examples/example-bare//App.tsx) for a guide on how to do that. Note that this library will not work in Expo Go (you must create a development build).
|
|
614
616
|
|
|
615
617
|
Libraries to avoid:
|
|
616
618
|
|
|
617
|
-
- [react-native-sound](https://www.npmjs.com/package/react-native-sound): this likely has low enough latency to work but has not been maintained for
|
|
619
|
+
- [react-native-sound](https://www.npmjs.com/package/react-native-sound): this likely has low enough latency to work but has not been maintained for 3+ years.
|
|
618
620
|
- [expo-av](https://docs.expo.dev/versions/latest/sdk/av/): the latency is too high to work well. Expo are developing a new audio module [expo-audio](https://docs.expo.dev/versions/latest/sdk/audio/) that may be better, but at the time of writing (May 2025) it does not have the capability to repeatedly play the same sound.
|
|
619
621
|
|
|
620
622
|
### Haptic Feedback
|
|
@@ -749,7 +751,7 @@ There are two permenant branches: `main` and `develop`. You should never work di
|
|
|
749
751
|
## Limitations ⚠
|
|
750
752
|
|
|
751
753
|
- The project is not compatibile with React Native versions prior to `v0.72.0` due to this [React Native issue](https://github.com/facebook/react-native/issues/36329).
|
|
752
|
-
- The audio feedback provided by the `Audio` prop with `expo-av` suffers from high latency and doesn't work well when a user scrolls quickly. This has now been deprecated in place of the `pickerFeedback` prop. Please try `react-native-audio-api`
|
|
754
|
+
- The audio feedback provided by the `Audio` prop with `expo-av` suffers from high latency and doesn't work well when a user scrolls quickly. This has now been deprecated in place of the `pickerFeedback` prop. Please try `react-native-audio-api` instead.
|
|
753
755
|
|
|
754
756
|
<br>
|
|
755
757
|
|
|
@@ -120,15 +120,26 @@ const TimerPicker = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
|
|
|
120
120
|
(_secondsDurationScrol = secondsDurationScrollRef.current) === null || _secondsDurationScrol === void 0 || _secondsDurationScrol.reset(options);
|
|
121
121
|
},
|
|
122
122
|
setValue: (value, options) => {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
123
|
+
if (value.days) {
|
|
124
|
+
var _daysDurationScrollRe2;
|
|
125
|
+
setSelectedDays(value.days);
|
|
126
|
+
(_daysDurationScrollRe2 = daysDurationScrollRef.current) === null || _daysDurationScrollRe2 === void 0 || _daysDurationScrollRe2.setValue(value.days, options);
|
|
127
|
+
}
|
|
128
|
+
if (value.hours) {
|
|
129
|
+
var _hoursDurationScrollR2;
|
|
130
|
+
setSelectedHours(value.hours);
|
|
131
|
+
(_hoursDurationScrollR2 = hoursDurationScrollRef.current) === null || _hoursDurationScrollR2 === void 0 || _hoursDurationScrollR2.setValue(value.hours, options);
|
|
132
|
+
}
|
|
133
|
+
if (value.minutes) {
|
|
134
|
+
var _minutesDurationScrol2;
|
|
135
|
+
setSelectedMinutes(value.minutes);
|
|
136
|
+
(_minutesDurationScrol2 = minutesDurationScrollRef.current) === null || _minutesDurationScrol2 === void 0 || _minutesDurationScrol2.setValue(value.minutes, options);
|
|
137
|
+
}
|
|
138
|
+
if (value.seconds) {
|
|
139
|
+
var _secondsDurationScrol2;
|
|
140
|
+
setSelectedSeconds(value.seconds);
|
|
141
|
+
(_secondsDurationScrol2 = secondsDurationScrollRef.current) === null || _secondsDurationScrol2 === void 0 || _secondsDurationScrol2.setValue(value.seconds, options);
|
|
142
|
+
}
|
|
132
143
|
},
|
|
133
144
|
latestDuration: {
|
|
134
145
|
days: (_daysDurationScrollRe3 = daysDurationScrollRef.current) === null || _daysDurationScrollRe3 === void 0 ? void 0 : _daysDurationScrollRe3.latestDuration,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_getSafeInitialValue","_DurationScroll","_interopRequireDefault","_styles","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","TimerPicker","forwardRef","props","ref","aggressivelyGetLatestDuration","allowFontScaling","amLabel","dayInterval","dayLabel","dayLimit","daysPickerIsDisabled","decelerationRate","disableInfiniteScroll","hideDays","hideHours","hideMinutes","hideSeconds","hourInterval","hourLabel","hourLimit","hoursPickerIsDisabled","initialValue","maximumDays","maximumHours","maximumMinutes","maximumSeconds","minuteInterval","minuteLabel","minuteLimit","minutesPickerIsDisabled","onDurationChange","padDaysWithZero","padHoursWithZero","padMinutesWithZero","padSecondsWithZero","padWithNItems","pickerContainerProps","pmLabel","repeatDayNumbersNTimes","repeatHourNumbersNTimes","repeatMinuteNumbersNTimes","repeatSecondNumbersNTimes","secondInterval","secondLabel","secondLimit","secondsPickerIsDisabled","styles","customStyles","use12HourPicker","otherProps","useEffect","Audio","console","warn","Haptics","clickSoundAsset","safePadWithNItems","useMemo","isNaN","maxPadWithNItems","Math","round","safeInitialValue","getSafeInitialValue","days","hours","minutes","seconds","generateStyles","selectedDays","setSelectedDays","useState","selectedHours","setSelectedHours","selectedMinutes","setSelectedMinutes","selectedSeconds","setSelectedSeconds","daysDurationScrollRef","useRef","hoursDurationScrollRef","minutesDurationScrollRef","secondsDurationScrollRef","useImperativeHandle","_daysDurationScrollRe3","_hoursDurationScrollR3","_minutesDurationScrol3","_secondsDurationScrol3","reset","options","_daysDurationScrollRe","_hoursDurationScrollR","_minutesDurationScrol","_secondsDurationScrol","current","setValue","value","_daysDurationScrollRe2","_hoursDurationScrollR2","_minutesDurationScrol2","_secondsDurationScrol2","latestDuration","createElement","View","style","pickerContainer","testID","interval","isDisabled","label","limit","maximumValue","padNumbersWithZero","repeatNumbersNTimes","repeatNumbersNTimesNotExplicitlySet","undefined","is12HourPicker","_default","exports","React","memo"],"sources":["TimerPicker.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { View } from \"react-native\";\n\nimport { getSafeInitialValue } from \"../../utils/getSafeInitialValue\";\nimport DurationScroll from \"../DurationScroll\";\nimport type { DurationScrollRef } from \"../DurationScroll\";\n\nimport { generateStyles } from \"./styles\";\nimport type { TimerPickerProps, TimerPickerRef } from \"./types\";\n\nconst TimerPicker = forwardRef<TimerPickerRef, TimerPickerProps>(\n (props, ref) => {\n const {\n aggressivelyGetLatestDuration = false,\n allowFontScaling = false,\n amLabel = \"am\",\n dayInterval = 1,\n dayLabel,\n dayLimit,\n daysPickerIsDisabled = false,\n decelerationRate = 0.88,\n disableInfiniteScroll = false,\n hideDays = true,\n hideHours = false,\n hideMinutes = false,\n hideSeconds = false,\n hourInterval = 1,\n hourLabel,\n hourLimit,\n hoursPickerIsDisabled = false,\n initialValue,\n maximumDays = 30,\n maximumHours = 23,\n maximumMinutes = 59,\n maximumSeconds = 59,\n minuteInterval = 1,\n minuteLabel,\n minuteLimit,\n minutesPickerIsDisabled = false,\n onDurationChange,\n padDaysWithZero = false,\n padHoursWithZero = false,\n padMinutesWithZero = true,\n padSecondsWithZero = true,\n padWithNItems = 1,\n pickerContainerProps,\n pmLabel = \"pm\",\n repeatDayNumbersNTimes = 3,\n repeatHourNumbersNTimes = 8,\n repeatMinuteNumbersNTimes = 3,\n repeatSecondNumbersNTimes = 3,\n secondInterval = 1,\n secondLabel,\n secondLimit,\n secondsPickerIsDisabled = false,\n styles: customStyles,\n use12HourPicker = false,\n ...otherProps\n } = props;\n\n useEffect(() => {\n if (otherProps.Audio) {\n console.warn(\n \"The \\\"Audio\\\" prop is deprecated and will be removed in a future version. Please use the \\\"pickerFeedback\\\" prop instead.\"\n );\n }\n if (otherProps.Haptics) {\n console.warn(\n \"The \\\"Haptics\\\" prop is deprecated and will be removed in a future version. Please use the \\\"pickerFeedback\\\" prop instead.\"\n );\n }\n if (otherProps.clickSoundAsset) {\n console.warn(\n \"The \\\"clickSoundAsset\\\" prop is deprecated and will be removed in a future version. Please use the \\\"pickerFeedback\\\" prop instead.\"\n );\n }\n }, [otherProps.Audio, otherProps.Haptics, otherProps.clickSoundAsset]);\n\n const safePadWithNItems = useMemo(() => {\n if (padWithNItems < 0 || isNaN(padWithNItems)) {\n return 0;\n }\n\n const maxPadWithNItems = hideHours ? 15 : 6;\n\n if (padWithNItems > maxPadWithNItems) {\n return maxPadWithNItems;\n }\n\n return Math.round(padWithNItems);\n }, [hideHours, padWithNItems]);\n\n const safeInitialValue = useMemo(\n () =>\n getSafeInitialValue({\n days: initialValue?.days,\n hours: initialValue?.hours,\n minutes: initialValue?.minutes,\n seconds: initialValue?.seconds,\n }),\n [\n initialValue?.days,\n initialValue?.hours,\n initialValue?.minutes,\n initialValue?.seconds,\n ]\n );\n\n const styles = useMemo(\n () => generateStyles(customStyles),\n\n [customStyles]\n );\n\n const [selectedDays, setSelectedDays] = useState(safeInitialValue.days);\n const [selectedHours, setSelectedHours] = useState(\n safeInitialValue.hours\n );\n const [selectedMinutes, setSelectedMinutes] = useState(\n safeInitialValue.minutes\n );\n const [selectedSeconds, setSelectedSeconds] = useState(\n safeInitialValue.seconds\n );\n\n useEffect(() => {\n onDurationChange?.({\n days: selectedDays,\n hours: selectedHours,\n minutes: selectedMinutes,\n seconds: selectedSeconds,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedDays, selectedHours, selectedMinutes, selectedSeconds]);\n\n const daysDurationScrollRef = useRef<DurationScrollRef>(null);\n const hoursDurationScrollRef = useRef<DurationScrollRef>(null);\n const minutesDurationScrollRef = useRef<DurationScrollRef>(null);\n const secondsDurationScrollRef = useRef<DurationScrollRef>(null);\n\n useImperativeHandle(ref, () => ({\n reset: (options) => {\n setSelectedDays(safeInitialValue.days);\n setSelectedHours(safeInitialValue.hours);\n setSelectedMinutes(safeInitialValue.minutes);\n setSelectedSeconds(safeInitialValue.seconds);\n daysDurationScrollRef.current?.reset(options);\n hoursDurationScrollRef.current?.reset(options);\n minutesDurationScrollRef.current?.reset(options);\n secondsDurationScrollRef.current?.reset(options);\n },\n setValue: (value, options) => {\n setSelectedDays(value.days);\n setSelectedHours(value.hours);\n setSelectedMinutes(value.minutes);\n setSelectedSeconds(value.seconds);\n daysDurationScrollRef.current?.setValue(value.days, options);\n hoursDurationScrollRef.current?.setValue(value.hours, options);\n minutesDurationScrollRef.current?.setValue(\n value.minutes,\n options\n );\n secondsDurationScrollRef.current?.setValue(\n value.seconds,\n options\n );\n },\n latestDuration: {\n days: daysDurationScrollRef.current?.latestDuration,\n hours: hoursDurationScrollRef.current?.latestDuration,\n minutes: minutesDurationScrollRef.current?.latestDuration,\n seconds: secondsDurationScrollRef.current?.latestDuration,\n },\n }));\n\n return (\n <View\n {...pickerContainerProps}\n style={styles.pickerContainer}\n testID=\"timer-picker\">\n {!hideDays ? (\n <DurationScroll\n ref={daysDurationScrollRef}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n allowFontScaling={allowFontScaling}\n disableInfiniteScroll={disableInfiniteScroll}\n initialValue={safeInitialValue.days}\n interval={dayInterval}\n isDisabled={daysPickerIsDisabled}\n label={dayLabel ?? \"d\"}\n limit={dayLimit}\n maximumValue={maximumDays}\n onDurationChange={setSelectedDays}\n padNumbersWithZero={padDaysWithZero}\n padWithNItems={safePadWithNItems}\n repeatNumbersNTimes={repeatDayNumbersNTimes}\n repeatNumbersNTimesNotExplicitlySet={\n props?.repeatDayNumbersNTimes === undefined\n }\n styles={styles}\n testID=\"duration-scroll-day\"\n {...otherProps}\n />\n ) : null}\n {!hideHours ? (\n <DurationScroll\n ref={hoursDurationScrollRef}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n allowFontScaling={allowFontScaling}\n amLabel={amLabel}\n decelerationRate={decelerationRate}\n disableInfiniteScroll={disableInfiniteScroll}\n initialValue={safeInitialValue.hours}\n interval={hourInterval}\n is12HourPicker={use12HourPicker}\n isDisabled={hoursPickerIsDisabled}\n label={\n hourLabel ?? (!use12HourPicker ? \"h\" : undefined)\n }\n limit={hourLimit}\n maximumValue={maximumHours}\n onDurationChange={setSelectedHours}\n padNumbersWithZero={padHoursWithZero}\n padWithNItems={safePadWithNItems}\n pmLabel={pmLabel}\n repeatNumbersNTimes={repeatHourNumbersNTimes}\n repeatNumbersNTimesNotExplicitlySet={\n props?.repeatHourNumbersNTimes === undefined\n }\n styles={styles}\n testID=\"duration-scroll-hour\"\n {...otherProps}\n />\n ) : null}\n {!hideMinutes ? (\n <DurationScroll\n ref={minutesDurationScrollRef}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n allowFontScaling={allowFontScaling}\n decelerationRate={decelerationRate}\n disableInfiniteScroll={disableInfiniteScroll}\n initialValue={safeInitialValue.minutes}\n interval={minuteInterval}\n isDisabled={minutesPickerIsDisabled}\n label={minuteLabel ?? \"m\"}\n limit={minuteLimit}\n maximumValue={maximumMinutes}\n onDurationChange={setSelectedMinutes}\n padNumbersWithZero={padMinutesWithZero}\n padWithNItems={safePadWithNItems}\n repeatNumbersNTimes={repeatMinuteNumbersNTimes}\n repeatNumbersNTimesNotExplicitlySet={\n props?.repeatMinuteNumbersNTimes === undefined\n }\n styles={styles}\n testID=\"duration-scroll-minute\"\n {...otherProps}\n />\n ) : null}\n {!hideSeconds ? (\n <DurationScroll\n ref={secondsDurationScrollRef}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n allowFontScaling={allowFontScaling}\n decelerationRate={decelerationRate}\n disableInfiniteScroll={disableInfiniteScroll}\n initialValue={safeInitialValue.seconds}\n interval={secondInterval}\n isDisabled={secondsPickerIsDisabled}\n label={secondLabel ?? \"s\"}\n limit={secondLimit}\n maximumValue={maximumSeconds}\n onDurationChange={setSelectedSeconds}\n padNumbersWithZero={padSecondsWithZero}\n padWithNItems={safePadWithNItems}\n repeatNumbersNTimes={repeatSecondNumbersNTimes}\n repeatNumbersNTimesNotExplicitlySet={\n props?.repeatSecondNumbersNTimes === undefined\n }\n styles={styles}\n testID=\"duration-scroll-second\"\n {...otherProps}\n />\n ) : null}\n </View>\n );\n }\n);\n\nexport default React.memo(TimerPicker);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_getSafeInitialValue","_DurationScroll","_interopRequireDefault","_styles","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","TimerPicker","forwardRef","props","ref","aggressivelyGetLatestDuration","allowFontScaling","amLabel","dayInterval","dayLabel","dayLimit","daysPickerIsDisabled","decelerationRate","disableInfiniteScroll","hideDays","hideHours","hideMinutes","hideSeconds","hourInterval","hourLabel","hourLimit","hoursPickerIsDisabled","initialValue","maximumDays","maximumHours","maximumMinutes","maximumSeconds","minuteInterval","minuteLabel","minuteLimit","minutesPickerIsDisabled","onDurationChange","padDaysWithZero","padHoursWithZero","padMinutesWithZero","padSecondsWithZero","padWithNItems","pickerContainerProps","pmLabel","repeatDayNumbersNTimes","repeatHourNumbersNTimes","repeatMinuteNumbersNTimes","repeatSecondNumbersNTimes","secondInterval","secondLabel","secondLimit","secondsPickerIsDisabled","styles","customStyles","use12HourPicker","otherProps","useEffect","Audio","console","warn","Haptics","clickSoundAsset","safePadWithNItems","useMemo","isNaN","maxPadWithNItems","Math","round","safeInitialValue","getSafeInitialValue","days","hours","minutes","seconds","generateStyles","selectedDays","setSelectedDays","useState","selectedHours","setSelectedHours","selectedMinutes","setSelectedMinutes","selectedSeconds","setSelectedSeconds","daysDurationScrollRef","useRef","hoursDurationScrollRef","minutesDurationScrollRef","secondsDurationScrollRef","useImperativeHandle","_daysDurationScrollRe3","_hoursDurationScrollR3","_minutesDurationScrol3","_secondsDurationScrol3","reset","options","_daysDurationScrollRe","_hoursDurationScrollR","_minutesDurationScrol","_secondsDurationScrol","current","setValue","value","_daysDurationScrollRe2","_hoursDurationScrollR2","_minutesDurationScrol2","_secondsDurationScrol2","latestDuration","createElement","View","style","pickerContainer","testID","interval","isDisabled","label","limit","maximumValue","padNumbersWithZero","repeatNumbersNTimes","repeatNumbersNTimesNotExplicitlySet","undefined","is12HourPicker","_default","exports","React","memo"],"sources":["TimerPicker.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { View } from \"react-native\";\n\nimport { getSafeInitialValue } from \"../../utils/getSafeInitialValue\";\nimport DurationScroll from \"../DurationScroll\";\nimport type { DurationScrollRef } from \"../DurationScroll\";\n\nimport { generateStyles } from \"./styles\";\nimport type { TimerPickerProps, TimerPickerRef } from \"./types\";\n\nconst TimerPicker = forwardRef<TimerPickerRef, TimerPickerProps>(\n (props, ref) => {\n const {\n aggressivelyGetLatestDuration = false,\n allowFontScaling = false,\n amLabel = \"am\",\n dayInterval = 1,\n dayLabel,\n dayLimit,\n daysPickerIsDisabled = false,\n decelerationRate = 0.88,\n disableInfiniteScroll = false,\n hideDays = true,\n hideHours = false,\n hideMinutes = false,\n hideSeconds = false,\n hourInterval = 1,\n hourLabel,\n hourLimit,\n hoursPickerIsDisabled = false,\n initialValue,\n maximumDays = 30,\n maximumHours = 23,\n maximumMinutes = 59,\n maximumSeconds = 59,\n minuteInterval = 1,\n minuteLabel,\n minuteLimit,\n minutesPickerIsDisabled = false,\n onDurationChange,\n padDaysWithZero = false,\n padHoursWithZero = false,\n padMinutesWithZero = true,\n padSecondsWithZero = true,\n padWithNItems = 1,\n pickerContainerProps,\n pmLabel = \"pm\",\n repeatDayNumbersNTimes = 3,\n repeatHourNumbersNTimes = 8,\n repeatMinuteNumbersNTimes = 3,\n repeatSecondNumbersNTimes = 3,\n secondInterval = 1,\n secondLabel,\n secondLimit,\n secondsPickerIsDisabled = false,\n styles: customStyles,\n use12HourPicker = false,\n ...otherProps\n } = props;\n\n useEffect(() => {\n if (otherProps.Audio) {\n console.warn(\n \"The \\\"Audio\\\" prop is deprecated and will be removed in a future version. Please use the \\\"pickerFeedback\\\" prop instead.\"\n );\n }\n if (otherProps.Haptics) {\n console.warn(\n \"The \\\"Haptics\\\" prop is deprecated and will be removed in a future version. Please use the \\\"pickerFeedback\\\" prop instead.\"\n );\n }\n if (otherProps.clickSoundAsset) {\n console.warn(\n \"The \\\"clickSoundAsset\\\" prop is deprecated and will be removed in a future version. Please use the \\\"pickerFeedback\\\" prop instead.\"\n );\n }\n }, [otherProps.Audio, otherProps.Haptics, otherProps.clickSoundAsset]);\n\n const safePadWithNItems = useMemo(() => {\n if (padWithNItems < 0 || isNaN(padWithNItems)) {\n return 0;\n }\n\n const maxPadWithNItems = hideHours ? 15 : 6;\n\n if (padWithNItems > maxPadWithNItems) {\n return maxPadWithNItems;\n }\n\n return Math.round(padWithNItems);\n }, [hideHours, padWithNItems]);\n\n const safeInitialValue = useMemo(\n () =>\n getSafeInitialValue({\n days: initialValue?.days,\n hours: initialValue?.hours,\n minutes: initialValue?.minutes,\n seconds: initialValue?.seconds,\n }),\n [\n initialValue?.days,\n initialValue?.hours,\n initialValue?.minutes,\n initialValue?.seconds,\n ]\n );\n\n const styles = useMemo(\n () => generateStyles(customStyles),\n\n [customStyles]\n );\n\n const [selectedDays, setSelectedDays] = useState(safeInitialValue.days);\n const [selectedHours, setSelectedHours] = useState(\n safeInitialValue.hours\n );\n const [selectedMinutes, setSelectedMinutes] = useState(\n safeInitialValue.minutes\n );\n const [selectedSeconds, setSelectedSeconds] = useState(\n safeInitialValue.seconds\n );\n\n useEffect(() => {\n onDurationChange?.({\n days: selectedDays,\n hours: selectedHours,\n minutes: selectedMinutes,\n seconds: selectedSeconds,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedDays, selectedHours, selectedMinutes, selectedSeconds]);\n\n const daysDurationScrollRef = useRef<DurationScrollRef>(null);\n const hoursDurationScrollRef = useRef<DurationScrollRef>(null);\n const minutesDurationScrollRef = useRef<DurationScrollRef>(null);\n const secondsDurationScrollRef = useRef<DurationScrollRef>(null);\n\n useImperativeHandle(ref, () => ({\n reset: (options) => {\n setSelectedDays(safeInitialValue.days);\n setSelectedHours(safeInitialValue.hours);\n setSelectedMinutes(safeInitialValue.minutes);\n setSelectedSeconds(safeInitialValue.seconds);\n daysDurationScrollRef.current?.reset(options);\n hoursDurationScrollRef.current?.reset(options);\n minutesDurationScrollRef.current?.reset(options);\n secondsDurationScrollRef.current?.reset(options);\n },\n setValue: (value, options) => {\n if (value.days) {\n setSelectedDays(value.days);\n daysDurationScrollRef.current?.setValue(\n value.days,\n options\n );\n }\n if (value.hours) {\n setSelectedHours(value.hours);\n hoursDurationScrollRef.current?.setValue(\n value.hours,\n options\n );\n }\n if (value.minutes) {\n setSelectedMinutes(value.minutes);\n minutesDurationScrollRef.current?.setValue(\n value.minutes,\n options\n );\n }\n if (value.seconds) {\n setSelectedSeconds(value.seconds);\n secondsDurationScrollRef.current?.setValue(\n value.seconds,\n options\n );\n }\n },\n latestDuration: {\n days: daysDurationScrollRef.current?.latestDuration,\n hours: hoursDurationScrollRef.current?.latestDuration,\n minutes: minutesDurationScrollRef.current?.latestDuration,\n seconds: secondsDurationScrollRef.current?.latestDuration,\n },\n }));\n\n return (\n <View\n {...pickerContainerProps}\n style={styles.pickerContainer}\n testID=\"timer-picker\">\n {!hideDays ? (\n <DurationScroll\n ref={daysDurationScrollRef}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n allowFontScaling={allowFontScaling}\n disableInfiniteScroll={disableInfiniteScroll}\n initialValue={safeInitialValue.days}\n interval={dayInterval}\n isDisabled={daysPickerIsDisabled}\n label={dayLabel ?? \"d\"}\n limit={dayLimit}\n maximumValue={maximumDays}\n onDurationChange={setSelectedDays}\n padNumbersWithZero={padDaysWithZero}\n padWithNItems={safePadWithNItems}\n repeatNumbersNTimes={repeatDayNumbersNTimes}\n repeatNumbersNTimesNotExplicitlySet={\n props?.repeatDayNumbersNTimes === undefined\n }\n styles={styles}\n testID=\"duration-scroll-day\"\n {...otherProps}\n />\n ) : null}\n {!hideHours ? (\n <DurationScroll\n ref={hoursDurationScrollRef}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n allowFontScaling={allowFontScaling}\n amLabel={amLabel}\n decelerationRate={decelerationRate}\n disableInfiniteScroll={disableInfiniteScroll}\n initialValue={safeInitialValue.hours}\n interval={hourInterval}\n is12HourPicker={use12HourPicker}\n isDisabled={hoursPickerIsDisabled}\n label={\n hourLabel ?? (!use12HourPicker ? \"h\" : undefined)\n }\n limit={hourLimit}\n maximumValue={maximumHours}\n onDurationChange={setSelectedHours}\n padNumbersWithZero={padHoursWithZero}\n padWithNItems={safePadWithNItems}\n pmLabel={pmLabel}\n repeatNumbersNTimes={repeatHourNumbersNTimes}\n repeatNumbersNTimesNotExplicitlySet={\n props?.repeatHourNumbersNTimes === undefined\n }\n styles={styles}\n testID=\"duration-scroll-hour\"\n {...otherProps}\n />\n ) : null}\n {!hideMinutes ? (\n <DurationScroll\n ref={minutesDurationScrollRef}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n allowFontScaling={allowFontScaling}\n decelerationRate={decelerationRate}\n disableInfiniteScroll={disableInfiniteScroll}\n initialValue={safeInitialValue.minutes}\n interval={minuteInterval}\n isDisabled={minutesPickerIsDisabled}\n label={minuteLabel ?? \"m\"}\n limit={minuteLimit}\n maximumValue={maximumMinutes}\n onDurationChange={setSelectedMinutes}\n padNumbersWithZero={padMinutesWithZero}\n padWithNItems={safePadWithNItems}\n repeatNumbersNTimes={repeatMinuteNumbersNTimes}\n repeatNumbersNTimesNotExplicitlySet={\n props?.repeatMinuteNumbersNTimes === undefined\n }\n styles={styles}\n testID=\"duration-scroll-minute\"\n {...otherProps}\n />\n ) : null}\n {!hideSeconds ? (\n <DurationScroll\n ref={secondsDurationScrollRef}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n allowFontScaling={allowFontScaling}\n decelerationRate={decelerationRate}\n disableInfiniteScroll={disableInfiniteScroll}\n initialValue={safeInitialValue.seconds}\n interval={secondInterval}\n isDisabled={secondsPickerIsDisabled}\n label={secondLabel ?? \"s\"}\n limit={secondLimit}\n maximumValue={maximumSeconds}\n onDurationChange={setSelectedSeconds}\n padNumbersWithZero={padSecondsWithZero}\n padWithNItems={safePadWithNItems}\n repeatNumbersNTimes={repeatSecondNumbersNTimes}\n repeatNumbersNTimesNotExplicitlySet={\n props?.repeatSecondNumbersNTimes === undefined\n }\n styles={styles}\n testID=\"duration-scroll-second\"\n {...otherProps}\n />\n ) : null}\n </View>\n );\n }\n);\n\nexport default React.memo(TimerPicker);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { RefObject } from \"react\";\n\nimport type { View } from \"react-native\";\n\nimport type {\n LinearGradientProps,\n SoundAsset,\n Limit,\n} from \"../DurationScroll/types\";\n\nimport type { CustomTimerPickerStyles } from \"./styles\";\n\nexport interface TimerPickerRef {\n latestDuration: {\n days: RefObject<number> | undefined;\n hours: RefObject<number> | undefined;\n minutes: RefObject<number> | undefined;\n seconds: RefObject<number> | undefined;\n };\n reset: (options?: { animated?: boolean }) => void;\n setValue: (\n value: {\n days
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { RefObject } from \"react\";\n\nimport type { View } from \"react-native\";\n\nimport type {\n LinearGradientProps,\n SoundAsset,\n Limit,\n} from \"../DurationScroll/types\";\n\nimport type { CustomTimerPickerStyles } from \"./styles\";\n\nexport interface TimerPickerRef {\n latestDuration: {\n days: RefObject<number> | undefined;\n hours: RefObject<number> | undefined;\n minutes: RefObject<number> | undefined;\n seconds: RefObject<number> | undefined;\n };\n reset: (options?: { animated?: boolean }) => void;\n setValue: (\n value: {\n days?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n },\n options?: { animated?: boolean }\n ) => void;\n}\n\nexport interface TimerPickerProps {\n /** @deprecated Use pickerFeedback prop instead. Will be removed in a future version. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Audio?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n FlatList?: any;\n /** @deprecated Use pickerFeedback prop instead. Will be removed in a future version. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Haptics?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LinearGradient?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MaskedView?: any;\n aggressivelyGetLatestDuration?: boolean;\n allowFontScaling?: boolean;\n amLabel?: string;\n /** @deprecated Use pickerFeedback prop instead. Will be removed in a future version. */\n clickSoundAsset?: SoundAsset;\n dayInterval?: number;\n dayLabel?: string | React.ReactElement;\n dayLimit?: Limit;\n daysPickerIsDisabled?: boolean;\n decelerationRate?: number | \"normal\" | \"fast\";\n disableInfiniteScroll?: boolean;\n hideDays?: boolean;\n hideHours?: boolean;\n hideMinutes?: boolean;\n hideSeconds?: boolean;\n hourInterval?: number;\n hourLabel?: string | React.ReactElement;\n hourLimit?: Limit;\n hoursPickerIsDisabled?: boolean;\n initialValue?: {\n days?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n };\n maximumDays?: number;\n maximumHours?: number;\n maximumMinutes?: number;\n maximumSeconds?: number;\n minuteInterval?: number;\n minuteLabel?: string | React.ReactElement;\n minuteLimit?: Limit;\n minutesPickerIsDisabled?: boolean;\n onDurationChange?: (duration: {\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n }) => void;\n padDaysWithZero?: boolean;\n padHoursWithZero?: boolean;\n padMinutesWithZero?: boolean;\n padSecondsWithZero?: boolean;\n padWithNItems?: number;\n pickerContainerProps?: React.ComponentProps<typeof View>;\n pickerFeedback?: () => void | Promise<void>;\n pickerGradientOverlayProps?: Partial<LinearGradientProps>;\n pmLabel?: string;\n repeatDayNumbersNTimes?: number;\n repeatHourNumbersNTimes?: number;\n repeatMinuteNumbersNTimes?: number;\n repeatSecondNumbersNTimes?: number;\n secondInterval?: number;\n secondLabel?: string | React.ReactElement;\n secondLimit?: Limit;\n secondsPickerIsDisabled?: boolean;\n styles?: CustomTimerPickerStyles;\n use12HourPicker?: boolean;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -65,5 +65,99 @@ describe("DurationScroll", () => {
|
|
|
65
65
|
const label = getByText("Duration");
|
|
66
66
|
expect(label).toBeDefined();
|
|
67
67
|
});
|
|
68
|
+
it("does not render label when not provided", () => {
|
|
69
|
+
const {
|
|
70
|
+
queryByTestId
|
|
71
|
+
} = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_DurationScroll.default, {
|
|
72
|
+
aggressivelyGetLatestDuration: false,
|
|
73
|
+
interval: 1,
|
|
74
|
+
maximumValue: 59,
|
|
75
|
+
onDurationChange: onDurationChangeMock,
|
|
76
|
+
padWithNItems: 1,
|
|
77
|
+
repeatNumbersNTimesNotExplicitlySet: true,
|
|
78
|
+
styles: emptyStyles
|
|
79
|
+
}));
|
|
80
|
+
const label = queryByTestId("picker-label");
|
|
81
|
+
expect(label).toBeNull();
|
|
82
|
+
});
|
|
83
|
+
it("handles different intervals", () => {
|
|
84
|
+
const {
|
|
85
|
+
getAllByTestId
|
|
86
|
+
} = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_DurationScroll.default, {
|
|
87
|
+
aggressivelyGetLatestDuration: false,
|
|
88
|
+
interval: 5,
|
|
89
|
+
maximumValue: 55,
|
|
90
|
+
onDurationChange: onDurationChangeMock,
|
|
91
|
+
padWithNItems: 1,
|
|
92
|
+
repeatNumbersNTimesNotExplicitlySet: true,
|
|
93
|
+
styles: emptyStyles
|
|
94
|
+
}));
|
|
95
|
+
const items = getAllByTestId("picker-item");
|
|
96
|
+
expect(items).toBeDefined();
|
|
97
|
+
});
|
|
98
|
+
it("renders with zero padWithNItems", () => {
|
|
99
|
+
const {
|
|
100
|
+
getByTestId
|
|
101
|
+
} = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_DurationScroll.default, {
|
|
102
|
+
aggressivelyGetLatestDuration: false,
|
|
103
|
+
interval: 1,
|
|
104
|
+
maximumValue: 59,
|
|
105
|
+
onDurationChange: onDurationChangeMock,
|
|
106
|
+
padWithNItems: 0,
|
|
107
|
+
repeatNumbersNTimesNotExplicitlySet: true,
|
|
108
|
+
styles: emptyStyles,
|
|
109
|
+
testID: "duration-scroll"
|
|
110
|
+
}));
|
|
111
|
+
const component = getByTestId("duration-scroll");
|
|
112
|
+
expect(component).toBeDefined();
|
|
113
|
+
});
|
|
114
|
+
it("handles large maximumValue", () => {
|
|
115
|
+
const {
|
|
116
|
+
getByTestId
|
|
117
|
+
} = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_DurationScroll.default, {
|
|
118
|
+
aggressivelyGetLatestDuration: false,
|
|
119
|
+
interval: 1,
|
|
120
|
+
maximumValue: 999,
|
|
121
|
+
onDurationChange: onDurationChangeMock,
|
|
122
|
+
padWithNItems: 1,
|
|
123
|
+
repeatNumbersNTimesNotExplicitlySet: true,
|
|
124
|
+
styles: emptyStyles,
|
|
125
|
+
testID: "duration-scroll"
|
|
126
|
+
}));
|
|
127
|
+
const component = getByTestId("duration-scroll");
|
|
128
|
+
expect(component).toBeDefined();
|
|
129
|
+
});
|
|
130
|
+
it("handles aggressivelyGetLatestDuration set to true", () => {
|
|
131
|
+
const {
|
|
132
|
+
getByTestId
|
|
133
|
+
} = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_DurationScroll.default, {
|
|
134
|
+
aggressivelyGetLatestDuration: true,
|
|
135
|
+
interval: 1,
|
|
136
|
+
maximumValue: 59,
|
|
137
|
+
onDurationChange: onDurationChangeMock,
|
|
138
|
+
padWithNItems: 1,
|
|
139
|
+
repeatNumbersNTimesNotExplicitlySet: true,
|
|
140
|
+
styles: emptyStyles,
|
|
141
|
+
testID: "duration-scroll"
|
|
142
|
+
}));
|
|
143
|
+
const component = getByTestId("duration-scroll");
|
|
144
|
+
expect(component).toBeDefined();
|
|
145
|
+
});
|
|
146
|
+
it("handles repeatNumbersNTimesNotExplicitlySet set to false", () => {
|
|
147
|
+
const {
|
|
148
|
+
getByTestId
|
|
149
|
+
} = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_DurationScroll.default, {
|
|
150
|
+
aggressivelyGetLatestDuration: false,
|
|
151
|
+
interval: 1,
|
|
152
|
+
maximumValue: 59,
|
|
153
|
+
onDurationChange: onDurationChangeMock,
|
|
154
|
+
padWithNItems: 1,
|
|
155
|
+
repeatNumbersNTimesNotExplicitlySet: false,
|
|
156
|
+
styles: emptyStyles,
|
|
157
|
+
testID: "duration-scroll"
|
|
158
|
+
}));
|
|
159
|
+
const component = getByTestId("duration-scroll");
|
|
160
|
+
expect(component).toBeDefined();
|
|
161
|
+
});
|
|
68
162
|
});
|
|
69
163
|
//# sourceMappingURL=DurationScroll.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_DurationScroll","e","__esModule","default","describe","onDurationChangeMock","jest","fn","emptyStyles","pickerContainer","pickerLabelContainer","pickerLabel","pickerItemContainer","pickerItem","pickerAmPmContainer","pickerAmPmLabel","disabledPickerContainer","disabledPickerItem","pickerGradientOverlay","it","getByTestId","render","createElement","aggressivelyGetLatestDuration","interval","maximumValue","onDurationChange","padWithNItems","repeatNumbersNTimesNotExplicitlySet","styles","testID","component","expect","toBeDefined","getAllByTestId","items","toHaveLength","getByText","label"],"sources":["DurationScroll.test.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { render } from \"@testing-library/react-native\";\n\nimport DurationScroll from \"../components/DurationScroll\";\nimport type { generateStyles } from \"../components/TimerPicker/styles\";\n\ndescribe(\"DurationScroll\", () => {\n const onDurationChangeMock = jest.fn();\n const emptyStyles = {\n pickerContainer: {},\n pickerLabelContainer: {},\n pickerLabel: {},\n pickerItemContainer: {},\n pickerItem: {},\n pickerAmPmContainer: {},\n pickerAmPmLabel: {},\n disabledPickerContainer: {},\n disabledPickerItem: {},\n pickerGradientOverlay: {},\n } as ReturnType<typeof generateStyles>;\n\n it(\"renders without crashing\", () => {\n const { getByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={1}\n onDurationChange={onDurationChangeMock}\n padWithNItems={0}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n testID=\"duration-scroll\"\n />\n );\n const component = getByTestId(\"duration-scroll\");\n expect(component).toBeDefined();\n });\n\n it(\"renders the correct number of items\", () => {\n const { getAllByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={23}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n />\n );\n const items = getAllByTestId(\"picker-item\");\n expect(items).toHaveLength(10);\n });\n\n it(\"renders the label if provided\", () => {\n const { getByText } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n label=\"Duration\"\n maximumValue={59}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n />\n );\n const label = getByText(\"Duration\");\n expect(label).toBeDefined();\n });\n});\n"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,eAAA,GAAAH,sBAAA,CAAAC,OAAA;AAA0D,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAG1DG,QAAQ,CAAC,gBAAgB,EAAE,MAAM;EAC7B,MAAMC,oBAAoB,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;EACtC,MAAMC,WAAW,GAAG;IAChBC,eAAe,EAAE,CAAC,CAAC;IACnBC,oBAAoB,EAAE,CAAC,CAAC;IACxBC,WAAW,EAAE,CAAC,CAAC;IACfC,mBAAmB,EAAE,CAAC,CAAC;IACvBC,UAAU,EAAE,CAAC,CAAC;IACdC,mBAAmB,EAAE,CAAC,CAAC;IACvBC,eAAe,EAAE,CAAC,CAAC;IACnBC,uBAAuB,EAAE,CAAC,CAAC;IAC3BC,kBAAkB,EAAE,CAAC,CAAC;IACtBC,qBAAqB,EAAE,CAAC;EAC5B,CAAsC;EAEtCC,EAAE,CAAC,0BAA0B,EAAE,MAAM;IACjC,MAAM;MAAEC;IAAY,CAAC,GAAG,IAAAC,mBAAM,eAC1BzB,MAAA,CAAAO,OAAA,CAAAmB,aAAA,CAACtB,eAAA,CAAAG,OAAc;MACXoB,6BAA6B,EAAE,KAAM;MACrCC,QAAQ,EAAE,CAAE;MACZC,YAAY,EAAE,CAAE;MAChBC,gBAAgB,EAAErB,oBAAqB;MACvCsB,aAAa,EAAE,CAAE;MACjBC,mCAAmC,EAAE,IAAK;MAC1CC,MAAM,EAAErB,WAAY;MACpBsB,MAAM,EAAC;IAAiB,CAC3B,CACL,CAAC;IACD,MAAMC,SAAS,GAAGX,WAAW,CAAC,iBAAiB,CAAC;IAChDY,MAAM,CAACD,SAAS,CAAC,CAACE,WAAW,CAAC,CAAC;EACnC,CAAC,CAAC;EAEFd,EAAE,CAAC,qCAAqC,EAAE,MAAM;IAC5C,MAAM;MAAEe;IAAe,CAAC,GAAG,IAAAb,mBAAM,eAC7BzB,MAAA,CAAAO,OAAA,CAAAmB,aAAA,CAACtB,eAAA,CAAAG,OAAc;MACXoB,6BAA6B,EAAE,KAAM;MACrCC,QAAQ,EAAE,CAAE;MACZC,YAAY,EAAE,EAAG;MACjBC,gBAAgB,EAAErB,oBAAqB;MACvCsB,aAAa,EAAE,CAAE;MACjBC,mCAAmC,EAAE,IAAK;MAC1CC,MAAM,EAAErB;IAAY,CACvB,CACL,CAAC;IACD,MAAM2B,KAAK,GAAGD,cAAc,CAAC,aAAa,CAAC;IAC3CF,MAAM,CAACG,KAAK,CAAC,CAACC,YAAY,CAAC,EAAE,CAAC;EAClC,CAAC,CAAC;EAEFjB,EAAE,CAAC,+BAA+B,EAAE,MAAM;IACtC,MAAM;MAAEkB;IAAU,CAAC,GAAG,IAAAhB,mBAAM,eACxBzB,MAAA,CAAAO,OAAA,CAAAmB,aAAA,CAACtB,eAAA,CAAAG,OAAc;MACXoB,6BAA6B,EAAE,KAAM;MACrCC,QAAQ,EAAE,CAAE;MACZc,KAAK,EAAC,UAAU;MAChBb,YAAY,EAAE,EAAG;MACjBC,gBAAgB,EAAErB,oBAAqB;MACvCsB,aAAa,EAAE,CAAE;MACjBC,mCAAmC,EAAE,IAAK;MAC1CC,MAAM,EAAErB;IAAY,CACvB,CACL,CAAC;IACD,MAAM8B,KAAK,GAAGD,SAAS,CAAC,UAAU,CAAC;IACnCL,MAAM,CAACM,KAAK,CAAC,CAACL,WAAW,CAAC,CAAC;EAC/B,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_DurationScroll","e","__esModule","default","describe","onDurationChangeMock","jest","fn","emptyStyles","pickerContainer","pickerLabelContainer","pickerLabel","pickerItemContainer","pickerItem","pickerAmPmContainer","pickerAmPmLabel","disabledPickerContainer","disabledPickerItem","pickerGradientOverlay","it","getByTestId","render","createElement","aggressivelyGetLatestDuration","interval","maximumValue","onDurationChange","padWithNItems","repeatNumbersNTimesNotExplicitlySet","styles","testID","component","expect","toBeDefined","getAllByTestId","items","toHaveLength","getByText","label","queryByTestId","toBeNull"],"sources":["DurationScroll.test.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { render } from \"@testing-library/react-native\";\n\nimport DurationScroll from \"../components/DurationScroll\";\nimport type { generateStyles } from \"../components/TimerPicker/styles\";\n\ndescribe(\"DurationScroll\", () => {\n const onDurationChangeMock = jest.fn();\n const emptyStyles = {\n pickerContainer: {},\n pickerLabelContainer: {},\n pickerLabel: {},\n pickerItemContainer: {},\n pickerItem: {},\n pickerAmPmContainer: {},\n pickerAmPmLabel: {},\n disabledPickerContainer: {},\n disabledPickerItem: {},\n pickerGradientOverlay: {},\n } as ReturnType<typeof generateStyles>;\n\n it(\"renders without crashing\", () => {\n const { getByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={1}\n onDurationChange={onDurationChangeMock}\n padWithNItems={0}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n testID=\"duration-scroll\"\n />\n );\n const component = getByTestId(\"duration-scroll\");\n expect(component).toBeDefined();\n });\n\n it(\"renders the correct number of items\", () => {\n const { getAllByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={23}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n />\n );\n const items = getAllByTestId(\"picker-item\");\n expect(items).toHaveLength(10);\n });\n\n it(\"renders the label if provided\", () => {\n const { getByText } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n label=\"Duration\"\n maximumValue={59}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n />\n );\n const label = getByText(\"Duration\");\n expect(label).toBeDefined();\n });\n\n it(\"does not render label when not provided\", () => {\n const { queryByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={59}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n />\n );\n const label = queryByTestId(\"picker-label\");\n expect(label).toBeNull();\n });\n\n it(\"handles different intervals\", () => {\n const { getAllByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={5}\n maximumValue={55}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n />\n );\n const items = getAllByTestId(\"picker-item\");\n expect(items).toBeDefined();\n });\n\n it(\"renders with zero padWithNItems\", () => {\n const { getByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={59}\n onDurationChange={onDurationChangeMock}\n padWithNItems={0}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n testID=\"duration-scroll\"\n />\n );\n const component = getByTestId(\"duration-scroll\");\n expect(component).toBeDefined();\n });\n\n it(\"handles large maximumValue\", () => {\n const { getByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={999}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n testID=\"duration-scroll\"\n />\n );\n const component = getByTestId(\"duration-scroll\");\n expect(component).toBeDefined();\n });\n\n it(\"handles aggressivelyGetLatestDuration set to true\", () => {\n const { getByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={true}\n interval={1}\n maximumValue={59}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n testID=\"duration-scroll\"\n />\n );\n const component = getByTestId(\"duration-scroll\");\n expect(component).toBeDefined();\n });\n\n it(\"handles repeatNumbersNTimesNotExplicitlySet set to false\", () => {\n const { getByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={59}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={false}\n styles={emptyStyles}\n testID=\"duration-scroll\"\n />\n );\n const component = getByTestId(\"duration-scroll\");\n expect(component).toBeDefined();\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,6 +6,14 @@ var _reactNative2 = require("react-native");
|
|
|
6
6
|
var _Modal = _interopRequireDefault(require("../components/Modal"));
|
|
7
7
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
8
|
describe("Modal", () => {
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
jest.useFakeTimers();
|
|
11
|
+
});
|
|
12
|
+
afterEach(() => {
|
|
13
|
+
jest.runOnlyPendingTimers();
|
|
14
|
+
jest.useRealTimers();
|
|
15
|
+
(0, _reactNative.cleanup)();
|
|
16
|
+
});
|
|
9
17
|
it("renders without crashing", () => {
|
|
10
18
|
const {
|
|
11
19
|
getByTestId
|
|
@@ -36,7 +44,76 @@ describe("Modal", () => {
|
|
|
36
44
|
_reactNative.fireEvent.press(overlay);
|
|
37
45
|
expect(onOverlayPressMock).toHaveBeenCalled();
|
|
38
46
|
});
|
|
39
|
-
|
|
40
|
-
|
|
47
|
+
it("renders but is not visible when isVisible is false", () => {
|
|
48
|
+
const {
|
|
49
|
+
getByTestId
|
|
50
|
+
} = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_Modal.default, {
|
|
51
|
+
isVisible: false
|
|
52
|
+
}));
|
|
53
|
+
const modal = getByTestId("modal");
|
|
54
|
+
expect(modal).toBeDefined();
|
|
55
|
+
expect(modal.props.visible).toBe(false);
|
|
56
|
+
});
|
|
57
|
+
it("does not call onOverlayPress when onOverlayPress is not provided", () => {
|
|
58
|
+
const {
|
|
59
|
+
getByTestId
|
|
60
|
+
} = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_Modal.default, {
|
|
61
|
+
isVisible: true
|
|
62
|
+
}));
|
|
63
|
+
const overlay = getByTestId("modal-backdrop");
|
|
64
|
+
expect(() => _reactNative.fireEvent.press(overlay)).not.toThrow();
|
|
65
|
+
});
|
|
66
|
+
it("renders multiple children", () => {
|
|
67
|
+
const {
|
|
68
|
+
getByText
|
|
69
|
+
} = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_Modal.default, {
|
|
70
|
+
isVisible: true
|
|
71
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative2.Text, null, "First Child"), /*#__PURE__*/_react.default.createElement(_reactNative2.Text, null, "Second Child")));
|
|
72
|
+
const firstChild = getByText("First Child");
|
|
73
|
+
const secondChild = getByText("Second Child");
|
|
74
|
+
expect(firstChild).toBeDefined();
|
|
75
|
+
expect(secondChild).toBeDefined();
|
|
76
|
+
});
|
|
77
|
+
it("handles rapid visibility changes", () => {
|
|
78
|
+
const {
|
|
79
|
+
rerender,
|
|
80
|
+
getByTestId
|
|
81
|
+
} = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_Modal.default, {
|
|
82
|
+
isVisible: true
|
|
83
|
+
}));
|
|
84
|
+
expect(getByTestId("modal")).toBeDefined();
|
|
85
|
+
expect(getByTestId("modal").props.visible).toBe(true);
|
|
86
|
+
rerender(/*#__PURE__*/_react.default.createElement(_Modal.default, {
|
|
87
|
+
isVisible: false
|
|
88
|
+
}));
|
|
89
|
+
expect(getByTestId("modal")).toBeDefined();
|
|
90
|
+
expect(getByTestId("modal").props.visible).toBe(false);
|
|
91
|
+
rerender(/*#__PURE__*/_react.default.createElement(_Modal.default, {
|
|
92
|
+
isVisible: true
|
|
93
|
+
}));
|
|
94
|
+
expect(getByTestId("modal")).toBeDefined();
|
|
95
|
+
expect(getByTestId("modal").props.visible).toBe(true);
|
|
96
|
+
});
|
|
97
|
+
it("calls onOverlayPress exactly once per press", () => {
|
|
98
|
+
const onOverlayPressMock = jest.fn();
|
|
99
|
+
const {
|
|
100
|
+
getByTestId
|
|
101
|
+
} = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_Modal.default, {
|
|
102
|
+
isVisible: true,
|
|
103
|
+
onOverlayPress: onOverlayPressMock
|
|
104
|
+
}));
|
|
105
|
+
const overlay = getByTestId("modal-backdrop");
|
|
106
|
+
_reactNative.fireEvent.press(overlay);
|
|
107
|
+
expect(onOverlayPressMock).toHaveBeenCalledTimes(1);
|
|
108
|
+
});
|
|
109
|
+
it("renders children with complex structure", () => {
|
|
110
|
+
const {
|
|
111
|
+
getByText
|
|
112
|
+
} = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_Modal.default, {
|
|
113
|
+
isVisible: true
|
|
114
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative2.Text, null, "Parent"), /*#__PURE__*/_react.default.createElement(_reactNative2.Text, null, "Child")));
|
|
115
|
+
expect(getByText("Parent")).toBeDefined();
|
|
116
|
+
expect(getByText("Child")).toBeDefined();
|
|
117
|
+
});
|
|
41
118
|
});
|
|
42
119
|
//# sourceMappingURL=Modal.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNative2","_Modal","e","__esModule","default","describe","it","getByTestId","render","createElement","isVisible","component","expect","toBeDefined","getByText","Text","content","onOverlayPressMock","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNative2","_Modal","e","__esModule","default","describe","beforeEach","jest","useFakeTimers","afterEach","runOnlyPendingTimers","useRealTimers","cleanup","it","getByTestId","render","createElement","isVisible","component","expect","toBeDefined","getByText","Text","content","onOverlayPressMock","fn","onOverlayPress","overlay","fireEvent","press","toHaveBeenCalled","modal","props","visible","toBe","not","toThrow","firstChild","secondChild","rerender","toHaveBeenCalledTimes"],"sources":["Modal.test.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { render, fireEvent, cleanup } from \"@testing-library/react-native\";\nimport { Text } from \"react-native\";\n\nimport Modal from \"../components/Modal\";\n\ndescribe(\"Modal\", () => {\n beforeEach(() => {\n jest.useFakeTimers();\n });\n\n afterEach(() => {\n jest.runOnlyPendingTimers();\n jest.useRealTimers();\n cleanup();\n });\n\n it(\"renders without crashing\", () => {\n const { getByTestId } = render(<Modal isVisible/>);\n const component = getByTestId(\"modal\");\n expect(component).toBeDefined();\n });\n\n it(\"renders children when visible\", () => {\n const { getByText } = render(\n <Modal isVisible>\n <Text>{\"Modal Content\"}</Text>\n </Modal>\n );\n const content = getByText(\"Modal Content\");\n expect(content).toBeDefined();\n });\n\n it(\"calls onOverlayPress when overlay is pressed\", () => {\n const onOverlayPressMock = jest.fn();\n const { getByTestId } = render(\n <Modal isVisible onOverlayPress={onOverlayPressMock} />\n );\n const overlay = getByTestId(\"modal-backdrop\");\n fireEvent.press(overlay);\n expect(onOverlayPressMock).toHaveBeenCalled();\n });\n\n it(\"renders but is not visible when isVisible is false\", () => {\n const { getByTestId } = render(<Modal isVisible={false} />);\n const modal = getByTestId(\"modal\");\n expect(modal).toBeDefined();\n expect(modal.props.visible).toBe(false);\n });\n\n it(\"does not call onOverlayPress when onOverlayPress is not provided\", () => {\n const { getByTestId } = render(<Modal isVisible />);\n const overlay = getByTestId(\"modal-backdrop\");\n expect(() => fireEvent.press(overlay)).not.toThrow();\n });\n\n it(\"renders multiple children\", () => {\n const { getByText } = render(\n <Modal isVisible>\n <Text>{\"First Child\"}</Text>\n <Text>{\"Second Child\"}</Text>\n </Modal>\n );\n const firstChild = getByText(\"First Child\");\n const secondChild = getByText(\"Second Child\");\n expect(firstChild).toBeDefined();\n expect(secondChild).toBeDefined();\n });\n\n it(\"handles rapid visibility changes\", () => {\n const { rerender, getByTestId } = render(\n <Modal isVisible={true} />\n );\n expect(getByTestId(\"modal\")).toBeDefined();\n expect(getByTestId(\"modal\").props.visible).toBe(true);\n\n rerender(<Modal isVisible={false} />);\n expect(getByTestId(\"modal\")).toBeDefined();\n expect(getByTestId(\"modal\").props.visible).toBe(false);\n\n rerender(<Modal isVisible={true} />);\n expect(getByTestId(\"modal\")).toBeDefined();\n expect(getByTestId(\"modal\").props.visible).toBe(true);\n });\n\n it(\"calls onOverlayPress exactly once per press\", () => {\n const onOverlayPressMock = jest.fn();\n const { getByTestId } = render(\n <Modal isVisible onOverlayPress={onOverlayPressMock} />\n );\n const overlay = getByTestId(\"modal-backdrop\");\n fireEvent.press(overlay);\n expect(onOverlayPressMock).toHaveBeenCalledTimes(1);\n });\n\n it(\"renders children with complex structure\", () => {\n const { getByText } = render(\n <Modal isVisible>\n <Text>{\"Parent\"}</Text>\n <Text>{\"Child\"}</Text>\n </Modal>\n );\n expect(getByText(\"Parent\")).toBeDefined();\n expect(getByText(\"Child\")).toBeDefined();\n });\n});\n"],"mappings":"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","ignoreList":[]}
|