source: frontend/node_modules/@svgr/babel-preset/lib/index.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 2 weeks ago

Fix frontend appearance

  • Property mode set to 100644
File size: 3.4 KB
Line 
1"use strict";
2
3exports.__esModule = true;
4exports.default = void 0;
5
6var _babelPluginAddJsxAttribute = _interopRequireDefault(require("@svgr/babel-plugin-add-jsx-attribute"));
7
8var _babelPluginRemoveJsxAttribute = _interopRequireDefault(require("@svgr/babel-plugin-remove-jsx-attribute"));
9
10var _babelPluginRemoveJsxEmptyExpression = _interopRequireDefault(require("@svgr/babel-plugin-remove-jsx-empty-expression"));
11
12var _babelPluginReplaceJsxAttributeValue = _interopRequireDefault(require("@svgr/babel-plugin-replace-jsx-attribute-value"));
13
14var _babelPluginSvgDynamicTitle = _interopRequireDefault(require("@svgr/babel-plugin-svg-dynamic-title"));
15
16var _babelPluginSvgEmDimensions = _interopRequireDefault(require("@svgr/babel-plugin-svg-em-dimensions"));
17
18var _babelPluginTransformReactNativeSvg = _interopRequireDefault(require("@svgr/babel-plugin-transform-react-native-svg"));
19
20var _babelPluginTransformSvgComponent = _interopRequireDefault(require("@svgr/babel-plugin-transform-svg-component"));
21
22function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
24function getAttributeValue(value) {
25 const literal = typeof value === 'string' && value.startsWith('{') && value.endsWith('}');
26 return {
27 value: literal ? value.slice(1, -1) : value,
28 literal
29 };
30}
31
32function propsToAttributes(props) {
33 return Object.keys(props).map(name => {
34 const {
35 literal,
36 value
37 } = getAttributeValue(props[name]);
38 return {
39 name,
40 literal,
41 value
42 };
43 });
44}
45
46function replaceMapToValues(replaceMap) {
47 return Object.keys(replaceMap).map(value => {
48 const {
49 literal,
50 value: newValue
51 } = getAttributeValue(replaceMap[value]);
52 return {
53 value,
54 newValue,
55 literal
56 };
57 });
58}
59
60const plugin = (api, opts) => {
61 let toRemoveAttributes = ['version'];
62 let toAddAttributes = [];
63
64 if (opts.svgProps) {
65 toAddAttributes = [...toAddAttributes, ...propsToAttributes(opts.svgProps)];
66 }
67
68 if (opts.ref) {
69 toAddAttributes = [...toAddAttributes, {
70 name: 'ref',
71 value: 'svgRef',
72 literal: true
73 }];
74 }
75
76 if (opts.titleProp) {
77 toAddAttributes = [...toAddAttributes, {
78 name: 'aria-labelledby',
79 value: 'titleId',
80 literal: true
81 }];
82 }
83
84 if (opts.expandProps) {
85 toAddAttributes = [...toAddAttributes, {
86 name: 'props',
87 spread: true,
88 position: opts.expandProps
89 }];
90 }
91
92 if (!opts.dimensions) {
93 toRemoveAttributes = [...toRemoveAttributes, 'width', 'height'];
94 }
95
96 const plugins = [[_babelPluginTransformSvgComponent.default, opts], ...(opts.icon && opts.dimensions ? [_babelPluginSvgEmDimensions.default] : []), [_babelPluginRemoveJsxAttribute.default, {
97 elements: ['svg', 'Svg'],
98 attributes: toRemoveAttributes
99 }], [_babelPluginAddJsxAttribute.default, {
100 elements: ['svg', 'Svg'],
101 attributes: toAddAttributes
102 }], _babelPluginRemoveJsxEmptyExpression.default];
103
104 if (opts.replaceAttrValues) {
105 plugins.push([_babelPluginReplaceJsxAttributeValue.default, {
106 values: replaceMapToValues(opts.replaceAttrValues)
107 }]);
108 }
109
110 if (opts.titleProp) {
111 plugins.push(_babelPluginSvgDynamicTitle.default);
112 }
113
114 if (opts.native) {
115 if (opts.native.expo) {
116 plugins.push([_babelPluginTransformReactNativeSvg.default, opts.native]);
117 } else {
118 plugins.push(_babelPluginTransformReactNativeSvg.default);
119 }
120 }
121
122 return {
123 plugins
124 };
125};
126
127var _default = plugin;
128exports.default = _default;
Note: See TracBrowser for help on using the repository browser.