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
44import { ScaledSize } from "react-native";
import { getWindowDimensions } from "../dimensions";
export const createDimensionQueryHelper = <Value>(
queryFunction: (options: { value: Value; dimensions: ScaledSize }) => boolean
) => <T>(value: Value, styles: T): null | T => {
const isMatched = queryFunction({ value, dimensions: getWindowDimensions() });
if (isMatched) {
return styles;
}
return null;
};
export const maxHeight = createDimensionQueryHelper<number>(
({ value, dimensions }) => value >= dimensions.height
);
export const maxWidth = createDimensionQueryHelper<number>(
({ value, dimensions }) => value >= dimensions.width
);
export const minHeight = createDimensionQueryHelper<number>(
({ value, dimensions }) => value <= dimensions.height
);
export const minWidth = createDimensionQueryHelper<number>(
({ value, dimensions }) => value <= dimensions.width
);
export const minAspectRatio = createDimensionQueryHelper<number>(
({ value, dimensions: { width, height } }) => value <= width / height
);
export const maxAspectRatio = createDimensionQueryHelper<number>(
({ value, dimensions: { width, height } }) => value >= width / height
);
export const aspectRatio = createDimensionQueryHelper<number>(
({ value, dimensions: { width, height } }) => value === width / height
);