react-native-timer-picker 2.2.0 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -35
- package/dist/commonjs/components/TimerPicker/TimerPicker.js +20 -9
- package/dist/commonjs/components/TimerPicker/TimerPicker.js.map +1 -1
- package/dist/commonjs/components/TimerPicker/types.js.map +1 -1
- package/dist/commonjs/tests/DurationScroll.test.js +94 -0
- package/dist/commonjs/tests/DurationScroll.test.js.map +1 -1
- package/dist/commonjs/tests/Modal.test.js +79 -2
- package/dist/commonjs/tests/Modal.test.js.map +1 -1
- package/dist/commonjs/tests/TimerPicker.test.js +115 -0
- package/dist/commonjs/tests/TimerPicker.test.js.map +1 -1
- package/dist/commonjs/tests/TimerPickerModal.test.js +120 -0
- package/dist/commonjs/tests/TimerPickerModal.test.js.map +1 -1
- package/dist/commonjs/tests/colorToRgba.test.js +176 -0
- package/dist/commonjs/tests/colorToRgba.test.js.map +1 -0
- package/dist/commonjs/tests/generateNumbers.test.js +350 -0
- package/dist/commonjs/tests/generateNumbers.test.js.map +1 -0
- package/dist/commonjs/tests/getAdjustedLimit.test.js +324 -0
- package/dist/commonjs/tests/getAdjustedLimit.test.js.map +1 -0
- package/dist/commonjs/tests/getDurationAndIndexFromScrollOffset.test.js +424 -0
- package/dist/commonjs/tests/getDurationAndIndexFromScrollOffset.test.js.map +1 -0
- package/dist/commonjs/tests/getInitialScrollIndex.test.js +396 -0
- package/dist/commonjs/tests/getInitialScrollIndex.test.js.map +1 -0
- package/dist/commonjs/tests/getSafeInitialValue.test.js +497 -0
- package/dist/commonjs/tests/getSafeInitialValue.test.js.map +1 -0
- package/dist/commonjs/tests/padNumber.test.js +301 -0
- package/dist/commonjs/tests/padNumber.test.js.map +1 -0
- package/dist/commonjs/utils/colorToRgba.js +5 -0
- package/dist/commonjs/utils/colorToRgba.js.map +1 -1
- package/dist/commonjs/utils/getAdjustedLimit.js +3 -3
- package/dist/commonjs/utils/getAdjustedLimit.js.map +1 -1
- package/dist/module/components/TimerPicker/TimerPicker.js +20 -9
- package/dist/module/components/TimerPicker/TimerPicker.js.map +1 -1
- package/dist/module/components/TimerPicker/types.js.map +1 -1
- package/dist/module/tests/DurationScroll.test.js +94 -0
- package/dist/module/tests/DurationScroll.test.js.map +1 -1
- package/dist/module/tests/Modal.test.js +80 -3
- package/dist/module/tests/Modal.test.js.map +1 -1
- package/dist/module/tests/TimerPicker.test.js +115 -0
- package/dist/module/tests/TimerPicker.test.js.map +1 -1
- package/dist/module/tests/TimerPickerModal.test.js +121 -1
- package/dist/module/tests/TimerPickerModal.test.js.map +1 -1
- package/dist/module/tests/colorToRgba.test.js +174 -0
- package/dist/module/tests/colorToRgba.test.js.map +1 -0
- package/dist/module/tests/generateNumbers.test.js +348 -0
- package/dist/module/tests/generateNumbers.test.js.map +1 -0
- package/dist/module/tests/getAdjustedLimit.test.js +322 -0
- package/dist/module/tests/getAdjustedLimit.test.js.map +1 -0
- package/dist/module/tests/getDurationAndIndexFromScrollOffset.test.js +422 -0
- package/dist/module/tests/getDurationAndIndexFromScrollOffset.test.js.map +1 -0
- package/dist/module/tests/getInitialScrollIndex.test.js +394 -0
- package/dist/module/tests/getInitialScrollIndex.test.js.map +1 -0
- package/dist/module/tests/getSafeInitialValue.test.js +495 -0
- package/dist/module/tests/getSafeInitialValue.test.js.map +1 -0
- package/dist/module/tests/padNumber.test.js +299 -0
- package/dist/module/tests/padNumber.test.js.map +1 -0
- package/dist/module/utils/colorToRgba.js +5 -0
- package/dist/module/utils/colorToRgba.js.map +1 -1
- package/dist/module/utils/getAdjustedLimit.js +3 -3
- package/dist/module/utils/getAdjustedLimit.js.map +1 -1
- package/dist/typescript/components/TimerPicker/styles.d.ts +0 -247
- package/dist/typescript/components/TimerPicker/types.d.ts +4 -4
- package/dist/typescript/components/TimerPickerModal/styles.d.ts +0 -152
- package/package.json +3 -4
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
import { padNumber } from "../utils/padNumber";
|
|
2
|
+
describe("padNumber", () => {
|
|
3
|
+
describe("padding with zero", () => {
|
|
4
|
+
it("pads single digit with zero", () => {
|
|
5
|
+
expect(padNumber(0, {
|
|
6
|
+
padWithZero: true
|
|
7
|
+
})).toBe("00");
|
|
8
|
+
expect(padNumber(1, {
|
|
9
|
+
padWithZero: true
|
|
10
|
+
})).toBe("01");
|
|
11
|
+
expect(padNumber(5, {
|
|
12
|
+
padWithZero: true
|
|
13
|
+
})).toBe("05");
|
|
14
|
+
expect(padNumber(9, {
|
|
15
|
+
padWithZero: true
|
|
16
|
+
})).toBe("09");
|
|
17
|
+
});
|
|
18
|
+
it("does not pad double digits", () => {
|
|
19
|
+
expect(padNumber(10, {
|
|
20
|
+
padWithZero: true
|
|
21
|
+
})).toBe("10");
|
|
22
|
+
expect(padNumber(15, {
|
|
23
|
+
padWithZero: true
|
|
24
|
+
})).toBe("15");
|
|
25
|
+
expect(padNumber(99, {
|
|
26
|
+
padWithZero: true
|
|
27
|
+
})).toBe("99");
|
|
28
|
+
});
|
|
29
|
+
it("does not pad triple digits", () => {
|
|
30
|
+
expect(padNumber(100, {
|
|
31
|
+
padWithZero: true
|
|
32
|
+
})).toBe("100");
|
|
33
|
+
expect(padNumber(255, {
|
|
34
|
+
padWithZero: true
|
|
35
|
+
})).toBe("255");
|
|
36
|
+
expect(padNumber(999, {
|
|
37
|
+
padWithZero: true
|
|
38
|
+
})).toBe("999");
|
|
39
|
+
});
|
|
40
|
+
it("handles very large numbers", () => {
|
|
41
|
+
expect(padNumber(1000, {
|
|
42
|
+
padWithZero: true
|
|
43
|
+
})).toBe("1000");
|
|
44
|
+
expect(padNumber(99999, {
|
|
45
|
+
padWithZero: true
|
|
46
|
+
})).toBe("99999");
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
describe("padding with space", () => {
|
|
50
|
+
it("pads single digit with space", () => {
|
|
51
|
+
expect(padNumber(0, {
|
|
52
|
+
padWithZero: false
|
|
53
|
+
})).toBe(" 0");
|
|
54
|
+
expect(padNumber(1, {
|
|
55
|
+
padWithZero: false
|
|
56
|
+
})).toBe(" 1");
|
|
57
|
+
expect(padNumber(5, {
|
|
58
|
+
padWithZero: false
|
|
59
|
+
})).toBe(" 5");
|
|
60
|
+
expect(padNumber(9, {
|
|
61
|
+
padWithZero: false
|
|
62
|
+
})).toBe(" 9");
|
|
63
|
+
});
|
|
64
|
+
it("does not pad double digits", () => {
|
|
65
|
+
expect(padNumber(10, {
|
|
66
|
+
padWithZero: false
|
|
67
|
+
})).toBe("10");
|
|
68
|
+
expect(padNumber(15, {
|
|
69
|
+
padWithZero: false
|
|
70
|
+
})).toBe("15");
|
|
71
|
+
expect(padNumber(99, {
|
|
72
|
+
padWithZero: false
|
|
73
|
+
})).toBe("99");
|
|
74
|
+
});
|
|
75
|
+
it("does not pad triple digits", () => {
|
|
76
|
+
expect(padNumber(100, {
|
|
77
|
+
padWithZero: false
|
|
78
|
+
})).toBe("100");
|
|
79
|
+
expect(padNumber(255, {
|
|
80
|
+
padWithZero: false
|
|
81
|
+
})).toBe("255");
|
|
82
|
+
expect(padNumber(999, {
|
|
83
|
+
padWithZero: false
|
|
84
|
+
})).toBe("999");
|
|
85
|
+
});
|
|
86
|
+
it("handles very large numbers", () => {
|
|
87
|
+
expect(padNumber(1000, {
|
|
88
|
+
padWithZero: false
|
|
89
|
+
})).toBe("1000");
|
|
90
|
+
expect(padNumber(99999, {
|
|
91
|
+
padWithZero: false
|
|
92
|
+
})).toBe("99999");
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
describe("no options provided", () => {
|
|
96
|
+
it("defaults to space padding for single digits", () => {
|
|
97
|
+
expect(padNumber(0)).toBe(" 0");
|
|
98
|
+
expect(padNumber(1)).toBe(" 1");
|
|
99
|
+
expect(padNumber(5)).toBe(" 5");
|
|
100
|
+
expect(padNumber(9)).toBe(" 9");
|
|
101
|
+
});
|
|
102
|
+
it("does not pad double digits", () => {
|
|
103
|
+
expect(padNumber(10)).toBe("10");
|
|
104
|
+
expect(padNumber(15)).toBe("15");
|
|
105
|
+
expect(padNumber(99)).toBe("99");
|
|
106
|
+
});
|
|
107
|
+
it("does not pad triple digits", () => {
|
|
108
|
+
expect(padNumber(100)).toBe("100");
|
|
109
|
+
expect(padNumber(255)).toBe("255");
|
|
110
|
+
expect(padNumber(999)).toBe("999");
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
describe("undefined padWithZero option", () => {
|
|
114
|
+
it("defaults to space padding", () => {
|
|
115
|
+
expect(padNumber(0, {})).toBe(" 0");
|
|
116
|
+
expect(padNumber(5, {})).toBe(" 5");
|
|
117
|
+
expect(padNumber(9, {})).toBe(" 9");
|
|
118
|
+
});
|
|
119
|
+
it("does not pad double digits", () => {
|
|
120
|
+
expect(padNumber(10, {})).toBe("10");
|
|
121
|
+
expect(padNumber(50, {})).toBe("50");
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
describe("edge cases at boundary", () => {
|
|
125
|
+
it("handles value exactly 9 (last single digit)", () => {
|
|
126
|
+
expect(padNumber(9, {
|
|
127
|
+
padWithZero: true
|
|
128
|
+
})).toBe("09");
|
|
129
|
+
expect(padNumber(9, {
|
|
130
|
+
padWithZero: false
|
|
131
|
+
})).toBe(" 9");
|
|
132
|
+
expect(padNumber(9)).toBe(" 9");
|
|
133
|
+
});
|
|
134
|
+
it("handles value exactly 10 (first double digit)", () => {
|
|
135
|
+
expect(padNumber(10, {
|
|
136
|
+
padWithZero: true
|
|
137
|
+
})).toBe("10");
|
|
138
|
+
expect(padNumber(10, {
|
|
139
|
+
padWithZero: false
|
|
140
|
+
})).toBe("10");
|
|
141
|
+
expect(padNumber(10)).toBe("10");
|
|
142
|
+
});
|
|
143
|
+
it("handles value exactly 0", () => {
|
|
144
|
+
expect(padNumber(0, {
|
|
145
|
+
padWithZero: true
|
|
146
|
+
})).toBe("00");
|
|
147
|
+
expect(padNumber(0, {
|
|
148
|
+
padWithZero: false
|
|
149
|
+
})).toBe(" 0");
|
|
150
|
+
expect(padNumber(0)).toBe(" 0");
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
describe("real-world scenarios", () => {
|
|
154
|
+
it("formats hours for 12-hour display", () => {
|
|
155
|
+
expect(padNumber(1, {
|
|
156
|
+
padWithZero: true
|
|
157
|
+
})).toBe("01");
|
|
158
|
+
expect(padNumber(12, {
|
|
159
|
+
padWithZero: true
|
|
160
|
+
})).toBe("12");
|
|
161
|
+
});
|
|
162
|
+
it("formats hours for 24-hour display", () => {
|
|
163
|
+
expect(padNumber(0, {
|
|
164
|
+
padWithZero: true
|
|
165
|
+
})).toBe("00");
|
|
166
|
+
expect(padNumber(9, {
|
|
167
|
+
padWithZero: true
|
|
168
|
+
})).toBe("09");
|
|
169
|
+
expect(padNumber(23, {
|
|
170
|
+
padWithZero: true
|
|
171
|
+
})).toBe("23");
|
|
172
|
+
});
|
|
173
|
+
it("formats minutes", () => {
|
|
174
|
+
expect(padNumber(0, {
|
|
175
|
+
padWithZero: true
|
|
176
|
+
})).toBe("00");
|
|
177
|
+
expect(padNumber(5, {
|
|
178
|
+
padWithZero: true
|
|
179
|
+
})).toBe("05");
|
|
180
|
+
expect(padNumber(30, {
|
|
181
|
+
padWithZero: true
|
|
182
|
+
})).toBe("30");
|
|
183
|
+
expect(padNumber(59, {
|
|
184
|
+
padWithZero: true
|
|
185
|
+
})).toBe("59");
|
|
186
|
+
});
|
|
187
|
+
it("formats seconds", () => {
|
|
188
|
+
expect(padNumber(0, {
|
|
189
|
+
padWithZero: true
|
|
190
|
+
})).toBe("00");
|
|
191
|
+
expect(padNumber(9, {
|
|
192
|
+
padWithZero: true
|
|
193
|
+
})).toBe("09");
|
|
194
|
+
expect(padNumber(45, {
|
|
195
|
+
padWithZero: true
|
|
196
|
+
})).toBe("45");
|
|
197
|
+
expect(padNumber(59, {
|
|
198
|
+
padWithZero: true
|
|
199
|
+
})).toBe("59");
|
|
200
|
+
});
|
|
201
|
+
it("formats days without padding preference", () => {
|
|
202
|
+
expect(padNumber(1, {
|
|
203
|
+
padWithZero: false
|
|
204
|
+
})).toBe(" 1");
|
|
205
|
+
expect(padNumber(7, {
|
|
206
|
+
padWithZero: false
|
|
207
|
+
})).toBe(" 7");
|
|
208
|
+
expect(padNumber(30, {
|
|
209
|
+
padWithZero: false
|
|
210
|
+
})).toBe("30");
|
|
211
|
+
expect(padNumber(365, {
|
|
212
|
+
padWithZero: false
|
|
213
|
+
})).toBe("365");
|
|
214
|
+
});
|
|
215
|
+
});
|
|
216
|
+
describe("all single digits", () => {
|
|
217
|
+
it("correctly pads all single digits 0-9 with zero", () => {
|
|
218
|
+
for (let i = 0; i < 10; i++) {
|
|
219
|
+
const result = padNumber(i, {
|
|
220
|
+
padWithZero: true
|
|
221
|
+
});
|
|
222
|
+
expect(result).toBe(`0${i}`);
|
|
223
|
+
expect(result).toHaveLength(2);
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
it("correctly pads all single digits 0-9 with space", () => {
|
|
227
|
+
for (let i = 0; i < 10; i++) {
|
|
228
|
+
const result = padNumber(i, {
|
|
229
|
+
padWithZero: false
|
|
230
|
+
});
|
|
231
|
+
expect(result).toBe(` ${i}`);
|
|
232
|
+
expect(result).toHaveLength(2);
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
});
|
|
236
|
+
describe("return type", () => {
|
|
237
|
+
it("always returns a string", () => {
|
|
238
|
+
expect(typeof padNumber(0, {
|
|
239
|
+
padWithZero: true
|
|
240
|
+
})).toBe("string");
|
|
241
|
+
expect(typeof padNumber(5, {
|
|
242
|
+
padWithZero: true
|
|
243
|
+
})).toBe("string");
|
|
244
|
+
expect(typeof padNumber(10, {
|
|
245
|
+
padWithZero: true
|
|
246
|
+
})).toBe("string");
|
|
247
|
+
expect(typeof padNumber(100, {
|
|
248
|
+
padWithZero: true
|
|
249
|
+
})).toBe("string");
|
|
250
|
+
});
|
|
251
|
+
});
|
|
252
|
+
describe("string length", () => {
|
|
253
|
+
it("returns 2-character string for single digits", () => {
|
|
254
|
+
expect(padNumber(0, {
|
|
255
|
+
padWithZero: true
|
|
256
|
+
})).toHaveLength(2);
|
|
257
|
+
expect(padNumber(5, {
|
|
258
|
+
padWithZero: true
|
|
259
|
+
})).toHaveLength(2);
|
|
260
|
+
expect(padNumber(9, {
|
|
261
|
+
padWithZero: true
|
|
262
|
+
})).toHaveLength(2);
|
|
263
|
+
});
|
|
264
|
+
it("returns 2-character string for single digits with space", () => {
|
|
265
|
+
expect(padNumber(0, {
|
|
266
|
+
padWithZero: false
|
|
267
|
+
})).toHaveLength(2);
|
|
268
|
+
expect(padNumber(5, {
|
|
269
|
+
padWithZero: false
|
|
270
|
+
})).toHaveLength(2);
|
|
271
|
+
expect(padNumber(9, {
|
|
272
|
+
padWithZero: false
|
|
273
|
+
})).toHaveLength(2);
|
|
274
|
+
});
|
|
275
|
+
it("returns correct length for double digits", () => {
|
|
276
|
+
expect(padNumber(10, {
|
|
277
|
+
padWithZero: true
|
|
278
|
+
})).toHaveLength(2);
|
|
279
|
+
expect(padNumber(50, {
|
|
280
|
+
padWithZero: true
|
|
281
|
+
})).toHaveLength(2);
|
|
282
|
+
expect(padNumber(99, {
|
|
283
|
+
padWithZero: true
|
|
284
|
+
})).toHaveLength(2);
|
|
285
|
+
});
|
|
286
|
+
it("returns correct length for triple digits", () => {
|
|
287
|
+
expect(padNumber(100, {
|
|
288
|
+
padWithZero: true
|
|
289
|
+
})).toHaveLength(3);
|
|
290
|
+
expect(padNumber(500, {
|
|
291
|
+
padWithZero: true
|
|
292
|
+
})).toHaveLength(3);
|
|
293
|
+
expect(padNumber(999, {
|
|
294
|
+
padWithZero: true
|
|
295
|
+
})).toHaveLength(3);
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
});
|
|
299
|
+
//# sourceMappingURL=padNumber.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["padNumber","describe","it","expect","padWithZero","toBe","i","result","toHaveLength"],"sources":["padNumber.test.ts"],"sourcesContent":["import { padNumber } from \"../utils/padNumber\";\n\ndescribe(\"padNumber\", () => {\n describe(\"padding with zero\", () => {\n it(\"pads single digit with zero\", () => {\n expect(padNumber(0, { padWithZero: true })).toBe(\"00\");\n expect(padNumber(1, { padWithZero: true })).toBe(\"01\");\n expect(padNumber(5, { padWithZero: true })).toBe(\"05\");\n expect(padNumber(9, { padWithZero: true })).toBe(\"09\");\n });\n\n it(\"does not pad double digits\", () => {\n expect(padNumber(10, { padWithZero: true })).toBe(\"10\");\n expect(padNumber(15, { padWithZero: true })).toBe(\"15\");\n expect(padNumber(99, { padWithZero: true })).toBe(\"99\");\n });\n\n it(\"does not pad triple digits\", () => {\n expect(padNumber(100, { padWithZero: true })).toBe(\"100\");\n expect(padNumber(255, { padWithZero: true })).toBe(\"255\");\n expect(padNumber(999, { padWithZero: true })).toBe(\"999\");\n });\n\n it(\"handles very large numbers\", () => {\n expect(padNumber(1000, { padWithZero: true })).toBe(\"1000\");\n expect(padNumber(99999, { padWithZero: true })).toBe(\"99999\");\n });\n });\n\n describe(\"padding with space\", () => {\n it(\"pads single digit with space\", () => {\n expect(padNumber(0, { padWithZero: false })).toBe(\" 0\");\n expect(padNumber(1, { padWithZero: false })).toBe(\" 1\");\n expect(padNumber(5, { padWithZero: false })).toBe(\" 5\");\n expect(padNumber(9, { padWithZero: false })).toBe(\" 9\");\n });\n\n it(\"does not pad double digits\", () => {\n expect(padNumber(10, { padWithZero: false })).toBe(\"10\");\n expect(padNumber(15, { padWithZero: false })).toBe(\"15\");\n expect(padNumber(99, { padWithZero: false })).toBe(\"99\");\n });\n\n it(\"does not pad triple digits\", () => {\n expect(padNumber(100, { padWithZero: false })).toBe(\"100\");\n expect(padNumber(255, { padWithZero: false })).toBe(\"255\");\n expect(padNumber(999, { padWithZero: false })).toBe(\"999\");\n });\n\n it(\"handles very large numbers\", () => {\n expect(padNumber(1000, { padWithZero: false })).toBe(\"1000\");\n expect(padNumber(99999, { padWithZero: false })).toBe(\"99999\");\n });\n });\n\n describe(\"no options provided\", () => {\n it(\"defaults to space padding for single digits\", () => {\n expect(padNumber(0)).toBe(\" 0\");\n expect(padNumber(1)).toBe(\" 1\");\n expect(padNumber(5)).toBe(\" 5\");\n expect(padNumber(9)).toBe(\" 9\");\n });\n\n it(\"does not pad double digits\", () => {\n expect(padNumber(10)).toBe(\"10\");\n expect(padNumber(15)).toBe(\"15\");\n expect(padNumber(99)).toBe(\"99\");\n });\n\n it(\"does not pad triple digits\", () => {\n expect(padNumber(100)).toBe(\"100\");\n expect(padNumber(255)).toBe(\"255\");\n expect(padNumber(999)).toBe(\"999\");\n });\n });\n\n describe(\"undefined padWithZero option\", () => {\n it(\"defaults to space padding\", () => {\n expect(padNumber(0, {})).toBe(\" 0\");\n expect(padNumber(5, {})).toBe(\" 5\");\n expect(padNumber(9, {})).toBe(\" 9\");\n });\n\n it(\"does not pad double digits\", () => {\n expect(padNumber(10, {})).toBe(\"10\");\n expect(padNumber(50, {})).toBe(\"50\");\n });\n });\n\n describe(\"edge cases at boundary\", () => {\n it(\"handles value exactly 9 (last single digit)\", () => {\n expect(padNumber(9, { padWithZero: true })).toBe(\"09\");\n expect(padNumber(9, { padWithZero: false })).toBe(\" 9\");\n expect(padNumber(9)).toBe(\" 9\");\n });\n\n it(\"handles value exactly 10 (first double digit)\", () => {\n expect(padNumber(10, { padWithZero: true })).toBe(\"10\");\n expect(padNumber(10, { padWithZero: false })).toBe(\"10\");\n expect(padNumber(10)).toBe(\"10\");\n });\n\n it(\"handles value exactly 0\", () => {\n expect(padNumber(0, { padWithZero: true })).toBe(\"00\");\n expect(padNumber(0, { padWithZero: false })).toBe(\" 0\");\n expect(padNumber(0)).toBe(\" 0\");\n });\n });\n\n describe(\"real-world scenarios\", () => {\n it(\"formats hours for 12-hour display\", () => {\n expect(padNumber(1, { padWithZero: true })).toBe(\"01\");\n expect(padNumber(12, { padWithZero: true })).toBe(\"12\");\n });\n\n it(\"formats hours for 24-hour display\", () => {\n expect(padNumber(0, { padWithZero: true })).toBe(\"00\");\n expect(padNumber(9, { padWithZero: true })).toBe(\"09\");\n expect(padNumber(23, { padWithZero: true })).toBe(\"23\");\n });\n\n it(\"formats minutes\", () => {\n expect(padNumber(0, { padWithZero: true })).toBe(\"00\");\n expect(padNumber(5, { padWithZero: true })).toBe(\"05\");\n expect(padNumber(30, { padWithZero: true })).toBe(\"30\");\n expect(padNumber(59, { padWithZero: true })).toBe(\"59\");\n });\n\n it(\"formats seconds\", () => {\n expect(padNumber(0, { padWithZero: true })).toBe(\"00\");\n expect(padNumber(9, { padWithZero: true })).toBe(\"09\");\n expect(padNumber(45, { padWithZero: true })).toBe(\"45\");\n expect(padNumber(59, { padWithZero: true })).toBe(\"59\");\n });\n\n it(\"formats days without padding preference\", () => {\n expect(padNumber(1, { padWithZero: false })).toBe(\" 1\");\n expect(padNumber(7, { padWithZero: false })).toBe(\" 7\");\n expect(padNumber(30, { padWithZero: false })).toBe(\"30\");\n expect(padNumber(365, { padWithZero: false })).toBe(\"365\");\n });\n });\n\n describe(\"all single digits\", () => {\n it(\"correctly pads all single digits 0-9 with zero\", () => {\n for (let i = 0; i < 10; i++) {\n const result = padNumber(i, { padWithZero: true });\n expect(result).toBe(`0${i}`);\n expect(result).toHaveLength(2);\n }\n });\n\n it(\"correctly pads all single digits 0-9 with space\", () => {\n for (let i = 0; i < 10; i++) {\n const result = padNumber(i, { padWithZero: false });\n expect(result).toBe(` ${i}`);\n expect(result).toHaveLength(2);\n }\n });\n });\n\n describe(\"return type\", () => {\n it(\"always returns a string\", () => {\n expect(typeof padNumber(0, { padWithZero: true })).toBe(\"string\");\n expect(typeof padNumber(5, { padWithZero: true })).toBe(\"string\");\n expect(typeof padNumber(10, { padWithZero: true })).toBe(\"string\");\n expect(typeof padNumber(100, { padWithZero: true })).toBe(\"string\");\n });\n });\n\n describe(\"string length\", () => {\n it(\"returns 2-character string for single digits\", () => {\n expect(padNumber(0, { padWithZero: true })).toHaveLength(2);\n expect(padNumber(5, { padWithZero: true })).toHaveLength(2);\n expect(padNumber(9, { padWithZero: true })).toHaveLength(2);\n });\n\n it(\"returns 2-character string for single digits with space\", () => {\n expect(padNumber(0, { padWithZero: false })).toHaveLength(2);\n expect(padNumber(5, { padWithZero: false })).toHaveLength(2);\n expect(padNumber(9, { padWithZero: false })).toHaveLength(2);\n });\n\n it(\"returns correct length for double digits\", () => {\n expect(padNumber(10, { padWithZero: true })).toHaveLength(2);\n expect(padNumber(50, { padWithZero: true })).toHaveLength(2);\n expect(padNumber(99, { padWithZero: true })).toHaveLength(2);\n });\n\n it(\"returns correct length for triple digits\", () => {\n expect(padNumber(100, { padWithZero: true })).toHaveLength(3);\n expect(padNumber(500, { padWithZero: true })).toHaveLength(3);\n expect(padNumber(999, { padWithZero: true })).toHaveLength(3);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -68,6 +68,11 @@ export const colorToRgba = variables => {
|
|
|
68
68
|
const r = parseInt(hexColor.slice(0, 2), 16);
|
|
69
69
|
const g = parseInt(hexColor.slice(2, 4), 16);
|
|
70
70
|
const b = parseInt(hexColor.slice(4, 6), 16);
|
|
71
|
+
|
|
72
|
+
// Validate that all color components are valid numbers
|
|
73
|
+
if (isNaN(r) || isNaN(g) || isNaN(b)) {
|
|
74
|
+
return color; // Return original if malformed
|
|
75
|
+
}
|
|
71
76
|
return `rgba(${r}, ${g}, ${b}, ${opacity})`;
|
|
72
77
|
}
|
|
73
78
|
return color; // Return unchanged if unable to parse
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["colorToRgba","variables","color","opacity","namedColors","transparent","black","white","blue","green","gray","red","startsWith","rgbValues","replace","split","map","value","parseInt","trim","r","g","b","hexColor","slice","length","join"],"sources":["colorToRgba.ts"],"sourcesContent":["/**\n * Converts various color formats to RGBA string representation.\n * This function is specifically required for expo-linear-gradient on iOS to handle transparent colors correctly.\n * It supports named colors, RGB, and hex color formats.\n *\n * @param {Object} variables - The input variables object\n * @param {string} variables.color - The color to convert. Can be:\n * - Named color (e.g., 'transparent', 'black', 'white', 'blue', 'green', 'gray', 'red')\n * - RGB format (e.g., 'rgb(255, 0, 0)')\n * - Hex format (e.g., '#FF0000' or '#F00')\n * @param {number} [variables.opacity=1] - The opacity value between 0 and 1\n *\n * @returns {string} The color in RGBA format (e.g., 'rgba(255, 0, 0, 0.5)')\n *\n * @example\n * // Using named color\n * colorToRgba({ color: 'transparent' })\n * // Returns: 'rgba(0, 0, 0, 0)'\n *\n * @example\n * // Using RGB with custom opacity\n * colorToRgba({ color: 'rgb(255, 0, 0)', opacity: 0.5 })\n * // Returns: 'rgba(255, 0, 0, 0.5)'\n *\n * @example\n * // Using hex color\n * colorToRgba({ color: '#FF0000' })\n * // Returns: 'rgba(255, 0, 0, 1)'\n *\n * @example\n * // Using short hex color\n * colorToRgba({ color: '#F00' })\n * // Returns: 'rgba(255, 0, 0, 1)'\n */\nexport const colorToRgba = (variables: {\n color: string;\n opacity?: number;\n}): string => {\n const { color, opacity = 1 } = variables;\n\n // Handle named colors\n const namedColors: { [key: string]: string } = {\n transparent: \"rgba(0, 0, 0, 0)\",\n black: \"rgba(0, 0, 0, 1)\",\n white: \"rgba(255, 255, 255, 1)\",\n blue: \"rgba(0, 0, 255, 1)\",\n green: \"rgba(0, 128, 0, 1)\",\n gray: \"rgba(128, 128, 128, 1)\",\n red: \"rgba(255, 0, 0, 1)\",\n };\n\n if (color in namedColors) {\n return namedColors[color];\n }\n\n // Handle RGB format\n if (color.startsWith(\"rgb(\")) {\n const rgbValues = color\n .replace(\"rgb(\", \"\")\n .replace(\")\", \"\")\n .split(\",\")\n .map((value) => parseInt(value.trim(), 10));\n const [r, g, b] = rgbValues;\n return `rgba(${r}, ${g}, ${b}, ${opacity})`;\n }\n\n // Handle hex format\n if (color.startsWith(\"#\")) {\n let hexColor = color.slice(1);\n if (hexColor.length === 3) {\n hexColor = hexColor\n .split(\"\")\n .map((value) => value + value)\n .join(\"\");\n }\n const r = parseInt(hexColor.slice(0, 2), 16);\n const g = parseInt(hexColor.slice(2, 4), 16);\n const b = parseInt(hexColor.slice(4, 6), 16);\n return `rgba(${r}, ${g}, ${b}, ${opacity})`;\n }\n\n return color; // Return unchanged if unable to parse\n};\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,WAAW,GAAIC,SAG3B,IAAa;EACV,MAAM;IAAEC,KAAK;IAAEC,OAAO,GAAG;EAAE,CAAC,GAAGF,SAAS;;EAExC;EACA,MAAMG,WAAsC,GAAG;IAC3CC,WAAW,EAAE,kBAAkB;IAC/BC,KAAK,EAAE,kBAAkB;IACzBC,KAAK,EAAE,wBAAwB;IAC/BC,IAAI,EAAE,oBAAoB;IAC1BC,KAAK,EAAE,oBAAoB;IAC3BC,IAAI,EAAE,wBAAwB;IAC9BC,GAAG,EAAE;EACT,CAAC;EAED,IAAIT,KAAK,IAAIE,WAAW,EAAE;IACtB,OAAOA,WAAW,CAACF,KAAK,CAAC;EAC7B;;EAEA;EACA,IAAIA,KAAK,CAACU,UAAU,CAAC,MAAM,CAAC,EAAE;IAC1B,MAAMC,SAAS,GAAGX,KAAK,CAClBY,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CACnBA,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAChBC,KAAK,CAAC,GAAG,CAAC,CACVC,GAAG,CAAEC,KAAK,IAAKC,QAAQ,CAACD,KAAK,CAACE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,CAACC,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC,GAAGT,SAAS;IAC3B,OAAO,QAAQO,CAAC,KAAKC,CAAC,KAAKC,CAAC,KAAKnB,OAAO,GAAG;EAC/C;;EAEA;EACA,IAAID,KAAK,CAACU,UAAU,CAAC,GAAG,CAAC,EAAE;IACvB,IAAIW,QAAQ,GAAGrB,KAAK,CAACsB,KAAK,CAAC,CAAC,CAAC;IAC7B,IAAID,QAAQ,CAACE,MAAM,KAAK,CAAC,EAAE;MACvBF,QAAQ,GAAGA,QAAQ,CACdR,KAAK,CAAC,EAAE,CAAC,CACTC,GAAG,CAAEC,KAAK,IAAKA,KAAK,GAAGA,KAAK,CAAC,CAC7BS,IAAI,CAAC,EAAE,CAAC;IACjB;IACA,MAAMN,CAAC,GAAGF,QAAQ,CAACK,QAAQ,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IAC5C,MAAMH,CAAC,GAAGH,QAAQ,CAACK,QAAQ,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IAC5C,MAAMF,CAAC,GAAGJ,QAAQ,CAACK,QAAQ,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;
|
|
1
|
+
{"version":3,"names":["colorToRgba","variables","color","opacity","namedColors","transparent","black","white","blue","green","gray","red","startsWith","rgbValues","replace","split","map","value","parseInt","trim","r","g","b","hexColor","slice","length","join","isNaN"],"sources":["colorToRgba.ts"],"sourcesContent":["/**\n * Converts various color formats to RGBA string representation.\n * This function is specifically required for expo-linear-gradient on iOS to handle transparent colors correctly.\n * It supports named colors, RGB, and hex color formats.\n *\n * @param {Object} variables - The input variables object\n * @param {string} variables.color - The color to convert. Can be:\n * - Named color (e.g., 'transparent', 'black', 'white', 'blue', 'green', 'gray', 'red')\n * - RGB format (e.g., 'rgb(255, 0, 0)')\n * - Hex format (e.g., '#FF0000' or '#F00')\n * @param {number} [variables.opacity=1] - The opacity value between 0 and 1\n *\n * @returns {string} The color in RGBA format (e.g., 'rgba(255, 0, 0, 0.5)')\n *\n * @example\n * // Using named color\n * colorToRgba({ color: 'transparent' })\n * // Returns: 'rgba(0, 0, 0, 0)'\n *\n * @example\n * // Using RGB with custom opacity\n * colorToRgba({ color: 'rgb(255, 0, 0)', opacity: 0.5 })\n * // Returns: 'rgba(255, 0, 0, 0.5)'\n *\n * @example\n * // Using hex color\n * colorToRgba({ color: '#FF0000' })\n * // Returns: 'rgba(255, 0, 0, 1)'\n *\n * @example\n * // Using short hex color\n * colorToRgba({ color: '#F00' })\n * // Returns: 'rgba(255, 0, 0, 1)'\n */\nexport const colorToRgba = (variables: {\n color: string;\n opacity?: number;\n}): string => {\n const { color, opacity = 1 } = variables;\n\n // Handle named colors\n const namedColors: { [key: string]: string } = {\n transparent: \"rgba(0, 0, 0, 0)\",\n black: \"rgba(0, 0, 0, 1)\",\n white: \"rgba(255, 255, 255, 1)\",\n blue: \"rgba(0, 0, 255, 1)\",\n green: \"rgba(0, 128, 0, 1)\",\n gray: \"rgba(128, 128, 128, 1)\",\n red: \"rgba(255, 0, 0, 1)\",\n };\n\n if (color in namedColors) {\n return namedColors[color];\n }\n\n // Handle RGB format\n if (color.startsWith(\"rgb(\")) {\n const rgbValues = color\n .replace(\"rgb(\", \"\")\n .replace(\")\", \"\")\n .split(\",\")\n .map((value) => parseInt(value.trim(), 10));\n const [r, g, b] = rgbValues;\n return `rgba(${r}, ${g}, ${b}, ${opacity})`;\n }\n\n // Handle hex format\n if (color.startsWith(\"#\")) {\n let hexColor = color.slice(1);\n if (hexColor.length === 3) {\n hexColor = hexColor\n .split(\"\")\n .map((value) => value + value)\n .join(\"\");\n }\n const r = parseInt(hexColor.slice(0, 2), 16);\n const g = parseInt(hexColor.slice(2, 4), 16);\n const b = parseInt(hexColor.slice(4, 6), 16);\n\n // Validate that all color components are valid numbers\n if (isNaN(r) || isNaN(g) || isNaN(b)) {\n return color; // Return original if malformed\n }\n\n return `rgba(${r}, ${g}, ${b}, ${opacity})`;\n }\n\n return color; // Return unchanged if unable to parse\n};\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,WAAW,GAAIC,SAG3B,IAAa;EACV,MAAM;IAAEC,KAAK;IAAEC,OAAO,GAAG;EAAE,CAAC,GAAGF,SAAS;;EAExC;EACA,MAAMG,WAAsC,GAAG;IAC3CC,WAAW,EAAE,kBAAkB;IAC/BC,KAAK,EAAE,kBAAkB;IACzBC,KAAK,EAAE,wBAAwB;IAC/BC,IAAI,EAAE,oBAAoB;IAC1BC,KAAK,EAAE,oBAAoB;IAC3BC,IAAI,EAAE,wBAAwB;IAC9BC,GAAG,EAAE;EACT,CAAC;EAED,IAAIT,KAAK,IAAIE,WAAW,EAAE;IACtB,OAAOA,WAAW,CAACF,KAAK,CAAC;EAC7B;;EAEA;EACA,IAAIA,KAAK,CAACU,UAAU,CAAC,MAAM,CAAC,EAAE;IAC1B,MAAMC,SAAS,GAAGX,KAAK,CAClBY,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CACnBA,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAChBC,KAAK,CAAC,GAAG,CAAC,CACVC,GAAG,CAAEC,KAAK,IAAKC,QAAQ,CAACD,KAAK,CAACE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,CAACC,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC,GAAGT,SAAS;IAC3B,OAAO,QAAQO,CAAC,KAAKC,CAAC,KAAKC,CAAC,KAAKnB,OAAO,GAAG;EAC/C;;EAEA;EACA,IAAID,KAAK,CAACU,UAAU,CAAC,GAAG,CAAC,EAAE;IACvB,IAAIW,QAAQ,GAAGrB,KAAK,CAACsB,KAAK,CAAC,CAAC,CAAC;IAC7B,IAAID,QAAQ,CAACE,MAAM,KAAK,CAAC,EAAE;MACvBF,QAAQ,GAAGA,QAAQ,CACdR,KAAK,CAAC,EAAE,CAAC,CACTC,GAAG,CAAEC,KAAK,IAAKA,KAAK,GAAGA,KAAK,CAAC,CAC7BS,IAAI,CAAC,EAAE,CAAC;IACjB;IACA,MAAMN,CAAC,GAAGF,QAAQ,CAACK,QAAQ,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IAC5C,MAAMH,CAAC,GAAGH,QAAQ,CAACK,QAAQ,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IAC5C,MAAMF,CAAC,GAAGJ,QAAQ,CAACK,QAAQ,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;;IAE5C;IACA,IAAIG,KAAK,CAACP,CAAC,CAAC,IAAIO,KAAK,CAACN,CAAC,CAAC,IAAIM,KAAK,CAACL,CAAC,CAAC,EAAE;MAClC,OAAOpB,KAAK,CAAC,CAAC;IAClB;IAEA,OAAO,QAAQkB,CAAC,KAAKC,CAAC,KAAKC,CAAC,KAAKnB,OAAO,GAAG;EAC/C;EAEA,OAAOD,KAAK,CAAC,CAAC;AAClB,CAAC","ignoreList":[]}
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
*/
|
|
26
26
|
export const getAdjustedLimit = (limit, numberOfItems, interval) => {
|
|
27
27
|
const maxValue = (numberOfItems - 1) * interval;
|
|
28
|
-
if (!limit ||
|
|
28
|
+
if (!limit || limit.max === undefined && limit.min === undefined) {
|
|
29
29
|
return {
|
|
30
30
|
max: maxValue,
|
|
31
31
|
min: 0
|
|
@@ -33,8 +33,8 @@ export const getAdjustedLimit = (limit, numberOfItems, interval) => {
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
// guard against limits that are out of bounds
|
|
36
|
-
const adjustedMaxLimit = limit.max ? Math.min(limit.max, maxValue) : maxValue;
|
|
37
|
-
const adjustedMinLimit = limit.min ? Math.max(limit.min, 0) : 0;
|
|
36
|
+
const adjustedMaxLimit = limit.max !== undefined ? Math.min(limit.max, maxValue) : maxValue;
|
|
37
|
+
const adjustedMinLimit = limit.min !== undefined ? Math.max(limit.min, 0) : 0;
|
|
38
38
|
|
|
39
39
|
// guard against invalid limits
|
|
40
40
|
if (adjustedMaxLimit < adjustedMinLimit) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getAdjustedLimit","limit","numberOfItems","interval","maxValue","max","min","adjustedMaxLimit","Math","adjustedMinLimit"],"sources":["getAdjustedLimit.ts"],"sourcesContent":["import type { Limit } from \"../components/DurationScroll/types\";\n\n/**\n * Adjusts and validates the min/max limits for a scrollable number picker.\n * Ensures limits are within valid bounds and handles edge cases.\n *\n * @param {Limit | undefined} limit - The input limit object containing optional min and max values\n * @param {number} numberOfItems - Total number of items in the picker\n * @param {number} interval - The interval between consecutive numbers\n *\n * @returns {{ max: number; min: number }} An object containing the adjusted min and max limits\n *\n * @example\n * // With valid limits\n * getAdjustedLimit({ min: 5, max: 15 }, 20, 1)\n * // Returns: { max: 15, min: 5 }\n *\n * @example\n * // With out-of-bounds limits\n * getAdjustedLimit({ min: -5, max: 25 }, 20, 1)\n * // Returns: { max: 19, min: 0 }\n *\n * @example\n * // With invalid limits (max < min)\n * getAdjustedLimit({ min: 15, max: 5 }, 20, 1)\n * // Returns: { max: 19, min: 0 }\n */\nexport const getAdjustedLimit = (\n limit: Limit | undefined,\n numberOfItems: number,\n interval: number\n): {\n max: number;\n min: number;\n} => {\n const maxValue = (numberOfItems - 1) * interval;\n\n if (!limit || (
|
|
1
|
+
{"version":3,"names":["getAdjustedLimit","limit","numberOfItems","interval","maxValue","max","undefined","min","adjustedMaxLimit","Math","adjustedMinLimit"],"sources":["getAdjustedLimit.ts"],"sourcesContent":["import type { Limit } from \"../components/DurationScroll/types\";\n\n/**\n * Adjusts and validates the min/max limits for a scrollable number picker.\n * Ensures limits are within valid bounds and handles edge cases.\n *\n * @param {Limit | undefined} limit - The input limit object containing optional min and max values\n * @param {number} numberOfItems - Total number of items in the picker\n * @param {number} interval - The interval between consecutive numbers\n *\n * @returns {{ max: number; min: number }} An object containing the adjusted min and max limits\n *\n * @example\n * // With valid limits\n * getAdjustedLimit({ min: 5, max: 15 }, 20, 1)\n * // Returns: { max: 15, min: 5 }\n *\n * @example\n * // With out-of-bounds limits\n * getAdjustedLimit({ min: -5, max: 25 }, 20, 1)\n * // Returns: { max: 19, min: 0 }\n *\n * @example\n * // With invalid limits (max < min)\n * getAdjustedLimit({ min: 15, max: 5 }, 20, 1)\n * // Returns: { max: 19, min: 0 }\n */\nexport const getAdjustedLimit = (\n limit: Limit | undefined,\n numberOfItems: number,\n interval: number\n): {\n max: number;\n min: number;\n} => {\n const maxValue = (numberOfItems - 1) * interval;\n\n if (!limit || (limit.max === undefined && limit.min === undefined)) {\n return {\n max: maxValue,\n min: 0,\n };\n }\n\n // guard against limits that are out of bounds\n const adjustedMaxLimit = limit.max !== undefined\n ? Math.min(limit.max, maxValue)\n : maxValue;\n const adjustedMinLimit = limit.min !== undefined ? Math.max(limit.min, 0) : 0;\n\n // guard against invalid limits\n if (adjustedMaxLimit < adjustedMinLimit) {\n return {\n max: maxValue,\n min: 0,\n };\n }\n\n return {\n max: adjustedMaxLimit,\n min: adjustedMinLimit,\n };\n};\n"],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,gBAAgB,GAAGA,CAC5BC,KAAwB,EACxBC,aAAqB,EACrBC,QAAgB,KAIf;EACD,MAAMC,QAAQ,GAAG,CAACF,aAAa,GAAG,CAAC,IAAIC,QAAQ;EAE/C,IAAI,CAACF,KAAK,IAAKA,KAAK,CAACI,GAAG,KAAKC,SAAS,IAAIL,KAAK,CAACM,GAAG,KAAKD,SAAU,EAAE;IAChE,OAAO;MACHD,GAAG,EAAED,QAAQ;MACbG,GAAG,EAAE;IACT,CAAC;EACL;;EAEA;EACA,MAAMC,gBAAgB,GAAGP,KAAK,CAACI,GAAG,KAAKC,SAAS,GAC1CG,IAAI,CAACF,GAAG,CAACN,KAAK,CAACI,GAAG,EAAED,QAAQ,CAAC,GAC7BA,QAAQ;EACd,MAAMM,gBAAgB,GAAGT,KAAK,CAACM,GAAG,KAAKD,SAAS,GAAGG,IAAI,CAACJ,GAAG,CAACJ,KAAK,CAACM,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;;EAE7E;EACA,IAAIC,gBAAgB,GAAGE,gBAAgB,EAAE;IACrC,OAAO;MACHL,GAAG,EAAED,QAAQ;MACbG,GAAG,EAAE;IACT,CAAC;EACL;EAEA,OAAO;IACHF,GAAG,EAAEG,gBAAgB;IACrBD,GAAG,EAAEG;EACT,CAAC;AACL,CAAC","ignoreList":[]}
|