react-native-timer-picker 2.2.0 → 2.2.2

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