|
1 | 1 | import { Animated } from 'react-native'; |
2 | 2 |
|
3 | | -import color from 'color'; |
4 | | - |
5 | 3 | export const isAnimatedValue = ( |
6 | 4 | it: number | string | Animated.AnimatedInterpolation<number | string> |
7 | 5 | ): it is Animated.Value => it instanceof Animated.Value; |
8 | | - |
9 | | -// TODO: Revist this function to see if it's still needed |
10 | | -export default function overlay<T extends Animated.Value | number>( |
11 | | - elevation: T, |
12 | | - surfaceColor: string |
13 | | -): T extends number ? string : Animated.AnimatedInterpolation<number | string> { |
14 | | - if (isAnimatedValue(elevation)) { |
15 | | - const inputRange = [0, 1, 2, 3, 8, 24]; |
16 | | - |
17 | | - // @ts-expect-error: TS doesn't seem to refine the type correctly |
18 | | - return elevation.interpolate({ |
19 | | - inputRange, |
20 | | - outputRange: inputRange.map((elevation) => { |
21 | | - return calculateColor(surfaceColor, elevation); |
22 | | - }), |
23 | | - }); |
24 | | - } |
25 | | - |
26 | | - // @ts-expect-error: TS doesn't seem to refine the type correctly |
27 | | - return calculateColor(surfaceColor, elevation); |
28 | | -} |
29 | | - |
30 | | -function calculateColor(surfaceColor: string, elevation: number = 1) { |
31 | | - let overlayTransparency: number; |
32 | | - if (elevation >= 1 && elevation <= 24) { |
33 | | - overlayTransparency = elevationOverlayTransparency[elevation]; |
34 | | - } else if (elevation > 24) { |
35 | | - overlayTransparency = elevationOverlayTransparency[24]; |
36 | | - } else { |
37 | | - overlayTransparency = elevationOverlayTransparency[1]; |
38 | | - } |
39 | | - return color(surfaceColor) |
40 | | - .mix(color('white'), overlayTransparency * 0.01) |
41 | | - .hex(); |
42 | | -} |
43 | | - |
44 | | -const elevationOverlayTransparency: Record<string, number> = { |
45 | | - 1: 5, |
46 | | - 2: 7, |
47 | | - 3: 8, |
48 | | - 4: 9, |
49 | | - 5: 10, |
50 | | - 6: 11, |
51 | | - 7: 11.5, |
52 | | - 8: 12, |
53 | | - 9: 12.5, |
54 | | - 10: 13, |
55 | | - 11: 13.5, |
56 | | - 12: 14, |
57 | | - 13: 14.25, |
58 | | - 14: 14.5, |
59 | | - 15: 14.75, |
60 | | - 16: 15, |
61 | | - 17: 15.12, |
62 | | - 18: 15.24, |
63 | | - 19: 15.36, |
64 | | - 20: 15.48, |
65 | | - 21: 15.6, |
66 | | - 22: 15.72, |
67 | | - 23: 15.84, |
68 | | - 24: 16, |
69 | | -}; |
0 commit comments