UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

67 lines (54 loc) 1.72 kB
import * as R from "ramda"; function transformStringBooleans(value: string) { if (value !== "true" && value !== "false") { return value; } return value === "true"; } function transformStringNumbersBooleans(value: string | number): boolean { return value == "1"; // eslint-disable-line eqeqeq } function transformNumberInput(num: string | number) { return num === null || num === "" ? null : Number(num); } /** * fixes color - Zapp colors are AARRGGBB and output needs to be RRGGBBAA * * @param {string} input colorString * @returns {string} transformed color string */ function transformColorCode(colorHex: string): string { if (!colorHex) { return colorHex; } if (R.startsWith("rgba(", colorHex)) { return colorHex; } if (R.startsWith("#", colorHex) && colorHex.length === 9) { return `#${colorHex.slice(3, 9)}${colorHex.slice(1, 3)}`; } return colorHex; } /** * map of transformation function to apply to sanitize the fields * present in the manifest configuration */ /** * Applies a tranformation for a given type of manifest field. Falls back to * the identity function if the type is not declared in the transforms map * Curried function of the form applyTransform(type)(value) * @param {String} type to apply the transformation for * @returns {Function} * @param {Any} value to transform * @returns {Any} sanitized value */ function applyTransform(type: string) { const transforms = { switch: transformStringBooleans, checkbox: transformStringNumbersBooleans, number_input: transformNumberInput, color_picker: transformColorCode, }; return transforms[type] || R.identity; } export { transformColorCode, applyTransform };