react-native-timer-picker 2.1.1 → 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 (139) hide show
  1. package/README.md +250 -174
  2. package/dist/commonjs/components/DurationScroll/DurationScroll.js +417 -0
  3. package/dist/commonjs/components/DurationScroll/DurationScroll.js.map +1 -0
  4. package/dist/commonjs/components/DurationScroll/index.js +20 -392
  5. package/dist/commonjs/components/DurationScroll/index.js.map +1 -1
  6. package/dist/commonjs/components/DurationScroll/types.js.map +1 -1
  7. package/dist/commonjs/components/Modal/Modal.js +107 -0
  8. package/dist/commonjs/components/Modal/Modal.js.map +1 -0
  9. package/dist/commonjs/components/Modal/index.js +20 -101
  10. package/dist/commonjs/components/Modal/index.js.map +1 -1
  11. package/dist/commonjs/components/TimerPicker/TimerPicker.js +225 -0
  12. package/dist/commonjs/components/TimerPicker/TimerPicker.js.map +1 -0
  13. package/dist/commonjs/components/TimerPicker/index.js +29 -166
  14. package/dist/commonjs/components/TimerPicker/index.js.map +1 -1
  15. package/dist/commonjs/components/TimerPicker/styles.js.map +1 -1
  16. package/dist/commonjs/components/TimerPicker/types.js.map +1 -1
  17. package/dist/commonjs/components/TimerPickerModal/TimerPickerModal.js +143 -0
  18. package/dist/commonjs/components/TimerPickerModal/TimerPickerModal.js.map +1 -0
  19. package/dist/commonjs/components/TimerPickerModal/index.js +30 -131
  20. package/dist/commonjs/components/TimerPickerModal/index.js.map +1 -1
  21. package/dist/commonjs/components/TimerPickerModal/types.js.map +1 -1
  22. package/dist/commonjs/index.js +9 -13
  23. package/dist/commonjs/index.js.map +1 -1
  24. package/dist/commonjs/tests/DurationScroll.test.js +94 -0
  25. package/dist/commonjs/tests/DurationScroll.test.js.map +1 -1
  26. package/dist/commonjs/tests/Modal.test.js +79 -2
  27. package/dist/commonjs/tests/Modal.test.js.map +1 -1
  28. package/dist/commonjs/tests/TimerPicker.test.js +119 -1
  29. package/dist/commonjs/tests/TimerPicker.test.js.map +1 -1
  30. package/dist/commonjs/tests/TimerPickerModal.test.js +120 -0
  31. package/dist/commonjs/tests/TimerPickerModal.test.js.map +1 -1
  32. package/dist/commonjs/tests/colorToRgba.test.js +176 -0
  33. package/dist/commonjs/tests/colorToRgba.test.js.map +1 -0
  34. package/dist/commonjs/tests/generateNumbers.test.js +350 -0
  35. package/dist/commonjs/tests/generateNumbers.test.js.map +1 -0
  36. package/dist/commonjs/tests/getAdjustedLimit.test.js +324 -0
  37. package/dist/commonjs/tests/getAdjustedLimit.test.js.map +1 -0
  38. package/dist/commonjs/tests/getDurationAndIndexFromScrollOffset.test.js +424 -0
  39. package/dist/commonjs/tests/getDurationAndIndexFromScrollOffset.test.js.map +1 -0
  40. package/dist/commonjs/tests/getInitialScrollIndex.test.js +396 -0
  41. package/dist/commonjs/tests/getInitialScrollIndex.test.js.map +1 -0
  42. package/dist/commonjs/tests/getSafeInitialValue.test.js +497 -0
  43. package/dist/commonjs/tests/getSafeInitialValue.test.js.map +1 -0
  44. package/dist/commonjs/tests/padNumber.test.js +301 -0
  45. package/dist/commonjs/tests/padNumber.test.js.map +1 -0
  46. package/dist/commonjs/utils/colorToRgba.js +40 -4
  47. package/dist/commonjs/utils/colorToRgba.js.map +1 -1
  48. package/dist/commonjs/utils/generateNumbers.js +67 -0
  49. package/dist/commonjs/utils/generateNumbers.js.map +1 -1
  50. package/dist/commonjs/utils/getAdjustedLimit.js +28 -3
  51. package/dist/commonjs/utils/getAdjustedLimit.js.map +1 -1
  52. package/dist/commonjs/utils/getDurationAndIndexFromScrollOffset.js +38 -0
  53. package/dist/commonjs/utils/getDurationAndIndexFromScrollOffset.js.map +1 -1
  54. package/dist/commonjs/utils/getInitialScrollIndex.js +38 -0
  55. package/dist/commonjs/utils/getInitialScrollIndex.js.map +1 -1
  56. package/dist/commonjs/utils/getSafeInitialValue.js +28 -0
  57. package/dist/commonjs/utils/getSafeInitialValue.js.map +1 -1
  58. package/dist/commonjs/utils/padNumber.js +25 -0
  59. package/dist/commonjs/utils/padNumber.js.map +1 -1
  60. package/dist/module/components/DurationScroll/DurationScroll.js +410 -0
  61. package/dist/module/components/DurationScroll/DurationScroll.js.map +1 -0
  62. package/dist/module/components/DurationScroll/index.js +2 -390
  63. package/dist/module/components/DurationScroll/index.js.map +1 -1
  64. package/dist/module/components/DurationScroll/types.js.map +1 -1
  65. package/dist/module/components/Modal/Modal.js +99 -0
  66. package/dist/module/components/Modal/Modal.js.map +1 -0
  67. package/dist/module/components/Modal/index.js +2 -98
  68. package/dist/module/components/Modal/index.js.map +1 -1
  69. package/dist/module/components/TimerPicker/TimerPicker.js +217 -0
  70. package/dist/module/components/TimerPicker/TimerPicker.js.map +1 -0
  71. package/dist/module/components/TimerPicker/index.js +3 -166
  72. package/dist/module/components/TimerPicker/index.js.map +1 -1
  73. package/dist/module/components/TimerPicker/styles.js.map +1 -1
  74. package/dist/module/components/TimerPicker/types.js.map +1 -1
  75. package/dist/module/components/TimerPickerModal/TimerPickerModal.js +135 -0
  76. package/dist/module/components/TimerPickerModal/TimerPickerModal.js.map +1 -0
  77. package/dist/module/components/TimerPickerModal/index.js +3 -130
  78. package/dist/module/components/TimerPickerModal/index.js.map +1 -1
  79. package/dist/module/components/TimerPickerModal/types.js.map +1 -1
  80. package/dist/module/index.js +2 -6
  81. package/dist/module/index.js.map +1 -1
  82. package/dist/module/tests/DurationScroll.test.js +94 -0
  83. package/dist/module/tests/DurationScroll.test.js.map +1 -1
  84. package/dist/module/tests/Modal.test.js +80 -3
  85. package/dist/module/tests/Modal.test.js.map +1 -1
  86. package/dist/module/tests/TimerPicker.test.js +119 -1
  87. package/dist/module/tests/TimerPicker.test.js.map +1 -1
  88. package/dist/module/tests/TimerPickerModal.test.js +121 -1
  89. package/dist/module/tests/TimerPickerModal.test.js.map +1 -1
  90. package/dist/module/tests/colorToRgba.test.js +174 -0
  91. package/dist/module/tests/colorToRgba.test.js.map +1 -0
  92. package/dist/module/tests/generateNumbers.test.js +348 -0
  93. package/dist/module/tests/generateNumbers.test.js.map +1 -0
  94. package/dist/module/tests/getAdjustedLimit.test.js +322 -0
  95. package/dist/module/tests/getAdjustedLimit.test.js.map +1 -0
  96. package/dist/module/tests/getDurationAndIndexFromScrollOffset.test.js +422 -0
  97. package/dist/module/tests/getDurationAndIndexFromScrollOffset.test.js.map +1 -0
  98. package/dist/module/tests/getInitialScrollIndex.test.js +394 -0
  99. package/dist/module/tests/getInitialScrollIndex.test.js.map +1 -0
  100. package/dist/module/tests/getSafeInitialValue.test.js +495 -0
  101. package/dist/module/tests/getSafeInitialValue.test.js.map +1 -0
  102. package/dist/module/tests/padNumber.test.js +299 -0
  103. package/dist/module/tests/padNumber.test.js.map +1 -0
  104. package/dist/module/utils/colorToRgba.js +40 -4
  105. package/dist/module/utils/colorToRgba.js.map +1 -1
  106. package/dist/module/utils/generateNumbers.js +68 -0
  107. package/dist/module/utils/generateNumbers.js.map +1 -1
  108. package/dist/module/utils/getAdjustedLimit.js +28 -3
  109. package/dist/module/utils/getAdjustedLimit.js.map +1 -1
  110. package/dist/module/utils/getDurationAndIndexFromScrollOffset.js +38 -0
  111. package/dist/module/utils/getDurationAndIndexFromScrollOffset.js.map +1 -1
  112. package/dist/module/utils/getInitialScrollIndex.js +38 -0
  113. package/dist/module/utils/getInitialScrollIndex.js.map +1 -1
  114. package/dist/module/utils/getSafeInitialValue.js +28 -0
  115. package/dist/module/utils/getSafeInitialValue.js.map +1 -1
  116. package/dist/module/utils/padNumber.js +25 -0
  117. package/dist/module/utils/padNumber.js.map +1 -1
  118. package/dist/typescript/components/DurationScroll/DurationScroll.d.ts +4 -0
  119. package/dist/typescript/components/DurationScroll/index.d.ts +2 -4
  120. package/dist/typescript/components/DurationScroll/types.d.ts +13 -9
  121. package/dist/typescript/components/Modal/Modal.d.ts +5 -0
  122. package/dist/typescript/components/Modal/index.d.ts +2 -5
  123. package/dist/typescript/components/TimerPicker/TimerPicker.d.ts +4 -0
  124. package/dist/typescript/components/TimerPicker/index.d.ts +3 -4
  125. package/dist/typescript/components/TimerPicker/styles.d.ts +922 -771
  126. package/dist/typescript/components/TimerPicker/types.d.ts +26 -10
  127. package/dist/typescript/components/TimerPickerModal/TimerPickerModal.d.ts +4 -0
  128. package/dist/typescript/components/TimerPickerModal/index.d.ts +3 -4
  129. package/dist/typescript/components/TimerPickerModal/styles.d.ts +570 -474
  130. package/dist/typescript/components/TimerPickerModal/types.d.ts +8 -5
  131. package/dist/typescript/index.d.ts +2 -6
  132. package/dist/typescript/utils/colorToRgba.d.ts +34 -0
  133. package/dist/typescript/utils/generateNumbers.d.ts +66 -0
  134. package/dist/typescript/utils/getAdjustedLimit.d.ts +27 -2
  135. package/dist/typescript/utils/getDurationAndIndexFromScrollOffset.d.ts +38 -0
  136. package/dist/typescript/utils/getInitialScrollIndex.d.ts +38 -0
  137. package/dist/typescript/utils/getSafeInitialValue.d.ts +29 -0
  138. package/dist/typescript/utils/padNumber.d.ts +25 -0
  139. package/package.json +12 -30
@@ -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":[]}