mirror of
https://github.com/idanoo/GoScrobble
synced 2025-07-04 07:02:18 +00:00
0.2.0 - Mid migration
This commit is contained in:
parent
139e6a915e
commit
7e38fdbd7d
42393 changed files with 5358157 additions and 62 deletions
133
web/node_modules/@svgr/babel-plugin-transform-react-native-svg/lib/index.js
generated
vendored
Normal file
133
web/node_modules/@svgr/babel-plugin-transform-react-native-svg/lib/index.js
generated
vendored
Normal file
|
@ -0,0 +1,133 @@
|
|||
"use strict";
|
||||
|
||||
exports.__esModule = true;
|
||||
exports.default = void 0;
|
||||
const elementToComponent = {
|
||||
svg: 'Svg',
|
||||
circle: 'Circle',
|
||||
clipPath: 'ClipPath',
|
||||
ellipse: 'Ellipse',
|
||||
g: 'G',
|
||||
linearGradient: 'LinearGradient',
|
||||
radialGradient: 'RadialGradient',
|
||||
line: 'Line',
|
||||
path: 'Path',
|
||||
pattern: 'Pattern',
|
||||
polygon: 'Polygon',
|
||||
polyline: 'Polyline',
|
||||
rect: 'Rect',
|
||||
symbol: 'Symbol',
|
||||
text: 'Text',
|
||||
textPath: 'TextPath',
|
||||
tspan: 'TSpan',
|
||||
use: 'Use',
|
||||
defs: 'Defs',
|
||||
stop: 'Stop',
|
||||
mask: 'Mask',
|
||||
image: 'Image',
|
||||
foreignObject: 'ForeignObject'
|
||||
};
|
||||
|
||||
const expoPrefix = (component, expo) => {
|
||||
// Prefix with 'Svg.' in the case we're transforming for Expo
|
||||
if (!expo) {
|
||||
return component;
|
||||
}
|
||||
|
||||
return (component !== 'Svg' ? 'Svg.' : '') + component;
|
||||
};
|
||||
|
||||
const plugin = ({
|
||||
types: t
|
||||
}, {
|
||||
expo
|
||||
}) => {
|
||||
function replaceElement(path, state) {
|
||||
const {
|
||||
name
|
||||
} = path.node.openingElement.name; // Replace element by react-native-svg components
|
||||
|
||||
const component = elementToComponent[name];
|
||||
|
||||
if (component) {
|
||||
const prefixedComponent = expoPrefix(component, expo);
|
||||
const openingElementName = path.get('openingElement.name');
|
||||
openingElementName.replaceWith(t.jsxIdentifier(prefixedComponent));
|
||||
|
||||
if (path.has('closingElement')) {
|
||||
const closingElementName = path.get('closingElement.name');
|
||||
closingElementName.replaceWith(t.jsxIdentifier(prefixedComponent));
|
||||
}
|
||||
|
||||
state.replacedComponents.add(prefixedComponent);
|
||||
return;
|
||||
} // Remove element if not supported
|
||||
|
||||
|
||||
state.unsupportedComponents.add(name);
|
||||
path.remove();
|
||||
}
|
||||
|
||||
const svgElementVisitor = {
|
||||
JSXElement(path, state) {
|
||||
if (!path.get('openingElement.name').isJSXIdentifier({
|
||||
name: 'svg'
|
||||
})) {
|
||||
return;
|
||||
}
|
||||
|
||||
replaceElement(path, state);
|
||||
path.traverse(jsxElementVisitor, state);
|
||||
}
|
||||
|
||||
};
|
||||
const jsxElementVisitor = {
|
||||
JSXElement(path, state) {
|
||||
replaceElement(path, state);
|
||||
}
|
||||
|
||||
};
|
||||
const importDeclarationVisitor = {
|
||||
ImportDeclaration(path, state) {
|
||||
if (path.get('source').isStringLiteral({
|
||||
value: 'react-native-svg'
|
||||
})) {
|
||||
state.replacedComponents.forEach(component => {
|
||||
if (path.get('specifiers').some(specifier => specifier.get('local').isIdentifier({
|
||||
name: component
|
||||
}))) {
|
||||
return;
|
||||
}
|
||||
|
||||
path.pushContainer('specifiers', t.importSpecifier(t.identifier(component), t.identifier(component)));
|
||||
});
|
||||
} else if (path.get('source').isStringLiteral({
|
||||
value: 'expo'
|
||||
})) {
|
||||
path.pushContainer('specifiers', t.importSpecifier(t.identifier('Svg'), t.identifier('Svg')));
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
if (state.unsupportedComponents.size && !path.has('trailingComments')) {
|
||||
const componentList = [...state.unsupportedComponents].join(', ');
|
||||
path.addComment('trailing', ` SVGR has dropped some elements not supported by react-native-svg: ${componentList} `);
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
return {
|
||||
visitor: {
|
||||
Program(path, state) {
|
||||
state.replacedComponents = new Set();
|
||||
state.unsupportedComponents = new Set();
|
||||
path.traverse(svgElementVisitor, state);
|
||||
path.traverse(importDeclarationVisitor, state);
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
var _default = plugin;
|
||||
exports.default = _default;
|
Loading…
Add table
Add a link
Reference in a new issue