UNPKG

@arsil_malek/rn-scale-window

Version:

A lightweight and powerful utility for responsive scaling in React Native apps. Easily handle consistent font sizes, heights, widths, and layouts across all screen sizes.

26 lines (25 loc) 1.08 kB
import { Dimensions, PixelRatio, Platform } from 'react-native'; var _a = Dimensions.get('window'), SCREEN_WIDTH = _a.width, SCREEN_HEIGHT = _a.height; // Reference values based on standard device (e.g., iPhone 11: 375 x 812) var BASE_WIDTH = 375; var BASE_HEIGHT = 812; var scale = function (size) { return (SCREEN_WIDTH / BASE_WIDTH) * size; }; var verticalScale = function (size) { return (SCREEN_HEIGHT / BASE_HEIGHT) * size; }; var moderateScale = function (size, factor) { if (factor === void 0) { factor = 0.5; } return size + (scale(size) - size) * factor; }; var fontScale = function (size) { return size * PixelRatio.getFontScale(); }; var isSmallDevice = SCREEN_WIDTH < 360; var isLargeDevice = SCREEN_WIDTH > 768; var isTablet = Platform.OS === 'ios' ? SCREEN_WIDTH >= 768 && SCREEN_HEIGHT >= 1024 : SCREEN_WIDTH >= 600; var DEVICE = { width: SCREEN_WIDTH, height: SCREEN_HEIGHT, isSmallDevice: isSmallDevice, isLargeDevice: isLargeDevice, isTablet: isTablet, }; export { scale, verticalScale, moderateScale, fontScale, DEVICE, };