UNPKG

@applicaster/zapp-react-native-ui-components

Version:

Applicaster Zapp React Native ui components for the Quick Brick App

45 lines (35 loc) 1.14 kB
import { toFiniteNumberWithDefault, toNumber, } from "@applicaster/zapp-react-native-utils/numberUtils"; import { isNil } from "ramda"; const dimensionRegex = /\b(width|height)=(\d+)\b/gi; export const withDimensions = ( url: Option<string>, width: Option<number | string>, height: Option<number | string> ) => { if (isNil(url)) { return url; } if (!url.toString().startsWith("http")) { return url; } const newWidth = Math.trunc(toFiniteNumberWithDefault(0, width)); const newHeight = Math.trunc(toFiniteNumberWithDefault(0, height)); return url.replace(dimensionRegex, (match, name, originalValue) => { if (name.toLocaleLowerCase() === "width" && newWidth > 0) { const originalWidth = toNumber(originalValue); if (originalWidth > 0 && originalWidth > newWidth) { return `${name}=${newWidth}`; } } if (name.toLocaleLowerCase() === "height" && newHeight > 0) { const originalHeight = toNumber(originalValue); if (originalHeight > 0 && originalHeight > newHeight) { return `${name}=${newHeight}`; } } return match; }); };