@shayrn/react-native-scaler
Version:
Responsive scaling utilities for React Native CLI and Expo apps
3 lines (2 loc) • 2.78 kB
JavaScript
;var e=require("react-native");let i=402,t=874;const{width:n,height:a}=e.Dimensions.get("window"),o=n,s=a,r=e.PixelRatio.get(),l=e.PixelRatio.getFontScale();let x=n/i,h=a/t,m=Math.min(x,h);const d=(i,t)=>{const{min:n,max:a,useUniform:o=!0}=t||{};let s=i*(o?m:x);return void 0!==n&&(s=Math.max(s,n)),void 0!==a&&(s=Math.min(s,a)),Math.round(e.PixelRatio.roundToNearestPixel(s))},c=(i,t)=>{const{min:n=10,max:a=100,respectAccessibility:o=!0}=t||{};let s;return s=o?i*m:i*m/l,s=Math.max(s,n),s=Math.min(s,a),Math.round(e.PixelRatio.roundToNearestPixel(s))},p=(i,t)=>{const{min:n,max:a,respectAccessibility:o=!0}=t||{};let s;return s=o?i*m:i*m/l,void 0!==n&&(s=Math.max(s,n)),void 0!==a&&(s=Math.min(s,a)),Math.round(e.PixelRatio.roundToNearestPixel(s))},g=(i,t)=>{const{min:n,max:a}=t||{};let o=i*m;return void 0!==n&&(o=Math.max(o,n)),void 0!==a&&(o=Math.min(o,a)),Math.round(e.PixelRatio.roundToNearestPixel(o))},u=(i,t)=>{const{min:n,max:a}=t||{};let o=i*x;return void 0!==n&&(o=Math.max(o,n)),void 0!==a&&(o=Math.min(o,a)),Math.round(e.PixelRatio.roundToNearestPixel(o))},v=(i,t)=>{const{min:n,max:a}=t||{};let o=i*h;return void 0!==n&&(o=Math.max(o,n)),void 0!==a&&(o=Math.min(o,a)),Math.round(e.PixelRatio.roundToNearestPixel(o))},M=i=>e.PixelRatio.getPixelSizeForLayoutSize(i),P={pixelRatio:r,fontScale:l,isHighDensity:r>=2,isTablet:Math.min(n,a)>=768,isSmallDevice:Math.min(n,a)<350,aspectRatio:n/a},f={width:(e,i)=>u(e,i),height:(e,i)=>v(e,i),font:(e,i)=>c(e,i),lineHeight:(e,i)=>p(e,i),radius:(e,i)=>g(e,i),spacing:(e,i)=>d(e,i),adaptiveSpacing:e=>d(P.isTablet?1.2*e:P.isSmallDevice?.8*e:e),pixelPerfect:e=>M(e)},S={container:{padding:f.adaptiveSpacing(16),margin:f.adaptiveSpacing(20),borderRadius:f.radius(8,{min:4,max:16}),gap:f.spacing(10)},text:{fontSize:f.font(14,{min:12,max:18}),lineHeight:f.lineHeight(20,{min:14,max:24})},adaptiveText:{fontSize:P.isTablet?f.font(16,{min:14,max:20}):f.font(14,{min:12,max:18}),lineHeight:P.isTablet?f.lineHeight(24,{min:18,max:28}):f.lineHeight(20,{min:14,max:24})}},R={width:x,height:h,uniform:m,pixel:r,font:l};exports.configureScaler=e=>{var o,s;i=null!==(o=e.referenceWidth)&&void 0!==o?o:402,t=null!==(s=e.referenceHeight)&&void 0!==s?s:874,x=n/i,h=a/t,m=Math.min(x,h)},exports.deviceInfo=P,exports.getPixelSize=M,exports.getScales=()=>({width:x,height:h,uniform:m,pixel:r,font:l}),exports.onOrientationChange=n=>e.Dimensions.addEventListener("change",()=>{const{width:a,height:o}=e.Dimensions.get("window");x=a/i,h=o/t,m=Math.min(x,h),n()}),exports.responsive=f,exports.responsiveStyles=S,exports.scale=d,exports.scaleFont=c,exports.scaleHeight=v,exports.scaleLineHeight=p,exports.scaleRadius=g,exports.scaleWidth=u,exports.scales=R,exports.screenHeight=s,exports.screenWidth=o;
//# sourceMappingURL=index.js.map