twrnc
Version:
simple, expressive API for tailwindcss + react-native
39 lines (38 loc) • 1.21 kB
JavaScript
import { toPx, warn } from './helpers';
export default function screens(input) {
if (!input) {
return {};
}
const screenData = Object.entries(input).reduce((acc, [screen, value]) => {
const data = [0, Infinity, 0];
const values = typeof value === `string` ? { min: value } : value;
const minPx = values.min ? toPx(values.min) : 0;
if (minPx === null) {
warn(`invalid screen config value: ${screen}->min: ${values.min}`);
}
else {
data[0] = minPx;
}
const maxPx = values.max ? toPx(values.max) : Infinity;
if (maxPx === null) {
warn(`invalid screen config value: ${screen}->max: ${values.max}`);
}
else {
data[1] = maxPx;
}
acc[screen] = data;
return acc;
}, {});
const values = Object.values(screenData);
values.sort((a, b) => {
const [minA, maxA] = a;
const [minB, maxB] = b;
if (maxA === Infinity || maxB === Infinity) {
return minA - minB;
}
return maxA - maxB;
});
let order = 0;
values.forEach((value) => (value[2] = order++));
return screenData;
}