Skip to content

Commit d6f482a

Browse files
committed
1.0.5
1 parent b629ab4 commit d6f482a

File tree

2 files changed

+30
-22
lines changed

2 files changed

+30
-22
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-native-scaled-layout",
3-
"version": "1.0.3",
3+
"version": "1.0.5",
44
"description": "Flexible, Scalable layout dimensions, font sizes for React Native",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",

src/index.tsx

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
11
import { Dimensions, StyleSheet, Text, TextProps, TextStyle } from 'react-native';
22
import React, { ReactElement, ReactNode } from 'react';
33

4-
function clamp(value: number, min: number, max: number): number {
5-
if (value < min) return min;
6-
if (value > max) return max;
7-
return value;
8-
}
9-
104
const window = Dimensions.get('window');
115
const minLength = Math.min(window.width, window.height);
126
let dimenRatio: number; /* 375 is our design screen width */
@@ -15,6 +9,26 @@ let fontScale: number;
159
export let _FONT_SCALE_: number;
1610
let _defaultFontSize: number;
1711

12+
declare global {
13+
interface Number {
14+
dimenScaled: () => number;
15+
fontScaled: () => number;
16+
}
17+
}
18+
19+
function clamp(value: number, min: number, max: number): number {
20+
if (value < min) return min;
21+
if (value > max) return max;
22+
return value;
23+
}
24+
25+
/**
26+
* Set initial configuration for scaled layout behavior
27+
* @param designSpecWidth your design width viewport width(zeplin, pigma etc...). If your design viewport is 375 x 1000 then 375 is a right value.
28+
* @param dimenScaleRange dimension scale factor minimum & maximum range. default is [0.5, 1.5]..
29+
* @param fontScaleRange font scale factor minimum & maximum range. default is [0.75, 1.3].
30+
* @param defaultFontsize default <Text> fontSize. default is 12.
31+
*/
1832
export function initScaledSettings(
1933
designSpecWidth = 375,
2034
dimenScaleRange: { min: number; max: number } = { min: 0.5, max: 1.5 },
@@ -27,23 +41,17 @@ export function initScaledSettings(
2741
dimenScale >= 1 ? Math.min(dimenScale, fontScaleRange.max) : Math.max(dimenScale * dimenScale, fontScaleRange.min);
2842
_FONT_SCALE_ = fontScale;
2943
_defaultFontSize = defaultFontsize;
30-
}
31-
initScaledSettings();
3244

33-
declare global {
34-
interface Number {
35-
dimenScaled: () => number;
36-
fontScaled: () => number;
37-
}
45+
// eslint-disable-next-line no-extend-native
46+
Number.prototype.dimenScaled = function dimenScaled(): number {
47+
return (this as number) * dimenScale;
48+
};
49+
// eslint-disable-next-line no-extend-native
50+
Number.prototype.fontScaled = function fontScaled(): number {
51+
return (this as number) * fontScale;
52+
};
3853
}
39-
// eslint-disable-next-line no-extend-native
40-
Number.prototype.dimenScaled = function dimenScaled(): number {
41-
return (this as number) * dimenScale;
42-
};
43-
// eslint-disable-next-line no-extend-native
44-
Number.prototype.fontScaled = function fontScaled(): number {
45-
return (this as number) * fontScale;
46-
};
54+
initScaledSettings();
4755

4856
type ScaledTextProps = {
4957
style?: TextStyle;

0 commit comments

Comments
 (0)