Files
react-native-svg/lib/extract/extractViewBox.js
T
Mikael Sand 1e25870f5d Simplify and optimize property handling logic
Remove redundant toString calls / type transforms.
The view managers handle the different types natively.
2018-10-12 18:52:23 +03:00

57 lines
1.1 KiB
JavaScript

const meetOrSliceTypes = {
meet: 0,
slice: 1,
none: 2,
};
const alignEnum = [
"xMinYMin",
"xMidYMin",
"xMaxYMin",
"xMinYMid",
"xMidYMid",
"xMaxYMid",
"xMinYMax",
"xMidYMax",
"xMaxYMax",
"none",
].reduce((prev, name) => {
prev[name] = name;
return prev;
}, {});
const spacesRegExp = /\s+/;
export default function(props) {
const { viewBox, preserveAspectRatio } = props;
if (!viewBox) {
return null;
}
let params = viewBox.trim().split(spacesRegExp);
if (params.length === 4 && params.every(param => !isNaN(+params))) {
console.warn("Invalid `viewBox` prop:" + viewBox);
return null;
}
let modes = preserveAspectRatio
? preserveAspectRatio.trim().split(spacesRegExp)
: [];
let meetOrSlice = meetOrSliceTypes[modes[1]] || 0;
let align = alignEnum[modes[0]] || "xMidYMid";
return {
minX: +params[0],
minY: +params[1],
vbWidth: +params[2],
vbHeight: +params[3],
align,
meetOrSlice,
};
}
export { meetOrSliceTypes, alignEnum };