react-native-timer-picker 2.2.0 → 2.2.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 (56) hide show
  1. package/README.md +35 -34
  2. package/dist/commonjs/tests/DurationScroll.test.js +94 -0
  3. package/dist/commonjs/tests/DurationScroll.test.js.map +1 -1
  4. package/dist/commonjs/tests/Modal.test.js +79 -2
  5. package/dist/commonjs/tests/Modal.test.js.map +1 -1
  6. package/dist/commonjs/tests/TimerPicker.test.js +115 -0
  7. package/dist/commonjs/tests/TimerPicker.test.js.map +1 -1
  8. package/dist/commonjs/tests/TimerPickerModal.test.js +120 -0
  9. package/dist/commonjs/tests/TimerPickerModal.test.js.map +1 -1
  10. package/dist/commonjs/tests/colorToRgba.test.js +176 -0
  11. package/dist/commonjs/tests/colorToRgba.test.js.map +1 -0
  12. package/dist/commonjs/tests/generateNumbers.test.js +350 -0
  13. package/dist/commonjs/tests/generateNumbers.test.js.map +1 -0
  14. package/dist/commonjs/tests/getAdjustedLimit.test.js +324 -0
  15. package/dist/commonjs/tests/getAdjustedLimit.test.js.map +1 -0
  16. package/dist/commonjs/tests/getDurationAndIndexFromScrollOffset.test.js +424 -0
  17. package/dist/commonjs/tests/getDurationAndIndexFromScrollOffset.test.js.map +1 -0
  18. package/dist/commonjs/tests/getInitialScrollIndex.test.js +396 -0
  19. package/dist/commonjs/tests/getInitialScrollIndex.test.js.map +1 -0
  20. package/dist/commonjs/tests/getSafeInitialValue.test.js +497 -0
  21. package/dist/commonjs/tests/getSafeInitialValue.test.js.map +1 -0
  22. package/dist/commonjs/tests/padNumber.test.js +301 -0
  23. package/dist/commonjs/tests/padNumber.test.js.map +1 -0
  24. package/dist/commonjs/utils/colorToRgba.js +5 -0
  25. package/dist/commonjs/utils/colorToRgba.js.map +1 -1
  26. package/dist/commonjs/utils/getAdjustedLimit.js +3 -3
  27. package/dist/commonjs/utils/getAdjustedLimit.js.map +1 -1
  28. package/dist/module/tests/DurationScroll.test.js +94 -0
  29. package/dist/module/tests/DurationScroll.test.js.map +1 -1
  30. package/dist/module/tests/Modal.test.js +80 -3
  31. package/dist/module/tests/Modal.test.js.map +1 -1
  32. package/dist/module/tests/TimerPicker.test.js +115 -0
  33. package/dist/module/tests/TimerPicker.test.js.map +1 -1
  34. package/dist/module/tests/TimerPickerModal.test.js +121 -1
  35. package/dist/module/tests/TimerPickerModal.test.js.map +1 -1
  36. package/dist/module/tests/colorToRgba.test.js +174 -0
  37. package/dist/module/tests/colorToRgba.test.js.map +1 -0
  38. package/dist/module/tests/generateNumbers.test.js +348 -0
  39. package/dist/module/tests/generateNumbers.test.js.map +1 -0
  40. package/dist/module/tests/getAdjustedLimit.test.js +322 -0
  41. package/dist/module/tests/getAdjustedLimit.test.js.map +1 -0
  42. package/dist/module/tests/getDurationAndIndexFromScrollOffset.test.js +422 -0
  43. package/dist/module/tests/getDurationAndIndexFromScrollOffset.test.js.map +1 -0
  44. package/dist/module/tests/getInitialScrollIndex.test.js +394 -0
  45. package/dist/module/tests/getInitialScrollIndex.test.js.map +1 -0
  46. package/dist/module/tests/getSafeInitialValue.test.js +495 -0
  47. package/dist/module/tests/getSafeInitialValue.test.js.map +1 -0
  48. package/dist/module/tests/padNumber.test.js +299 -0
  49. package/dist/module/tests/padNumber.test.js.map +1 -0
  50. package/dist/module/utils/colorToRgba.js +5 -0
  51. package/dist/module/utils/colorToRgba.js.map +1 -1
  52. package/dist/module/utils/getAdjustedLimit.js +3 -3
  53. package/dist/module/utils/getAdjustedLimit.js.map +1 -1
  54. package/dist/typescript/components/TimerPicker/styles.d.ts +0 -247
  55. package/dist/typescript/components/TimerPickerModal/styles.d.ts +0 -152
  56. package/package.json +3 -4
@@ -0,0 +1,422 @@
1
+ import { getDurationAndIndexFromScrollOffset } from "../utils/getDurationAndIndexFromScrollOffset";
2
+ describe("getDurationAndIndexFromScrollOffset", () => {
3
+ describe("infinite scroll disabled", () => {
4
+ it("calculates duration and index at start position", () => {
5
+ const result = getDurationAndIndexFromScrollOffset({
6
+ disableInfiniteScroll: true,
7
+ interval: 1,
8
+ itemHeight: 50,
9
+ numberOfItems: 60,
10
+ padWithNItems: 2,
11
+ yContentOffset: 0
12
+ });
13
+ expect(result).toEqual({
14
+ duration: 0,
15
+ index: 0
16
+ });
17
+ });
18
+ it("calculates duration and index at middle position", () => {
19
+ const result = getDurationAndIndexFromScrollOffset({
20
+ disableInfiniteScroll: true,
21
+ interval: 1,
22
+ itemHeight: 50,
23
+ numberOfItems: 60,
24
+ padWithNItems: 2,
25
+ yContentOffset: 500
26
+ });
27
+ expect(result).toEqual({
28
+ duration: 10,
29
+ index: 10
30
+ });
31
+ });
32
+ it("calculates duration and index with interval of 5", () => {
33
+ const result = getDurationAndIndexFromScrollOffset({
34
+ disableInfiniteScroll: true,
35
+ interval: 5,
36
+ itemHeight: 50,
37
+ numberOfItems: 12,
38
+ padWithNItems: 2,
39
+ yContentOffset: 200
40
+ });
41
+ expect(result).toEqual({
42
+ duration: 20,
43
+ index: 4
44
+ });
45
+ });
46
+ it("calculates duration and index with different item height", () => {
47
+ const result = getDurationAndIndexFromScrollOffset({
48
+ disableInfiniteScroll: true,
49
+ interval: 1,
50
+ itemHeight: 40,
51
+ numberOfItems: 60,
52
+ padWithNItems: 2,
53
+ yContentOffset: 200
54
+ });
55
+ expect(result).toEqual({
56
+ duration: 5,
57
+ index: 5
58
+ });
59
+ });
60
+ it("rounds to nearest index", () => {
61
+ const result = getDurationAndIndexFromScrollOffset({
62
+ disableInfiniteScroll: true,
63
+ interval: 1,
64
+ itemHeight: 50,
65
+ numberOfItems: 60,
66
+ padWithNItems: 2,
67
+ yContentOffset: 127
68
+ });
69
+ expect(result).toEqual({
70
+ duration: 3,
71
+ index: 3
72
+ }); // 127/50 = 2.54, rounds to 3
73
+ });
74
+ it("handles wrap-around at max value", () => {
75
+ const result = getDurationAndIndexFromScrollOffset({
76
+ disableInfiniteScroll: true,
77
+ interval: 1,
78
+ itemHeight: 50,
79
+ numberOfItems: 24,
80
+ padWithNItems: 2,
81
+ yContentOffset: 1200
82
+ });
83
+ expect(result).toEqual({
84
+ duration: 0,
85
+ index: 24
86
+ }); // 24 % 24 = 0
87
+ });
88
+ });
89
+ describe("infinite scroll enabled", () => {
90
+ it("calculates duration and index at start position", () => {
91
+ const result = getDurationAndIndexFromScrollOffset({
92
+ disableInfiniteScroll: false,
93
+ interval: 1,
94
+ itemHeight: 50,
95
+ numberOfItems: 60,
96
+ padWithNItems: 2,
97
+ yContentOffset: 0
98
+ });
99
+ expect(result).toEqual({
100
+ duration: 2,
101
+ index: 0
102
+ });
103
+ });
104
+ it("accounts for padding offset in infinite scroll", () => {
105
+ const result = getDurationAndIndexFromScrollOffset({
106
+ disableInfiniteScroll: false,
107
+ interval: 1,
108
+ itemHeight: 50,
109
+ numberOfItems: 60,
110
+ padWithNItems: 2,
111
+ yContentOffset: 100
112
+ });
113
+ expect(result).toEqual({
114
+ duration: 4,
115
+ index: 2
116
+ });
117
+ });
118
+ it("calculates duration with larger padding", () => {
119
+ const result = getDurationAndIndexFromScrollOffset({
120
+ disableInfiniteScroll: false,
121
+ interval: 1,
122
+ itemHeight: 50,
123
+ numberOfItems: 60,
124
+ padWithNItems: 5,
125
+ yContentOffset: 0
126
+ });
127
+ expect(result).toEqual({
128
+ duration: 5,
129
+ index: 0
130
+ });
131
+ });
132
+ it("handles modulo wrap-around correctly", () => {
133
+ const result = getDurationAndIndexFromScrollOffset({
134
+ disableInfiniteScroll: false,
135
+ interval: 1,
136
+ itemHeight: 50,
137
+ numberOfItems: 24,
138
+ padWithNItems: 2,
139
+ yContentOffset: 1100
140
+ });
141
+ expect(result).toEqual({
142
+ duration: 0,
143
+ index: 22
144
+ }); // (22 + 2) % 24 = 0, wraps to duration 0
145
+ });
146
+ it("calculates with interval of 15", () => {
147
+ const result = getDurationAndIndexFromScrollOffset({
148
+ disableInfiniteScroll: false,
149
+ interval: 15,
150
+ itemHeight: 50,
151
+ numberOfItems: 4,
152
+ padWithNItems: 2,
153
+ yContentOffset: 100
154
+ });
155
+ expect(result).toEqual({
156
+ duration: 0,
157
+ index: 2
158
+ }); // (2 + 2) % 4 = 0, 0 * 15 = 0
159
+ });
160
+ });
161
+ describe("different intervals", () => {
162
+ it("handles interval of 1", () => {
163
+ const result = getDurationAndIndexFromScrollOffset({
164
+ disableInfiniteScroll: true,
165
+ interval: 1,
166
+ itemHeight: 50,
167
+ numberOfItems: 60,
168
+ padWithNItems: 2,
169
+ yContentOffset: 300
170
+ });
171
+ expect(result).toEqual({
172
+ duration: 6,
173
+ index: 6
174
+ });
175
+ });
176
+ it("handles interval of 5", () => {
177
+ const result = getDurationAndIndexFromScrollOffset({
178
+ disableInfiniteScroll: true,
179
+ interval: 5,
180
+ itemHeight: 50,
181
+ numberOfItems: 12,
182
+ padWithNItems: 2,
183
+ yContentOffset: 300
184
+ });
185
+ expect(result).toEqual({
186
+ duration: 30,
187
+ index: 6
188
+ });
189
+ });
190
+ it("handles interval of 15 for minutes", () => {
191
+ const result = getDurationAndIndexFromScrollOffset({
192
+ disableInfiniteScroll: true,
193
+ interval: 15,
194
+ itemHeight: 50,
195
+ numberOfItems: 4,
196
+ padWithNItems: 2,
197
+ yContentOffset: 150
198
+ });
199
+ expect(result).toEqual({
200
+ duration: 45,
201
+ index: 3
202
+ });
203
+ });
204
+ it("handles interval of 10", () => {
205
+ const result = getDurationAndIndexFromScrollOffset({
206
+ disableInfiniteScroll: true,
207
+ interval: 10,
208
+ itemHeight: 50,
209
+ numberOfItems: 6,
210
+ padWithNItems: 2,
211
+ yContentOffset: 100
212
+ });
213
+ expect(result).toEqual({
214
+ duration: 20,
215
+ index: 2
216
+ });
217
+ });
218
+ });
219
+ describe("different item heights", () => {
220
+ it("handles item height of 30", () => {
221
+ const result = getDurationAndIndexFromScrollOffset({
222
+ disableInfiniteScroll: true,
223
+ interval: 1,
224
+ itemHeight: 30,
225
+ numberOfItems: 60,
226
+ padWithNItems: 2,
227
+ yContentOffset: 180
228
+ });
229
+ expect(result).toEqual({
230
+ duration: 6,
231
+ index: 6
232
+ });
233
+ });
234
+ it("handles item height of 60", () => {
235
+ const result = getDurationAndIndexFromScrollOffset({
236
+ disableInfiniteScroll: true,
237
+ interval: 1,
238
+ itemHeight: 60,
239
+ numberOfItems: 60,
240
+ padWithNItems: 2,
241
+ yContentOffset: 360
242
+ });
243
+ expect(result).toEqual({
244
+ duration: 6,
245
+ index: 6
246
+ });
247
+ });
248
+ it("handles item height of 100", () => {
249
+ const result = getDurationAndIndexFromScrollOffset({
250
+ disableInfiniteScroll: true,
251
+ interval: 1,
252
+ itemHeight: 100,
253
+ numberOfItems: 60,
254
+ padWithNItems: 2,
255
+ yContentOffset: 500
256
+ });
257
+ expect(result).toEqual({
258
+ duration: 5,
259
+ index: 5
260
+ });
261
+ });
262
+ });
263
+ describe("rounding behavior", () => {
264
+ it("rounds down when closer to lower index", () => {
265
+ const result = getDurationAndIndexFromScrollOffset({
266
+ disableInfiniteScroll: true,
267
+ interval: 1,
268
+ itemHeight: 50,
269
+ numberOfItems: 60,
270
+ padWithNItems: 2,
271
+ yContentOffset: 124
272
+ });
273
+ expect(result).toEqual({
274
+ duration: 2,
275
+ index: 2
276
+ }); // 124/50 = 2.48
277
+ });
278
+ it("rounds up when closer to upper index", () => {
279
+ const result = getDurationAndIndexFromScrollOffset({
280
+ disableInfiniteScroll: true,
281
+ interval: 1,
282
+ itemHeight: 50,
283
+ numberOfItems: 60,
284
+ padWithNItems: 2,
285
+ yContentOffset: 126
286
+ });
287
+ expect(result).toEqual({
288
+ duration: 3,
289
+ index: 3
290
+ }); // 126/50 = 2.52
291
+ });
292
+ it("rounds to nearest for exact halfway point", () => {
293
+ const result = getDurationAndIndexFromScrollOffset({
294
+ disableInfiniteScroll: true,
295
+ interval: 1,
296
+ itemHeight: 50,
297
+ numberOfItems: 60,
298
+ padWithNItems: 2,
299
+ yContentOffset: 125
300
+ });
301
+ expect(result).toEqual({
302
+ duration: 3,
303
+ index: 3
304
+ }); // 125/50 = 2.5, rounds to 3
305
+ });
306
+ });
307
+ describe("edge cases", () => {
308
+ it("handles zero offset", () => {
309
+ const result = getDurationAndIndexFromScrollOffset({
310
+ disableInfiniteScroll: true,
311
+ interval: 1,
312
+ itemHeight: 50,
313
+ numberOfItems: 60,
314
+ padWithNItems: 2,
315
+ yContentOffset: 0
316
+ });
317
+ expect(result).toEqual({
318
+ duration: 0,
319
+ index: 0
320
+ });
321
+ });
322
+ it("handles very large offset", () => {
323
+ const result = getDurationAndIndexFromScrollOffset({
324
+ disableInfiniteScroll: true,
325
+ interval: 1,
326
+ itemHeight: 50,
327
+ numberOfItems: 24,
328
+ padWithNItems: 2,
329
+ yContentOffset: 5000
330
+ });
331
+ expect(result.index).toBe(100);
332
+ expect(result.duration).toBe(4); // (100 % 24) * 1 = 4
333
+ });
334
+ it("handles small numberOfItems", () => {
335
+ const result = getDurationAndIndexFromScrollOffset({
336
+ disableInfiniteScroll: true,
337
+ interval: 1,
338
+ itemHeight: 50,
339
+ numberOfItems: 2,
340
+ padWithNItems: 1,
341
+ yContentOffset: 150
342
+ });
343
+ expect(result).toEqual({
344
+ duration: 1,
345
+ index: 3
346
+ }); // 3 % 2 = 1
347
+ });
348
+ it("handles no padding", () => {
349
+ const result = getDurationAndIndexFromScrollOffset({
350
+ disableInfiniteScroll: false,
351
+ interval: 1,
352
+ itemHeight: 50,
353
+ numberOfItems: 60,
354
+ padWithNItems: 0,
355
+ yContentOffset: 100
356
+ });
357
+ expect(result).toEqual({
358
+ duration: 2,
359
+ index: 2
360
+ });
361
+ });
362
+ });
363
+ describe("real-world scenarios", () => {
364
+ it("handles typical hour picker scroll", () => {
365
+ const result = getDurationAndIndexFromScrollOffset({
366
+ disableInfiniteScroll: false,
367
+ interval: 1,
368
+ itemHeight: 50,
369
+ numberOfItems: 24,
370
+ padWithNItems: 2,
371
+ yContentOffset: 600
372
+ });
373
+ expect(result).toEqual({
374
+ duration: 14,
375
+ index: 12
376
+ }); // (12 + 2) % 24 = 14
377
+ });
378
+ it("handles typical minute picker scroll", () => {
379
+ const result = getDurationAndIndexFromScrollOffset({
380
+ disableInfiniteScroll: false,
381
+ interval: 1,
382
+ itemHeight: 50,
383
+ numberOfItems: 60,
384
+ padWithNItems: 2,
385
+ yContentOffset: 1500
386
+ });
387
+ expect(result).toEqual({
388
+ duration: 32,
389
+ index: 30
390
+ }); // (30 + 2) % 60 = 32
391
+ });
392
+ it("handles minute picker with 5-minute interval", () => {
393
+ const result = getDurationAndIndexFromScrollOffset({
394
+ disableInfiniteScroll: false,
395
+ interval: 5,
396
+ itemHeight: 50,
397
+ numberOfItems: 12,
398
+ padWithNItems: 2,
399
+ yContentOffset: 250
400
+ });
401
+ expect(result).toEqual({
402
+ duration: 35,
403
+ index: 5
404
+ }); // (5 + 2) % 12 = 7, 7 * 5 = 35
405
+ });
406
+ it("handles second picker scroll", () => {
407
+ const result = getDurationAndIndexFromScrollOffset({
408
+ disableInfiniteScroll: true,
409
+ interval: 1,
410
+ itemHeight: 40,
411
+ numberOfItems: 60,
412
+ padWithNItems: 2,
413
+ yContentOffset: 800
414
+ });
415
+ expect(result).toEqual({
416
+ duration: 20,
417
+ index: 20
418
+ });
419
+ });
420
+ });
421
+ });
422
+ //# sourceMappingURL=getDurationAndIndexFromScrollOffset.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getDurationAndIndexFromScrollOffset","describe","it","result","disableInfiniteScroll","interval","itemHeight","numberOfItems","padWithNItems","yContentOffset","expect","toEqual","duration","index","toBe"],"sources":["getDurationAndIndexFromScrollOffset.test.ts"],"sourcesContent":["import { getDurationAndIndexFromScrollOffset } from \"../utils/getDurationAndIndexFromScrollOffset\";\n\ndescribe(\"getDurationAndIndexFromScrollOffset\", () => {\n describe(\"infinite scroll disabled\", () => {\n it(\"calculates duration and index at start position\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: true,\n interval: 1,\n itemHeight: 50,\n numberOfItems: 60,\n padWithNItems: 2,\n yContentOffset: 0,\n });\n expect(result).toEqual({ duration: 0, index: 0 });\n });\n\n it(\"calculates duration and index at middle position\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: true,\n interval: 1,\n itemHeight: 50,\n numberOfItems: 60,\n padWithNItems: 2,\n yContentOffset: 500,\n });\n expect(result).toEqual({ duration: 10, index: 10 });\n });\n\n it(\"calculates duration and index with interval of 5\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: true,\n interval: 5,\n itemHeight: 50,\n numberOfItems: 12,\n padWithNItems: 2,\n yContentOffset: 200,\n });\n expect(result).toEqual({ duration: 20, index: 4 });\n });\n\n it(\"calculates duration and index with different item height\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: true,\n interval: 1,\n itemHeight: 40,\n numberOfItems: 60,\n padWithNItems: 2,\n yContentOffset: 200,\n });\n expect(result).toEqual({ duration: 5, index: 5 });\n });\n\n it(\"rounds to nearest index\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: true,\n interval: 1,\n itemHeight: 50,\n numberOfItems: 60,\n padWithNItems: 2,\n yContentOffset: 127,\n });\n expect(result).toEqual({ duration: 3, index: 3 }); // 127/50 = 2.54, rounds to 3\n });\n\n it(\"handles wrap-around at max value\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: true,\n interval: 1,\n itemHeight: 50,\n numberOfItems: 24,\n padWithNItems: 2,\n yContentOffset: 1200,\n });\n expect(result).toEqual({ duration: 0, index: 24 }); // 24 % 24 = 0\n });\n });\n\n describe(\"infinite scroll enabled\", () => {\n it(\"calculates duration and index at start position\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: false,\n interval: 1,\n itemHeight: 50,\n numberOfItems: 60,\n padWithNItems: 2,\n yContentOffset: 0,\n });\n expect(result).toEqual({ duration: 2, index: 0 });\n });\n\n it(\"accounts for padding offset in infinite scroll\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: false,\n interval: 1,\n itemHeight: 50,\n numberOfItems: 60,\n padWithNItems: 2,\n yContentOffset: 100,\n });\n expect(result).toEqual({ duration: 4, index: 2 });\n });\n\n it(\"calculates duration with larger padding\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: false,\n interval: 1,\n itemHeight: 50,\n numberOfItems: 60,\n padWithNItems: 5,\n yContentOffset: 0,\n });\n expect(result).toEqual({ duration: 5, index: 0 });\n });\n\n it(\"handles modulo wrap-around correctly\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: false,\n interval: 1,\n itemHeight: 50,\n numberOfItems: 24,\n padWithNItems: 2,\n yContentOffset: 1100,\n });\n expect(result).toEqual({ duration: 0, index: 22 }); // (22 + 2) % 24 = 0, wraps to duration 0\n });\n\n it(\"calculates with interval of 15\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: false,\n interval: 15,\n itemHeight: 50,\n numberOfItems: 4,\n padWithNItems: 2,\n yContentOffset: 100,\n });\n expect(result).toEqual({ duration: 0, index: 2 }); // (2 + 2) % 4 = 0, 0 * 15 = 0\n });\n });\n\n describe(\"different intervals\", () => {\n it(\"handles interval of 1\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: true,\n interval: 1,\n itemHeight: 50,\n numberOfItems: 60,\n padWithNItems: 2,\n yContentOffset: 300,\n });\n expect(result).toEqual({ duration: 6, index: 6 });\n });\n\n it(\"handles interval of 5\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: true,\n interval: 5,\n itemHeight: 50,\n numberOfItems: 12,\n padWithNItems: 2,\n yContentOffset: 300,\n });\n expect(result).toEqual({ duration: 30, index: 6 });\n });\n\n it(\"handles interval of 15 for minutes\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: true,\n interval: 15,\n itemHeight: 50,\n numberOfItems: 4,\n padWithNItems: 2,\n yContentOffset: 150,\n });\n expect(result).toEqual({ duration: 45, index: 3 });\n });\n\n it(\"handles interval of 10\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: true,\n interval: 10,\n itemHeight: 50,\n numberOfItems: 6,\n padWithNItems: 2,\n yContentOffset: 100,\n });\n expect(result).toEqual({ duration: 20, index: 2 });\n });\n });\n\n describe(\"different item heights\", () => {\n it(\"handles item height of 30\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: true,\n interval: 1,\n itemHeight: 30,\n numberOfItems: 60,\n padWithNItems: 2,\n yContentOffset: 180,\n });\n expect(result).toEqual({ duration: 6, index: 6 });\n });\n\n it(\"handles item height of 60\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: true,\n interval: 1,\n itemHeight: 60,\n numberOfItems: 60,\n padWithNItems: 2,\n yContentOffset: 360,\n });\n expect(result).toEqual({ duration: 6, index: 6 });\n });\n\n it(\"handles item height of 100\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: true,\n interval: 1,\n itemHeight: 100,\n numberOfItems: 60,\n padWithNItems: 2,\n yContentOffset: 500,\n });\n expect(result).toEqual({ duration: 5, index: 5 });\n });\n });\n\n describe(\"rounding behavior\", () => {\n it(\"rounds down when closer to lower index\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: true,\n interval: 1,\n itemHeight: 50,\n numberOfItems: 60,\n padWithNItems: 2,\n yContentOffset: 124,\n });\n expect(result).toEqual({ duration: 2, index: 2 }); // 124/50 = 2.48\n });\n\n it(\"rounds up when closer to upper index\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: true,\n interval: 1,\n itemHeight: 50,\n numberOfItems: 60,\n padWithNItems: 2,\n yContentOffset: 126,\n });\n expect(result).toEqual({ duration: 3, index: 3 }); // 126/50 = 2.52\n });\n\n it(\"rounds to nearest for exact halfway point\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: true,\n interval: 1,\n itemHeight: 50,\n numberOfItems: 60,\n padWithNItems: 2,\n yContentOffset: 125,\n });\n expect(result).toEqual({ duration: 3, index: 3 }); // 125/50 = 2.5, rounds to 3\n });\n });\n\n describe(\"edge cases\", () => {\n it(\"handles zero offset\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: true,\n interval: 1,\n itemHeight: 50,\n numberOfItems: 60,\n padWithNItems: 2,\n yContentOffset: 0,\n });\n expect(result).toEqual({ duration: 0, index: 0 });\n });\n\n it(\"handles very large offset\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: true,\n interval: 1,\n itemHeight: 50,\n numberOfItems: 24,\n padWithNItems: 2,\n yContentOffset: 5000,\n });\n expect(result.index).toBe(100);\n expect(result.duration).toBe(4); // (100 % 24) * 1 = 4\n });\n\n it(\"handles small numberOfItems\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: true,\n interval: 1,\n itemHeight: 50,\n numberOfItems: 2,\n padWithNItems: 1,\n yContentOffset: 150,\n });\n expect(result).toEqual({ duration: 1, index: 3 }); // 3 % 2 = 1\n });\n\n it(\"handles no padding\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: false,\n interval: 1,\n itemHeight: 50,\n numberOfItems: 60,\n padWithNItems: 0,\n yContentOffset: 100,\n });\n expect(result).toEqual({ duration: 2, index: 2 });\n });\n });\n\n describe(\"real-world scenarios\", () => {\n it(\"handles typical hour picker scroll\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: false,\n interval: 1,\n itemHeight: 50,\n numberOfItems: 24,\n padWithNItems: 2,\n yContentOffset: 600,\n });\n expect(result).toEqual({ duration: 14, index: 12 }); // (12 + 2) % 24 = 14\n });\n\n it(\"handles typical minute picker scroll\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: false,\n interval: 1,\n itemHeight: 50,\n numberOfItems: 60,\n padWithNItems: 2,\n yContentOffset: 1500,\n });\n expect(result).toEqual({ duration: 32, index: 30 }); // (30 + 2) % 60 = 32\n });\n\n it(\"handles minute picker with 5-minute interval\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: false,\n interval: 5,\n itemHeight: 50,\n numberOfItems: 12,\n padWithNItems: 2,\n yContentOffset: 250,\n });\n expect(result).toEqual({ duration: 35, index: 5 }); // (5 + 2) % 12 = 7, 7 * 5 = 35\n });\n\n it(\"handles second picker scroll\", () => {\n const result = getDurationAndIndexFromScrollOffset({\n disableInfiniteScroll: true,\n interval: 1,\n itemHeight: 40,\n numberOfItems: 60,\n padWithNItems: 2,\n yContentOffset: 800,\n });\n expect(result).toEqual({ duration: 20, index: 20 });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}