mirror of
https://github.com/zoriya/react-native-svg.git
synced 2025-12-20 05:55:10 +00:00
89 lines
2.0 KiB
JavaScript
89 lines
2.0 KiB
JavaScript
import {PropTypes} from 'react';
|
|
import {PanResponder} from 'react-native';
|
|
|
|
const numberProp = PropTypes.oneOfType([PropTypes.string, PropTypes.number]);
|
|
|
|
const touchableProps = {
|
|
disabled: PropTypes.bool,
|
|
onPress: PropTypes.func,
|
|
onPressIn: PropTypes.func,
|
|
onPressOut: PropTypes.func,
|
|
onLongPress: PropTypes.func,
|
|
delayPressIn: PropTypes.number,
|
|
delayPressOut: PropTypes.number,
|
|
delayLongPress: PropTypes.number
|
|
};
|
|
|
|
const touchablePropsKeys = Object.keys(touchableProps);
|
|
|
|
const responderPropsKeys = [
|
|
...Object.keys(PanResponder.create({}).panHandlers),
|
|
'pointerEvents'
|
|
];
|
|
|
|
const responderProps = responderPropsKeys.reduce((props, name) => {
|
|
props[name] = PropTypes.func;
|
|
return props;
|
|
}, {});
|
|
|
|
const fillProps = {
|
|
fill: PropTypes.string,
|
|
fillOpacity: numberProp,
|
|
fillRule: PropTypes.oneOf(['evenodd', 'nonzero'])
|
|
};
|
|
|
|
const clipProps = {
|
|
clipRule: PropTypes.oneOf(['evenodd', 'nonzero']),
|
|
clipPath: PropTypes.string
|
|
};
|
|
|
|
const definationProps = {
|
|
name: PropTypes.string
|
|
};
|
|
|
|
const strokeProps = {
|
|
stroke: PropTypes.string,
|
|
strokeWidth: numberProp,
|
|
strokeOpacity: numberProp,
|
|
strokeDasharray: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.string]),
|
|
strokeDashoffset: numberProp,
|
|
strokeLinecap: PropTypes.oneOf(['butt', 'square', 'round']),
|
|
strokeLinejoin: PropTypes.oneOf(['miter', 'bevel', 'round']),
|
|
strokeMiterlimit: numberProp
|
|
};
|
|
|
|
const transformProps = {
|
|
scale: numberProp,
|
|
scaleX: numberProp,
|
|
scaleY: numberProp,
|
|
rotate: numberProp,
|
|
x: numberProp,
|
|
y: numberProp,
|
|
originX: numberProp,
|
|
originY: numberProp,
|
|
transform: PropTypes.string
|
|
};
|
|
|
|
const pathProps = {
|
|
...fillProps,
|
|
...strokeProps,
|
|
...clipProps,
|
|
...transformProps,
|
|
...responderProps,
|
|
...touchableProps,
|
|
...definationProps
|
|
};
|
|
|
|
export {
|
|
numberProp,
|
|
fillProps,
|
|
clipProps,
|
|
strokeProps,
|
|
transformProps,
|
|
pathProps,
|
|
responderProps,
|
|
responderPropsKeys,
|
|
touchableProps,
|
|
touchablePropsKeys
|
|
};
|