UNPKG

react-native-week-schedule-1

Version:
65 lines (53 loc) 1.79 kB
import { Platform, Dimensions, PixelRatio } from 'react-native'; export class Utils { private idealWidth: number = 375; private idealHeight: number = 812; private _isIOS: boolean = Platform.OS === 'ios'; private _size: { width: number, height: number } = Dimensions.get('window'); private _ratio: number = PixelRatio.getFontScale(); get isIOS() { return this._isIOS; } get size() { return { ...this._size }; } declOfNum = (number: number, translates: [string, string, string]): string => { const newNumber = number % 10; if (number > 10 && number < 20) { return translates[2]; } if (newNumber > 1 && newNumber < 5) { return translates[1]; } if (newNumber === 1) { return translates[0]; } return translates[2]; }; /* Scale */ scaleHorizontal = (inWidth: number = 1): number => { const delimiter: number = this.idealWidth / inWidth; return this._size.width / delimiter; }; scaleVertical = (inHeight: number = 1) => { const delimiter: number = this.idealHeight / inHeight; return this._size.height / delimiter; }; scaleFontSize = (fontSize: number = 1): number => { const divisionRatio: number = this.idealWidth / (fontSize / this._ratio); return this._size.width / divisionRatio; }; scaleLineHeight = (lineHeight: number = 1): number => { const divisionRatio: number = this.idealHeight / (lineHeight / this._ratio); return this._size.height / divisionRatio; }; } const utils = new Utils(); export const { scaleHorizontal, scaleVertical, scaleFontSize, scaleLineHeight, size, isIOS, } = utils;