1
- import * as RN from "react-native" ;
2
-
3
- declare module "react-native-size-matters" {
4
- interface StringifiedStyles {
5
- fontSize ?: string | number ;
6
- letterSpacing ?: string | number ;
7
- lineHeight ?: string | number ;
8
- textShadowRadius ?: string | number ;
9
- borderBottomLeftRadius ?: string | number ;
10
- borderBottomRightRadius ?: string | number ;
11
- borderTopLeftRadius ?: string | number ;
12
- borderTopRightRadius ?: string | number ;
13
- borderBottomWidth ?: string | number ;
14
- borderTopWidth ?: string | number ;
15
- borderRightWidth ?: string | number ;
16
- borderLeftWidth ?: string | number ;
17
- borderRadius ?: string | number ;
18
- shadowRadius ?: string | number ;
19
- borderWidth ?: string | number ;
20
- aspectRatio ?: string | number ;
21
- rotation ?: string | number ;
22
- scaleX ?: string | number ;
23
- scaleY ?: string | number ;
24
- translateX ?: string | number ;
25
- translateY ?: string | number ;
26
- padding ?: string | number ;
27
- paddingLeft ?: string | number ;
28
- paddingRight ?: string | number ;
29
- paddingTop ?: string | number ;
30
- paddingBottom ?: string | number ;
31
- paddingHorizontal ?: string | number ;
32
- paddingVertical ?: string | number ;
33
- margin ?: string | number ;
34
- marginLeft ?: string | number ;
35
- marginRight ?: string | number ;
36
- marginTop ?: string | number ;
37
- marginBottom ?: string | number ;
38
- marginHorizontal ?: string | number ;
39
- marginVertical ?: string | number ;
40
- top ?: string | number ;
41
- left ?: string | number ;
42
- right ?: string | number ;
43
- bottom ?: string | number ;
44
- width ?: string | number ;
45
- height ?: string | number ;
46
- minWidth ?: string | number ;
47
- minHeight ?: string | number ;
48
- maxWidth ?: string | number ;
49
- maxHeight ?: string | number ;
50
- }
1
+ import * as RN from 'react-native' ;
51
2
3
+ declare module 'react-native-size-matters' {
52
4
export function scale ( size : number ) : number ;
53
5
export function verticalScale ( size : number ) : number ;
54
6
export function moderateScale ( size : number , factor ?: number ) : number ;
@@ -58,14 +10,24 @@ declare module "react-native-size-matters" {
58
10
export function ms ( size : number , factor ?: number ) : number ;
59
11
export function mvs ( size : number , factor ?: number ) : number ;
60
12
61
- type ViewStyle = Omit < RN . ViewStyle , keyof StringifiedStyles > & StringifiedStyles ;
62
- type TextStyle = Omit < RN . TextStyle , keyof StringifiedStyles > & StringifiedStyles ;
63
- type ImageStyle = Omit < RN . ImageStyle , keyof StringifiedStyles > & StringifiedStyles ;
13
+ type Scale = `${number } @s`;
14
+ type VerticalScale = `${number } @vs`;
15
+ type ModerateScale = `${number } @ms${number | '' } `;
16
+ type ModerateVerticalScale = `${number } @mvs${number | '' } `;
17
+ type Size = Scale | VerticalScale | ModerateScale | ModerateVerticalScale ;
18
+ type WithSize < T > = { [ P in keyof T ] : number extends T [ P ] ? Size | T [ P ] : T [ P ] } ;
19
+ type ViewStyle = WithSize < RN . ViewStyle > ;
20
+ type TextStyle = WithSize < RN . TextStyle > ;
21
+ type ImageStyle = WithSize < RN . ImageStyle > ;
64
22
type NamedStyles < T > = { [ P in keyof T ] : ViewStyle | TextStyle | ImageStyle } ;
65
23
66
24
export namespace ScaledSheet {
67
- export function create < T extends NamedStyles < T > | NamedStyles < any > > ( stylesObject : T ) : {
68
- [ P in keyof T ] : RN . RegisteredStyle < T [ P ] & Record < Extract < keyof T [ P ] , keyof StringifiedStyles > , number > >
25
+ export function create < T extends NamedStyles < T > | NamedStyles < any > > (
26
+ stylesObject : T ,
27
+ ) : {
28
+ [ P in keyof T ] : RN . RegisteredStyle < {
29
+ [ S in keyof T [ P ] ] : T [ P ] [ S ] extends Size ? number : T [ P ] [ S ] ;
30
+ } > ;
69
31
} ;
70
32
}
71
33
}
0 commit comments