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
@@ -4,6 +4,15 @@ import { View } from "react-native";
4
4
  import { getSafeInitialValue } from "../../utils/getSafeInitialValue";
5
5
  import DurationScroll from "../DurationScroll";
6
6
  import { generateStyles } from "./styles";
7
+ const resolvePerColumn = (value, column) => {
8
+ if (value == null) {
9
+ return undefined;
10
+ }
11
+ if (typeof value === "number") {
12
+ return value;
13
+ }
14
+ return value[column];
15
+ };
7
16
  const TimerPicker = /*#__PURE__*/forwardRef((props, ref) => {
8
17
  const {
9
18
  aggressivelyGetLatestDuration = false,
@@ -62,7 +71,14 @@ const TimerPicker = /*#__PURE__*/forwardRef((props, ref) => {
62
71
  if (otherProps.clickSoundAsset) {
63
72
  console.warn('The "clickSoundAsset" prop is deprecated and will be removed in a future version. Please use the "pickerFeedback" prop instead.');
64
73
  }
65
- }, [otherProps.Audio, otherProps.Haptics, otherProps.clickSoundAsset]);
74
+ if ((customStyles === null || customStyles === void 0 ? void 0 : customStyles.labelOffsetPercentage) != null) {
75
+ if ((customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerLabelGap) != null) {
76
+ console.warn("labelOffsetPercentage is ignored when pickerLabelGap is set. Please remove labelOffsetPercentage.");
77
+ } else {
78
+ console.warn('The "labelOffsetPercentage" style prop is deprecated and will be removed in a future version. Please use the "pickerLabelGap" style prop instead.');
79
+ }
80
+ }
81
+ }, [otherProps.Audio, otherProps.Haptics, otherProps.clickSoundAsset, customStyles === null || customStyles === void 0 ? void 0 : customStyles.labelOffsetPercentage, customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerLabelGap]);
66
82
  const safePadWithNItems = useMemo(() => {
67
83
  if (padWithNItems < 0 || isNaN(padWithNItems)) {
68
84
  return 0;
@@ -79,6 +95,8 @@ const TimerPicker = /*#__PURE__*/forwardRef((props, ref) => {
79
95
  minutes: initialValue === null || initialValue === void 0 ? void 0 : initialValue.minutes,
80
96
  seconds: initialValue === null || initialValue === void 0 ? void 0 : initialValue.seconds
81
97
  }), [initialValue === null || initialValue === void 0 ? void 0 : initialValue.days, initialValue === null || initialValue === void 0 ? void 0 : initialValue.hours, initialValue === null || initialValue === void 0 ? void 0 : initialValue.minutes, initialValue === null || initialValue === void 0 ? void 0 : initialValue.seconds]);
98
+ const pickerLabelGap = customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerLabelGap;
99
+ const pickerColumnWidth = customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerColumnWidth;
82
100
  const styles = useMemo(() => generateStyles(customStyles), [customStyles]);
83
101
  const [selectedDays, setSelectedDays] = useState(safeInitialValue.days);
84
102
  const [selectedHours, setSelectedHours] = useState(safeInitialValue.hours);
@@ -98,46 +116,46 @@ const TimerPicker = /*#__PURE__*/forwardRef((props, ref) => {
98
116
  const minutesDurationScrollRef = useRef(null);
99
117
  const secondsDurationScrollRef = useRef(null);
100
118
  useImperativeHandle(ref, () => {
101
- var _daysDurationScrollRe3, _hoursDurationScrollR3, _minutesDurationScrol3, _secondsDurationScrol3;
119
+ var _daysDurationScrollRe, _hoursDurationScrollR, _minutesDurationScrol, _secondsDurationScrol;
102
120
  return {
121
+ latestDuration: {
122
+ days: (_daysDurationScrollRe = daysDurationScrollRef.current) === null || _daysDurationScrollRe === void 0 ? void 0 : _daysDurationScrollRe.latestDuration,
123
+ hours: (_hoursDurationScrollR = hoursDurationScrollRef.current) === null || _hoursDurationScrollR === void 0 ? void 0 : _hoursDurationScrollR.latestDuration,
124
+ minutes: (_minutesDurationScrol = minutesDurationScrollRef.current) === null || _minutesDurationScrol === void 0 ? void 0 : _minutesDurationScrol.latestDuration,
125
+ seconds: (_secondsDurationScrol = secondsDurationScrollRef.current) === null || _secondsDurationScrol === void 0 ? void 0 : _secondsDurationScrol.latestDuration
126
+ },
103
127
  reset: options => {
104
- var _daysDurationScrollRe, _hoursDurationScrollR, _minutesDurationScrol, _secondsDurationScrol;
128
+ var _daysDurationScrollRe2, _hoursDurationScrollR2, _minutesDurationScrol2, _secondsDurationScrol2;
105
129
  setSelectedDays(safeInitialValue.days);
106
130
  setSelectedHours(safeInitialValue.hours);
107
131
  setSelectedMinutes(safeInitialValue.minutes);
108
132
  setSelectedSeconds(safeInitialValue.seconds);
109
- (_daysDurationScrollRe = daysDurationScrollRef.current) === null || _daysDurationScrollRe === void 0 || _daysDurationScrollRe.reset(options);
110
- (_hoursDurationScrollR = hoursDurationScrollRef.current) === null || _hoursDurationScrollR === void 0 || _hoursDurationScrollR.reset(options);
111
- (_minutesDurationScrol = minutesDurationScrollRef.current) === null || _minutesDurationScrol === void 0 || _minutesDurationScrol.reset(options);
112
- (_secondsDurationScrol = secondsDurationScrollRef.current) === null || _secondsDurationScrol === void 0 || _secondsDurationScrol.reset(options);
133
+ (_daysDurationScrollRe2 = daysDurationScrollRef.current) === null || _daysDurationScrollRe2 === void 0 || _daysDurationScrollRe2.reset(options);
134
+ (_hoursDurationScrollR2 = hoursDurationScrollRef.current) === null || _hoursDurationScrollR2 === void 0 || _hoursDurationScrollR2.reset(options);
135
+ (_minutesDurationScrol2 = minutesDurationScrollRef.current) === null || _minutesDurationScrol2 === void 0 || _minutesDurationScrol2.reset(options);
136
+ (_secondsDurationScrol2 = secondsDurationScrollRef.current) === null || _secondsDurationScrol2 === void 0 || _secondsDurationScrol2.reset(options);
113
137
  },
114
138
  setValue: (value, options) => {
115
139
  if (value.days !== undefined) {
116
- var _daysDurationScrollRe2;
140
+ var _daysDurationScrollRe3;
117
141
  setSelectedDays(value.days);
118
- (_daysDurationScrollRe2 = daysDurationScrollRef.current) === null || _daysDurationScrollRe2 === void 0 || _daysDurationScrollRe2.setValue(value.days, options);
142
+ (_daysDurationScrollRe3 = daysDurationScrollRef.current) === null || _daysDurationScrollRe3 === void 0 || _daysDurationScrollRe3.setValue(value.days, options);
119
143
  }
120
144
  if (value.hours !== undefined) {
121
- var _hoursDurationScrollR2;
145
+ var _hoursDurationScrollR3;
122
146
  setSelectedHours(value.hours);
123
- (_hoursDurationScrollR2 = hoursDurationScrollRef.current) === null || _hoursDurationScrollR2 === void 0 || _hoursDurationScrollR2.setValue(value.hours, options);
147
+ (_hoursDurationScrollR3 = hoursDurationScrollRef.current) === null || _hoursDurationScrollR3 === void 0 || _hoursDurationScrollR3.setValue(value.hours, options);
124
148
  }
125
149
  if (value.minutes !== undefined) {
126
- var _minutesDurationScrol2;
150
+ var _minutesDurationScrol3;
127
151
  setSelectedMinutes(value.minutes);
128
- (_minutesDurationScrol2 = minutesDurationScrollRef.current) === null || _minutesDurationScrol2 === void 0 || _minutesDurationScrol2.setValue(value.minutes, options);
152
+ (_minutesDurationScrol3 = minutesDurationScrollRef.current) === null || _minutesDurationScrol3 === void 0 || _minutesDurationScrol3.setValue(value.minutes, options);
129
153
  }
130
154
  if (value.seconds !== undefined) {
131
- var _secondsDurationScrol2;
155
+ var _secondsDurationScrol3;
132
156
  setSelectedSeconds(value.seconds);
133
- (_secondsDurationScrol2 = secondsDurationScrollRef.current) === null || _secondsDurationScrol2 === void 0 || _secondsDurationScrol2.setValue(value.seconds, options);
157
+ (_secondsDurationScrol3 = secondsDurationScrollRef.current) === null || _secondsDurationScrol3 === void 0 || _secondsDurationScrol3.setValue(value.seconds, options);
134
158
  }
135
- },
136
- latestDuration: {
137
- days: (_daysDurationScrollRe3 = daysDurationScrollRef.current) === null || _daysDurationScrollRe3 === void 0 ? void 0 : _daysDurationScrollRe3.latestDuration,
138
- hours: (_hoursDurationScrollR3 = hoursDurationScrollRef.current) === null || _hoursDurationScrollR3 === void 0 ? void 0 : _hoursDurationScrollR3.latestDuration,
139
- minutes: (_minutesDurationScrol3 = minutesDurationScrollRef.current) === null || _minutesDurationScrol3 === void 0 ? void 0 : _minutesDurationScrol3.latestDuration,
140
- seconds: (_secondsDurationScrol3 = secondsDurationScrollRef.current) === null || _secondsDurationScrol3 === void 0 ? void 0 : _secondsDurationScrol3.latestDuration
141
159
  }
142
160
  };
143
161
  });
@@ -158,6 +176,8 @@ const TimerPicker = /*#__PURE__*/forwardRef((props, ref) => {
158
176
  onDurationChange: setSelectedDays,
159
177
  padNumbersWithZero: padDaysWithZero,
160
178
  padWithNItems: safePadWithNItems,
179
+ pickerColumnWidth: resolvePerColumn(pickerColumnWidth, "days"),
180
+ pickerLabelGap: resolvePerColumn(pickerLabelGap, "days"),
161
181
  repeatNumbersNTimes: repeatDayNumbersNTimes,
162
182
  repeatNumbersNTimesNotExplicitlySet: (props === null || props === void 0 ? void 0 : props.repeatDayNumbersNTimes) === undefined,
163
183
  selectedValue: selectedDays,
@@ -180,6 +200,8 @@ const TimerPicker = /*#__PURE__*/forwardRef((props, ref) => {
180
200
  onDurationChange: setSelectedHours,
181
201
  padNumbersWithZero: padHoursWithZero,
182
202
  padWithNItems: safePadWithNItems,
203
+ pickerColumnWidth: resolvePerColumn(pickerColumnWidth, "hours"),
204
+ pickerLabelGap: resolvePerColumn(pickerLabelGap, "hours"),
183
205
  pmLabel: pmLabel,
184
206
  repeatNumbersNTimes: repeatHourNumbersNTimes,
185
207
  repeatNumbersNTimesNotExplicitlySet: (props === null || props === void 0 ? void 0 : props.repeatHourNumbersNTimes) === undefined,
@@ -201,6 +223,8 @@ const TimerPicker = /*#__PURE__*/forwardRef((props, ref) => {
201
223
  onDurationChange: setSelectedMinutes,
202
224
  padNumbersWithZero: padMinutesWithZero,
203
225
  padWithNItems: safePadWithNItems,
226
+ pickerColumnWidth: resolvePerColumn(pickerColumnWidth, "minutes"),
227
+ pickerLabelGap: resolvePerColumn(pickerLabelGap, "minutes"),
204
228
  repeatNumbersNTimes: repeatMinuteNumbersNTimes,
205
229
  repeatNumbersNTimesNotExplicitlySet: (props === null || props === void 0 ? void 0 : props.repeatMinuteNumbersNTimes) === undefined,
206
230
  selectedValue: selectedMinutes,
@@ -221,6 +245,8 @@ const TimerPicker = /*#__PURE__*/forwardRef((props, ref) => {
221
245
  onDurationChange: setSelectedSeconds,
222
246
  padNumbersWithZero: padSecondsWithZero,
223
247
  padWithNItems: safePadWithNItems,
248
+ pickerColumnWidth: resolvePerColumn(pickerColumnWidth, "seconds"),
249
+ pickerLabelGap: resolvePerColumn(pickerLabelGap, "seconds"),
224
250
  repeatNumbersNTimes: repeatSecondNumbersNTimes,
225
251
  repeatNumbersNTimesNotExplicitlySet: (props === null || props === void 0 ? void 0 : props.repeatSecondNumbersNTimes) === undefined,
226
252
  selectedValue: selectedSeconds,
@@ -1 +1 @@
1
- {"version":3,"names":["React","forwardRef","useEffect","useImperativeHandle","useMemo","useRef","useState","View","getSafeInitialValue","DurationScroll","generateStyles","TimerPicker","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","Audio","console","warn","Haptics","clickSoundAsset","safePadWithNItems","isNaN","maxPadWithNItems","Math","round","safeInitialValue","days","hours","minutes","seconds","selectedDays","setSelectedDays","selectedHours","setSelectedHours","selectedMinutes","setSelectedMinutes","selectedSeconds","setSelectedSeconds","daysDurationScrollRef","hoursDurationScrollRef","minutesDurationScrollRef","secondsDurationScrollRef","_daysDurationScrollRe3","_hoursDurationScrollR3","_minutesDurationScrol3","_secondsDurationScrol3","reset","options","_daysDurationScrollRe","_hoursDurationScrollR","_minutesDurationScrol","_secondsDurationScrol","current","setValue","value","undefined","_daysDurationScrollRe2","_hoursDurationScrollR2","_minutesDurationScrol2","_secondsDurationScrol2","latestDuration","createElement","_extends","style","pickerContainer","testID","interval","isDisabled","label","limit","maximumValue","padNumbersWithZero","repeatNumbersNTimes","repeatNumbersNTimesNotExplicitlySet","selectedValue","is12HourPicker","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 !== undefined) {\n setSelectedDays(value.days);\n daysDurationScrollRef.current?.setValue(\n value.days,\n options\n );\n }\n if (value.hours !== undefined) {\n setSelectedHours(value.hours);\n hoursDurationScrollRef.current?.setValue(\n value.hours,\n options\n );\n }\n if (value.minutes !== undefined) {\n setSelectedMinutes(value.minutes);\n minutesDurationScrollRef.current?.setValue(\n value.minutes,\n options\n );\n }\n if (value.seconds !== undefined) {\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 selectedValue={selectedDays}\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 selectedValue={selectedHours}\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 selectedValue={selectedMinutes}\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 selectedValue={selectedSeconds}\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","forwardRef","useEffect","useImperativeHandle","useMemo","useRef","useState","View","getSafeInitialValue","DurationScroll","generateStyles","resolvePerColumn","value","column","undefined","TimerPicker","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","Audio","console","warn","Haptics","clickSoundAsset","labelOffsetPercentage","pickerLabelGap","safePadWithNItems","isNaN","maxPadWithNItems","Math","round","safeInitialValue","days","hours","minutes","seconds","pickerColumnWidth","selectedDays","setSelectedDays","selectedHours","setSelectedHours","selectedMinutes","setSelectedMinutes","selectedSeconds","setSelectedSeconds","daysDurationScrollRef","hoursDurationScrollRef","minutesDurationScrollRef","secondsDurationScrollRef","_daysDurationScrollRe","_hoursDurationScrollR","_minutesDurationScrol","_secondsDurationScrol","latestDuration","current","reset","options","_daysDurationScrollRe2","_hoursDurationScrollR2","_minutesDurationScrol2","_secondsDurationScrol2","setValue","_daysDurationScrollRe3","_hoursDurationScrollR3","_minutesDurationScrol3","_secondsDurationScrol3","createElement","_extends","style","pickerContainer","testID","interval","isDisabled","label","limit","maximumValue","padNumbersWithZero","repeatNumbersNTimes","repeatNumbersNTimesNotExplicitlySet","selectedValue","is12HourPicker","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\";\nimport { generateStyles } from \"./styles\";\nimport type { PerColumnValue, PickerColumn } from \"./styles\";\nimport type { TimerPickerProps, TimerPickerRef } from \"./types\";\n\nconst resolvePerColumn = (\n value: PerColumnValue | undefined,\n column: PickerColumn\n): number | undefined => {\n if (value == null) {\n return undefined;\n }\n\n if (typeof value === \"number\") {\n return value;\n }\n\n return value[column];\n};\n\nconst TimerPicker = forwardRef<TimerPickerRef, TimerPickerProps>((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 if (customStyles?.labelOffsetPercentage != null) {\n if (customStyles?.pickerLabelGap != null) {\n console.warn(\n \"labelOffsetPercentage is ignored when pickerLabelGap is set. Please remove labelOffsetPercentage.\"\n );\n } else {\n console.warn(\n 'The \"labelOffsetPercentage\" style prop is deprecated and will be removed in a future version. Please use the \"pickerLabelGap\" style prop instead.'\n );\n }\n }\n }, [\n otherProps.Audio,\n otherProps.Haptics,\n otherProps.clickSoundAsset,\n customStyles?.labelOffsetPercentage,\n customStyles?.pickerLabelGap,\n ]);\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 [initialValue?.days, initialValue?.hours, initialValue?.minutes, initialValue?.seconds]\n );\n\n const pickerLabelGap = customStyles?.pickerLabelGap;\n const pickerColumnWidth = customStyles?.pickerColumnWidth;\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(safeInitialValue.hours);\n const [selectedMinutes, setSelectedMinutes] = useState(safeInitialValue.minutes);\n const [selectedSeconds, setSelectedSeconds] = useState(safeInitialValue.seconds);\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 latestDuration: {\n days: daysDurationScrollRef.current?.latestDuration,\n hours: hoursDurationScrollRef.current?.latestDuration,\n minutes: minutesDurationScrollRef.current?.latestDuration,\n seconds: secondsDurationScrollRef.current?.latestDuration,\n },\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 !== undefined) {\n setSelectedDays(value.days);\n daysDurationScrollRef.current?.setValue(value.days, options);\n }\n if (value.hours !== undefined) {\n setSelectedHours(value.hours);\n hoursDurationScrollRef.current?.setValue(value.hours, options);\n }\n if (value.minutes !== undefined) {\n setSelectedMinutes(value.minutes);\n minutesDurationScrollRef.current?.setValue(value.minutes, options);\n }\n if (value.seconds !== undefined) {\n setSelectedSeconds(value.seconds);\n secondsDurationScrollRef.current?.setValue(value.seconds, options);\n }\n },\n }));\n\n return (\n <View {...pickerContainerProps} style={styles.pickerContainer} testID=\"timer-picker\">\n {!hideDays ? (\n <DurationScroll\n ref={daysDurationScrollRef}\n aggressivelyGetLatestDuration={aggressivelyGetLatestDuration}\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 pickerColumnWidth={resolvePerColumn(pickerColumnWidth, \"days\")}\n pickerLabelGap={resolvePerColumn(pickerLabelGap, \"days\")}\n repeatNumbersNTimes={repeatDayNumbersNTimes}\n repeatNumbersNTimesNotExplicitlySet={props?.repeatDayNumbersNTimes === undefined}\n selectedValue={selectedDays}\n styles={styles}\n testID=\"duration-scroll-day\"\n {...otherProps}\n />\n ) : null}\n {!hideHours ? (\n <DurationScroll\n ref={hoursDurationScrollRef}\n aggressivelyGetLatestDuration={aggressivelyGetLatestDuration}\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={hourLabel ?? (!use12HourPicker ? \"h\" : undefined)}\n limit={hourLimit}\n maximumValue={maximumHours}\n onDurationChange={setSelectedHours}\n padNumbersWithZero={padHoursWithZero}\n padWithNItems={safePadWithNItems}\n pickerColumnWidth={resolvePerColumn(pickerColumnWidth, \"hours\")}\n pickerLabelGap={resolvePerColumn(pickerLabelGap, \"hours\")}\n pmLabel={pmLabel}\n repeatNumbersNTimes={repeatHourNumbersNTimes}\n repeatNumbersNTimesNotExplicitlySet={props?.repeatHourNumbersNTimes === undefined}\n selectedValue={selectedHours}\n styles={styles}\n testID=\"duration-scroll-hour\"\n {...otherProps}\n />\n ) : null}\n {!hideMinutes ? (\n <DurationScroll\n ref={minutesDurationScrollRef}\n aggressivelyGetLatestDuration={aggressivelyGetLatestDuration}\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 pickerColumnWidth={resolvePerColumn(pickerColumnWidth, \"minutes\")}\n pickerLabelGap={resolvePerColumn(pickerLabelGap, \"minutes\")}\n repeatNumbersNTimes={repeatMinuteNumbersNTimes}\n repeatNumbersNTimesNotExplicitlySet={props?.repeatMinuteNumbersNTimes === undefined}\n selectedValue={selectedMinutes}\n styles={styles}\n testID=\"duration-scroll-minute\"\n {...otherProps}\n />\n ) : null}\n {!hideSeconds ? (\n <DurationScroll\n ref={secondsDurationScrollRef}\n aggressivelyGetLatestDuration={aggressivelyGetLatestDuration}\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 pickerColumnWidth={resolvePerColumn(pickerColumnWidth, \"seconds\")}\n pickerLabelGap={resolvePerColumn(pickerLabelGap, \"seconds\")}\n repeatNumbersNTimes={repeatSecondNumbersNTimes}\n repeatNumbersNTimesNotExplicitlySet={props?.repeatSecondNumbersNTimes === undefined}\n selectedValue={selectedSeconds}\n styles={styles}\n testID=\"duration-scroll-second\"\n {...otherProps}\n />\n ) : null}\n </View>\n );\n});\n\nexport default React.memo(TimerPicker);\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["default"],"sources":["index.ts"],"sourcesContent":["export { default } from \"./TimerPicker\";\n\nexport * from \"./types\";\n\nexport * from \"./styles\";\n\n"],"mappings":"AAAA,SAASA,OAAO,QAAQ,eAAe;AAEvC,cAAc,SAAS;AAEvB,cAAc,UAAU","ignoreList":[]}
1
+ {"version":3,"names":["default"],"sources":["index.ts"],"sourcesContent":["export { default } from \"./TimerPicker\";\n\nexport * from \"./types\";\n\nexport * from \"./styles\";\n"],"mappings":"AAAA,SAASA,OAAO,QAAQ,eAAe;AAEvC,cAAc,SAAS;AAEvB,cAAc,UAAU","ignoreList":[]}
@@ -16,107 +16,117 @@ export const generateStyles = customStyles => {
16
16
  const pickerLabelVerticalOffset = pickerItemFontSize - pickerLabelFontSize - 1;
17
17
  const pickerAmPmVerticalOffset = pickerItemFontSize - pickerAmPmFontSize - 1;
18
18
 
19
- // The label is absolutely positioned, so we need to offset it for it to appear
20
- // in the correct position. We offset it to the left of the container so that
21
- // the width of the label doesn't impact its position.
19
+ // Determine whether to use the legacy percentage-based label positioning.
20
+ // The new pixel-based system (pickerLabelGap) is the default.
21
+ // The old system is only used when labelOffsetPercentage is explicitly set
22
+ // without pickerLabelGap.
23
+ const useLegacyLabelPosition = (customStyles === null || customStyles === void 0 ? void 0 : customStyles.labelOffsetPercentage) != null && (customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerLabelGap) == null;
22
24
  const extraLabelOffsetPercentage = (customStyles === null || customStyles === void 0 ? void 0 : customStyles.labelOffsetPercentage) ?? 8;
23
25
  const baseLeftOffsetPercentage = 70;
24
26
  const labelOffsetPercentage = baseLeftOffsetPercentage + extraLabelOffsetPercentage;
25
27
  return StyleSheet.create({
26
- pickerContainer: {
27
- flexDirection: "row",
28
- backgroundColor,
29
- width: "100%",
30
- ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerContainer)
28
+ disabledPickerContainer: {
29
+ opacity: 0.4,
30
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.disabledPickerContainer)
31
31
  },
32
- pickerLabelContainer: {
33
- position: "absolute",
34
- top: 0,
35
- bottom: 0,
36
- left: `${labelOffsetPercentage}%`,
37
- justifyContent: "center",
38
- marginTop: pickerLabelVerticalOffset,
39
- ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerLabelContainer)
32
+ disabledPickerItem: {
33
+ opacity: 0.2,
34
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.disabledPickerItem)
40
35
  },
41
- pickerLabel: {
42
- fontSize: 18,
43
- fontWeight: "bold",
44
- color: textColor,
45
- ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.text),
46
- ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerLabel)
36
+ durationScrollFlatList: {
37
+ marginRight: "-25%",
38
+ // These paddings allow the inner am/pm label to
39
+ // spill out of the flatlist
40
+ paddingRight: "25%",
41
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.durationScrollFlatList)
47
42
  },
48
- pickerItemContainer: {
49
- flexDirection: "row",
50
- height: 50,
51
- justifyContent: "center",
52
- alignItems: "center",
53
- ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerItemContainer)
43
+ durationScrollFlatListContainer: {
44
+ flex: 1,
45
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.durationScrollFlatListContainer)
54
46
  },
55
- pickerItem: {
56
- textAlignVertical: "center",
57
- fontSize: 25,
58
- overflow: "visible",
59
- color: textColor,
60
- ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.text),
61
- ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerItem)
47
+ durationScrollFlatListContentContainer: {
48
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.durationScrollFlatListContentContainer)
62
49
  },
63
- selectedPickerItem: {
64
- textAlignVertical: "center",
65
- fontSize: 25,
66
- overflow: "visible",
67
- color: textColor,
68
- ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.text),
69
- ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerItem),
70
- ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.selectedPickerItem)
50
+ maskedView: {
51
+ flex: 1
71
52
  },
72
53
  pickerAmPmContainer: {
73
- position: "absolute",
74
- top: 0,
75
54
  bottom: 0,
76
- left: `${labelOffsetPercentage}%`,
77
55
  justifyContent: "center",
78
56
  marginTop: pickerAmPmVerticalOffset,
57
+ position: "absolute",
58
+ top: 0,
59
+ // Only apply percentage-based left when using legacy positioning.
60
+ // The new pixel-based positioning is applied per-column in PickerItem.
61
+ ...(useLegacyLabelPosition ? {
62
+ left: `${labelOffsetPercentage}%`
63
+ } : undefined),
79
64
  ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerLabelContainer),
80
65
  ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerAmPmContainer)
81
66
  },
82
67
  pickerAmPmLabel: {
68
+ color: textColor,
83
69
  fontSize: 18,
84
70
  fontWeight: "bold",
85
- color: textColor,
86
71
  ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.text),
87
72
  ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerLabel),
88
73
  ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerAmPmLabel)
89
74
  },
90
- disabledPickerContainer: {
91
- opacity: 0.4,
92
- ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.disabledPickerContainer)
93
- },
94
- disabledPickerItem: {
95
- opacity: 0.2,
96
- ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.disabledPickerItem)
97
- },
98
- maskedView: {
99
- flex: 1
75
+ pickerContainer: {
76
+ backgroundColor,
77
+ flexDirection: "row",
78
+ width: "100%",
79
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerContainer)
100
80
  },
101
81
  pickerGradientOverlay: {
82
+ height: "100%",
102
83
  position: "absolute",
103
84
  width: "100%",
104
- height: "100%",
105
85
  ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerGradientOverlay)
106
86
  },
107
- durationScrollFlatListContainer: {
108
- flex: 1,
109
- ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.durationScrollFlatListContainer)
87
+ pickerItem: {
88
+ color: textColor,
89
+ fontSize: 25,
90
+ overflow: "visible",
91
+ textAlignVertical: "center",
92
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.text),
93
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerItem)
110
94
  },
111
- durationScrollFlatList: {
112
- // These paddings allow the inner am/pm label to
113
- // spill out of the flatlist
114
- paddingRight: "25%",
115
- marginRight: "-25%",
116
- ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.durationScrollFlatList)
95
+ pickerItemContainer: {
96
+ alignItems: "center",
97
+ flexDirection: "row",
98
+ height: 50,
99
+ justifyContent: "center",
100
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerItemContainer)
117
101
  },
118
- durationScrollFlatListContentContainer: {
119
- ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.durationScrollFlatListContentContainer)
102
+ pickerLabel: {
103
+ color: textColor,
104
+ fontSize: 18,
105
+ fontWeight: "bold",
106
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.text),
107
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerLabel)
108
+ },
109
+ pickerLabelContainer: {
110
+ bottom: 0,
111
+ justifyContent: "center",
112
+ marginTop: pickerLabelVerticalOffset,
113
+ position: "absolute",
114
+ top: 0,
115
+ // Only apply percentage-based left when using legacy positioning.
116
+ // The new pixel-based positioning is applied per-column in DurationScroll.
117
+ ...(useLegacyLabelPosition ? {
118
+ left: `${labelOffsetPercentage}%`
119
+ } : undefined),
120
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerLabelContainer)
121
+ },
122
+ selectedPickerItem: {
123
+ color: textColor,
124
+ fontSize: 25,
125
+ overflow: "visible",
126
+ textAlignVertical: "center",
127
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.text),
128
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerItem),
129
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.selectedPickerItem)
120
130
  }
121
131
  });
122
132
  };
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSheet","DARK_MODE_BACKGROUND_COLOR","DARK_MODE_TEXT_COLOR","LIGHT_MODE_BACKGROUND_COLOR","LIGHT_MODE_TEXT_COLOR","generateStyles","customStyles","_customStyles$pickerL","_customStyles$text","_customStyles$pickerA","_customStyles$pickerL2","_customStyles$text2","_customStyles$pickerI","_customStyles$text3","backgroundColor","theme","textColor","pickerLabelFontSize","pickerLabel","fontSize","text","pickerAmPmFontSize","pickerAmPmLabel","pickerItemFontSize","pickerItem","pickerLabelVerticalOffset","pickerAmPmVerticalOffset","extraLabelOffsetPercentage","labelOffsetPercentage","baseLeftOffsetPercentage","create","pickerContainer","flexDirection","width","pickerLabelContainer","position","top","bottom","left","justifyContent","marginTop","fontWeight","color","pickerItemContainer","height","alignItems","textAlignVertical","overflow","selectedPickerItem","pickerAmPmContainer","disabledPickerContainer","opacity","disabledPickerItem","maskedView","flex","pickerGradientOverlay","durationScrollFlatListContainer","durationScrollFlatList","paddingRight","marginRight","durationScrollFlatListContentContainer"],"sources":["styles.ts"],"sourcesContent":["\nimport { StyleSheet } from \"react-native\";\nimport type { TextStyle, ViewStyle } from \"react-native\";\n\nexport interface CustomTimerPickerStyles {\n backgroundColor?: string;\n disabledPickerContainer?: ViewStyle;\n disabledPickerItem?: TextStyle;\n durationScrollFlatList?: ViewStyle;\n durationScrollFlatListContainer?: ViewStyle;\n durationScrollFlatListContentContainer?: ViewStyle;\n labelOffsetPercentage?: number;\n pickerAmPmContainer?: ViewStyle;\n pickerAmPmLabel?: TextStyle;\n pickerContainer?: ViewStyle & { backgroundColor?: string };\n pickerGradientOverlay?: ViewStyle;\n pickerItem?: TextStyle;\n pickerItemContainer?: ViewStyle & { height?: number };\n pickerLabel?: TextStyle;\n pickerLabelContainer?: ViewStyle;\n selectedPickerItem?: TextStyle;\n text?: TextStyle;\n theme?: \"light\" | \"dark\";\n}\n\nconst DARK_MODE_BACKGROUND_COLOR = \"#232323\";\nconst DARK_MODE_TEXT_COLOR = \"#E9E9E9\";\nconst LIGHT_MODE_BACKGROUND_COLOR = \"#F1F1F1\";\nconst LIGHT_MODE_TEXT_COLOR = \"#1B1B1B\";\n\nexport const generateStyles = (\n customStyles: CustomTimerPickerStyles | undefined\n) => {\n const backgroundColor =\n customStyles?.backgroundColor ??\n (customStyles?.theme === \"dark\"\n ? DARK_MODE_BACKGROUND_COLOR\n : LIGHT_MODE_BACKGROUND_COLOR);\n\n const textColor =\n customStyles?.theme === \"dark\"\n ? DARK_MODE_TEXT_COLOR\n : LIGHT_MODE_TEXT_COLOR;\n\n const pickerLabelFontSize =\n customStyles?.pickerLabel?.fontSize ??\n customStyles?.text?.fontSize ??\n 18;\n const pickerAmPmFontSize =\n customStyles?.pickerAmPmLabel?.fontSize ??\n customStyles?.pickerLabel?.fontSize ??\n customStyles?.text?.fontSize ??\n 18;\n const pickerItemFontSize =\n customStyles?.pickerItem?.fontSize ??\n customStyles?.text?.fontSize ??\n 25;\n\n // This offset makes the picker label appear to be aligned with the picker item\n // despite them having different font sizes\n const pickerLabelVerticalOffset =\n pickerItemFontSize - pickerLabelFontSize - 1;\n const pickerAmPmVerticalOffset =\n pickerItemFontSize - pickerAmPmFontSize - 1;\n\n // The label is absolutely positioned, so we need to offset it for it to appear\n // in the correct position. We offset it to the left of the container so that\n // the width of the label doesn't impact its position.\n const extraLabelOffsetPercentage = customStyles?.labelOffsetPercentage ?? 8;\n const baseLeftOffsetPercentage = 70;\n const labelOffsetPercentage =\n baseLeftOffsetPercentage + extraLabelOffsetPercentage;\n\n return StyleSheet.create({\n pickerContainer: {\n flexDirection: \"row\",\n backgroundColor,\n width: \"100%\",\n ...customStyles?.pickerContainer,\n },\n pickerLabelContainer: {\n position: \"absolute\",\n top: 0,\n bottom: 0,\n left: `${labelOffsetPercentage}%`,\n justifyContent: \"center\",\n marginTop: pickerLabelVerticalOffset,\n ...customStyles?.pickerLabelContainer,\n },\n pickerLabel: {\n fontSize: 18,\n fontWeight: \"bold\",\n color: textColor,\n ...customStyles?.text,\n ...customStyles?.pickerLabel,\n },\n pickerItemContainer: {\n flexDirection: \"row\",\n height: 50,\n justifyContent: \"center\",\n alignItems: \"center\",\n ...customStyles?.pickerItemContainer,\n },\n pickerItem: {\n textAlignVertical: \"center\",\n fontSize: 25,\n overflow: \"visible\",\n color: textColor,\n ...customStyles?.text,\n ...customStyles?.pickerItem,\n },\n selectedPickerItem: {\n textAlignVertical: \"center\",\n fontSize: 25,\n overflow: \"visible\",\n color: textColor,\n ...customStyles?.text,\n ...customStyles?.pickerItem,\n ...customStyles?.selectedPickerItem,\n },\n pickerAmPmContainer: {\n position: \"absolute\",\n top: 0,\n bottom: 0,\n left: `${labelOffsetPercentage}%`,\n justifyContent: \"center\",\n marginTop: pickerAmPmVerticalOffset,\n ...customStyles?.pickerLabelContainer,\n ...customStyles?.pickerAmPmContainer,\n },\n pickerAmPmLabel: {\n fontSize: 18,\n fontWeight: \"bold\",\n color: textColor,\n ...customStyles?.text,\n ...customStyles?.pickerLabel,\n ...customStyles?.pickerAmPmLabel,\n },\n disabledPickerContainer: {\n opacity: 0.4,\n ...customStyles?.disabledPickerContainer,\n },\n disabledPickerItem: {\n opacity: 0.2,\n ...customStyles?.disabledPickerItem,\n },\n maskedView: {\n flex: 1,\n },\n pickerGradientOverlay: {\n position: \"absolute\",\n width: \"100%\",\n height: \"100%\",\n ...customStyles?.pickerGradientOverlay,\n },\n durationScrollFlatListContainer: {\n flex: 1,\n ...customStyles?.durationScrollFlatListContainer,\n },\n durationScrollFlatList: {\n // These paddings allow the inner am/pm label to\n // spill out of the flatlist\n paddingRight: \"25%\",\n marginRight: \"-25%\",\n ...customStyles?.durationScrollFlatList,\n },\n durationScrollFlatListContentContainer: {\n ...customStyles?.durationScrollFlatListContentContainer,\n },\n });\n};"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["StyleSheet","DARK_MODE_BACKGROUND_COLOR","DARK_MODE_TEXT_COLOR","LIGHT_MODE_BACKGROUND_COLOR","LIGHT_MODE_TEXT_COLOR","generateStyles","customStyles","_customStyles$pickerL","_customStyles$text","_customStyles$pickerA","_customStyles$pickerL2","_customStyles$text2","_customStyles$pickerI","_customStyles$text3","backgroundColor","theme","textColor","pickerLabelFontSize","pickerLabel","fontSize","text","pickerAmPmFontSize","pickerAmPmLabel","pickerItemFontSize","pickerItem","pickerLabelVerticalOffset","pickerAmPmVerticalOffset","useLegacyLabelPosition","labelOffsetPercentage","pickerLabelGap","extraLabelOffsetPercentage","baseLeftOffsetPercentage","create","disabledPickerContainer","opacity","disabledPickerItem","durationScrollFlatList","marginRight","paddingRight","durationScrollFlatListContainer","flex","durationScrollFlatListContentContainer","maskedView","pickerAmPmContainer","bottom","justifyContent","marginTop","position","top","left","undefined","pickerLabelContainer","color","fontWeight","pickerContainer","flexDirection","width","pickerGradientOverlay","height","overflow","textAlignVertical","pickerItemContainer","alignItems","selectedPickerItem"],"sources":["styles.ts"],"sourcesContent":["import { StyleSheet } from \"react-native\";\nimport type { TextStyle, ViewStyle } from \"react-native\";\n\nexport type PickerColumn = \"days\" | \"hours\" | \"minutes\" | \"seconds\";\n\nexport type PerColumnValue = number | Partial<Record<PickerColumn, number>>;\n\nexport interface CustomTimerPickerStyles {\n backgroundColor?: string;\n disabledPickerContainer?: ViewStyle;\n disabledPickerItem?: TextStyle;\n durationScrollFlatList?: ViewStyle;\n durationScrollFlatListContainer?: ViewStyle;\n durationScrollFlatListContentContainer?: ViewStyle;\n /** @deprecated Use pickerLabelGap instead. Will be removed in a future version. */\n labelOffsetPercentage?: number;\n pickerAmPmContainer?: ViewStyle;\n pickerAmPmLabel?: TextStyle;\n pickerColumnWidth?: PerColumnValue;\n pickerContainer?: ViewStyle & { backgroundColor?: string };\n pickerGradientOverlay?: ViewStyle;\n pickerItem?: TextStyle;\n pickerItemContainer?: ViewStyle & { height?: number };\n pickerLabel?: TextStyle;\n pickerLabelContainer?: ViewStyle;\n pickerLabelGap?: PerColumnValue;\n selectedPickerItem?: TextStyle;\n text?: TextStyle;\n theme?: \"light\" | \"dark\";\n}\n\nconst DARK_MODE_BACKGROUND_COLOR = \"#232323\";\nconst DARK_MODE_TEXT_COLOR = \"#E9E9E9\";\nconst LIGHT_MODE_BACKGROUND_COLOR = \"#F1F1F1\";\nconst LIGHT_MODE_TEXT_COLOR = \"#1B1B1B\";\n\nexport const generateStyles = (customStyles: CustomTimerPickerStyles | undefined) => {\n const backgroundColor =\n customStyles?.backgroundColor ??\n (customStyles?.theme === \"dark\" ? DARK_MODE_BACKGROUND_COLOR : LIGHT_MODE_BACKGROUND_COLOR);\n\n const textColor = customStyles?.theme === \"dark\" ? DARK_MODE_TEXT_COLOR : LIGHT_MODE_TEXT_COLOR;\n\n const pickerLabelFontSize =\n customStyles?.pickerLabel?.fontSize ?? customStyles?.text?.fontSize ?? 18;\n const pickerAmPmFontSize =\n customStyles?.pickerAmPmLabel?.fontSize ??\n customStyles?.pickerLabel?.fontSize ??\n customStyles?.text?.fontSize ??\n 18;\n const pickerItemFontSize =\n customStyles?.pickerItem?.fontSize ?? customStyles?.text?.fontSize ?? 25;\n\n // This offset makes the picker label appear to be aligned with the picker item\n // despite them having different font sizes\n const pickerLabelVerticalOffset = pickerItemFontSize - pickerLabelFontSize - 1;\n const pickerAmPmVerticalOffset = pickerItemFontSize - pickerAmPmFontSize - 1;\n\n // Determine whether to use the legacy percentage-based label positioning.\n // The new pixel-based system (pickerLabelGap) is the default.\n // The old system is only used when labelOffsetPercentage is explicitly set\n // without pickerLabelGap.\n const useLegacyLabelPosition =\n customStyles?.labelOffsetPercentage != null && customStyles?.pickerLabelGap == null;\n\n const extraLabelOffsetPercentage = customStyles?.labelOffsetPercentage ?? 8;\n const baseLeftOffsetPercentage = 70;\n const labelOffsetPercentage = baseLeftOffsetPercentage + extraLabelOffsetPercentage;\n\n return StyleSheet.create({\n disabledPickerContainer: {\n opacity: 0.4,\n ...customStyles?.disabledPickerContainer,\n },\n disabledPickerItem: {\n opacity: 0.2,\n ...customStyles?.disabledPickerItem,\n },\n durationScrollFlatList: {\n marginRight: \"-25%\",\n // These paddings allow the inner am/pm label to\n // spill out of the flatlist\n paddingRight: \"25%\",\n ...customStyles?.durationScrollFlatList,\n },\n durationScrollFlatListContainer: {\n flex: 1,\n ...customStyles?.durationScrollFlatListContainer,\n },\n durationScrollFlatListContentContainer: {\n ...customStyles?.durationScrollFlatListContentContainer,\n },\n maskedView: {\n flex: 1,\n },\n pickerAmPmContainer: {\n bottom: 0,\n justifyContent: \"center\",\n marginTop: pickerAmPmVerticalOffset,\n position: \"absolute\",\n top: 0,\n // Only apply percentage-based left when using legacy positioning.\n // The new pixel-based positioning is applied per-column in PickerItem.\n ...(useLegacyLabelPosition ? { left: `${labelOffsetPercentage}%` } : undefined),\n ...customStyles?.pickerLabelContainer,\n ...customStyles?.pickerAmPmContainer,\n },\n pickerAmPmLabel: {\n color: textColor,\n fontSize: 18,\n fontWeight: \"bold\",\n ...customStyles?.text,\n ...customStyles?.pickerLabel,\n ...customStyles?.pickerAmPmLabel,\n },\n pickerContainer: {\n backgroundColor,\n flexDirection: \"row\",\n width: \"100%\",\n ...customStyles?.pickerContainer,\n },\n pickerGradientOverlay: {\n height: \"100%\",\n position: \"absolute\",\n width: \"100%\",\n ...customStyles?.pickerGradientOverlay,\n },\n pickerItem: {\n color: textColor,\n fontSize: 25,\n overflow: \"visible\",\n textAlignVertical: \"center\",\n ...customStyles?.text,\n ...customStyles?.pickerItem,\n },\n pickerItemContainer: {\n alignItems: \"center\",\n flexDirection: \"row\",\n height: 50,\n justifyContent: \"center\",\n ...customStyles?.pickerItemContainer,\n },\n pickerLabel: {\n color: textColor,\n fontSize: 18,\n fontWeight: \"bold\",\n ...customStyles?.text,\n ...customStyles?.pickerLabel,\n },\n pickerLabelContainer: {\n bottom: 0,\n justifyContent: \"center\",\n marginTop: pickerLabelVerticalOffset,\n position: \"absolute\",\n top: 0,\n // Only apply percentage-based left when using legacy positioning.\n // The new pixel-based positioning is applied per-column in DurationScroll.\n ...(useLegacyLabelPosition ? { left: `${labelOffsetPercentage}%` } : undefined),\n ...customStyles?.pickerLabelContainer,\n },\n selectedPickerItem: {\n color: textColor,\n fontSize: 25,\n overflow: \"visible\",\n textAlignVertical: \"center\",\n ...customStyles?.text,\n ...customStyles?.pickerItem,\n ...customStyles?.selectedPickerItem,\n },\n });\n};\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?: 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":[]}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from \"react\";\nimport { type RefObject } from \"react\";\n\nimport type { View } from \"react-native\";\n\nimport type { LinearGradientProps, SoundAsset, Limit } from \"../DurationScroll/types\";\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 aggressivelyGetLatestDuration?: boolean;\n allowFontScaling?: boolean;\n amLabel?: string;\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 /** @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 // 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 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 // 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 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":[]}