-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpreparePaddings.ts
More file actions
85 lines (76 loc) · 2.42 KB
/
preparePaddings.ts
File metadata and controls
85 lines (76 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import randomColor from 'randomcolor'
import { ViewStyle } from 'react-native'
import { typeSafePaddings } from './typeSafePaddings'
import type { Padding } from '../types/Padding'
export const preparePaddings = (
paddings: Padding,
debug?: boolean
): ViewStyle => {
const color = randomColor()
// TODO || -> ??
if (typeof paddings === 'number' || typeof paddings === 'string') {
return debug
? { borderWidth: typeSafePaddings(paddings), borderColor: color }
: { padding: typeSafePaddings(paddings) }
}
switch (paddings.length) {
case 1: {
return debug
? {
borderWidth: typeSafePaddings(paddings[0]),
borderColor: color,
}
: {
padding: typeSafePaddings(paddings[0]),
}
}
case 2: {
return debug
? {
borderTopWidth: typeSafePaddings(paddings[0]),
borderBottomWidth: typeSafePaddings(paddings[0]),
borderLeftWidth: typeSafePaddings(paddings[1]),
borderRightWidth: typeSafePaddings(paddings[1]),
borderColor: color,
}
: {
paddingVertical: typeSafePaddings(paddings[0]),
paddingHorizontal: typeSafePaddings(paddings[1]),
}
}
case 3: {
return debug
? {
borderTopWidth: typeSafePaddings(paddings[0]),
borderLeftWidth: typeSafePaddings(paddings[1]),
borderRightWidth: typeSafePaddings(paddings[1]),
borderBottomWidth: typeSafePaddings(paddings[2]),
borderColor: color,
}
: {
paddingTop: typeSafePaddings(paddings[0]),
paddingHorizontal: typeSafePaddings(paddings[1]),
paddingBottom: typeSafePaddings(paddings[2]),
}
}
case 4: {
return debug
? {
borderTopWidth: typeSafePaddings(paddings[0]),
borderRightWidth: typeSafePaddings(paddings[1]),
borderBottomWidth: typeSafePaddings(paddings[2]),
borderLeftWidth: typeSafePaddings(paddings[3]),
borderColor: color,
}
: {
paddingTop: typeSafePaddings(paddings[0]),
paddingRight: typeSafePaddings(paddings[1]),
paddingBottom: typeSafePaddings(paddings[2]),
paddingLeft: typeSafePaddings(paddings[3]),
}
}
default: {
throw new Error('Unsupported padding value')
}
}
}