mirror of
https://github.com/zoriya/react-native-svg.git
synced 2025-12-20 22:05:14 +00:00
Refactor Symbol on iOS
This commit is contained in:
56
lib/extract/extractViewBox.js
Normal file
56
lib/extract/extractViewBox.js
Normal file
@@ -0,0 +1,56 @@
|
||||
|
||||
import React, {Component, PropTypes} from 'react';
|
||||
import createReactNativeComponentClass from 'react-native/Libraries/Renderer/src/renderers/native/createReactNativeComponentClass';
|
||||
import {ViewBoxAttributes} from '../attributes';
|
||||
|
||||
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
|
||||
};
|
||||
Reference in New Issue
Block a user