123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- "use strict";
- exports.__esModule = true;
- exports.default = void 0;
- var _babelPluginAddJsxAttribute = _interopRequireDefault(require("@svgr/babel-plugin-add-jsx-attribute"));
- var _babelPluginRemoveJsxAttribute = _interopRequireDefault(require("@svgr/babel-plugin-remove-jsx-attribute"));
- var _babelPluginRemoveJsxEmptyExpression = _interopRequireDefault(require("@svgr/babel-plugin-remove-jsx-empty-expression"));
- var _babelPluginReplaceJsxAttributeValue = _interopRequireDefault(require("@svgr/babel-plugin-replace-jsx-attribute-value"));
- var _babelPluginSvgDynamicTitle = _interopRequireDefault(require("@svgr/babel-plugin-svg-dynamic-title"));
- var _babelPluginSvgEmDimensions = _interopRequireDefault(require("@svgr/babel-plugin-svg-em-dimensions"));
- var _babelPluginTransformReactNativeSvg = _interopRequireDefault(require("@svgr/babel-plugin-transform-react-native-svg"));
- var _babelPluginTransformSvgComponent = _interopRequireDefault(require("@svgr/babel-plugin-transform-svg-component"));
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- function getAttributeValue(value) {
- const literal = typeof value === 'string' && value.startsWith('{') && value.endsWith('}');
- return {
- value: literal ? value.slice(1, -1) : value,
- literal
- };
- }
- function propsToAttributes(props) {
- return Object.keys(props).map(name => {
- const {
- literal,
- value
- } = getAttributeValue(props[name]);
- return {
- name,
- literal,
- value
- };
- });
- }
- function replaceMapToValues(replaceMap) {
- return Object.keys(replaceMap).map(value => {
- const {
- literal,
- value: newValue
- } = getAttributeValue(replaceMap[value]);
- return {
- value,
- newValue,
- literal
- };
- });
- }
- const plugin = (api, opts) => {
- let toRemoveAttributes = ['version'];
- let toAddAttributes = [];
- if (opts.svgProps) {
- toAddAttributes = [...toAddAttributes, ...propsToAttributes(opts.svgProps)];
- }
- if (opts.ref) {
- toAddAttributes = [...toAddAttributes, {
- name: 'ref',
- value: 'svgRef',
- literal: true
- }];
- }
- if (opts.titleProp) {
- toAddAttributes = [...toAddAttributes, {
- name: 'aria-labelledby',
- value: 'titleId',
- literal: true
- }];
- }
- if (opts.expandProps) {
- toAddAttributes = [...toAddAttributes, {
- name: 'props',
- spread: true,
- position: opts.expandProps
- }];
- }
- if (!opts.dimensions) {
- toRemoveAttributes = [...toRemoveAttributes, 'width', 'height'];
- }
- const plugins = [[_babelPluginTransformSvgComponent.default, opts], ...(opts.icon && opts.dimensions ? [_babelPluginSvgEmDimensions.default] : []), [_babelPluginRemoveJsxAttribute.default, {
- elements: ['svg', 'Svg'],
- attributes: toRemoveAttributes
- }], [_babelPluginAddJsxAttribute.default, {
- elements: ['svg', 'Svg'],
- attributes: toAddAttributes
- }], _babelPluginRemoveJsxEmptyExpression.default];
- if (opts.replaceAttrValues) {
- plugins.push([_babelPluginReplaceJsxAttributeValue.default, {
- values: replaceMapToValues(opts.replaceAttrValues)
- }]);
- }
- if (opts.titleProp) {
- plugins.push(_babelPluginSvgDynamicTitle.default);
- }
- if (opts.native) {
- if (opts.native.expo) {
- plugins.push([_babelPluginTransformReactNativeSvg.default, opts.native]);
- } else {
- plugins.push(_babelPluginTransformReactNativeSvg.default);
- }
- }
- return {
- plugins
- };
- };
- var _default = plugin;
- exports.default = _default;
|