mirror of
https://github.com/zoriya/react-native-svg.git
synced 2025-12-05 22:56:11 +00:00
36 lines
825 B
TypeScript
36 lines
825 B
TypeScript
import extractColor, { integerColor } from './extractColor';
|
|
import { Color } from './types';
|
|
|
|
const urlIdPattern = /^url\(#(.+)\)$/;
|
|
|
|
const currentColorBrush = [2];
|
|
|
|
export default function extractBrush(color?: Color) {
|
|
if (typeof color === 'number') {
|
|
if (color >>> 0 === color && color >= 0 && color <= 0xffffffff) {
|
|
return [0, integerColor(color)];
|
|
}
|
|
}
|
|
|
|
if (!color || color === 'none') {
|
|
return null;
|
|
}
|
|
|
|
if (color === 'currentColor') {
|
|
return currentColorBrush;
|
|
}
|
|
|
|
const brush = typeof color === 'string' && color.match(urlIdPattern);
|
|
if (brush) {
|
|
return [1, brush[1]];
|
|
}
|
|
|
|
const int32ARGBColor = extractColor(color);
|
|
if (typeof int32ARGBColor === 'number') {
|
|
return [0, int32ARGBColor];
|
|
}
|
|
|
|
console.warn(`"${color}" is not a valid color or brush`);
|
|
return null;
|
|
}
|