1 | 'use strict';
|
2 |
|
3 | var addJSXAttribute = require('@svgr/babel-plugin-add-jsx-attribute');
|
4 | var removeJSXAttribute = require('@svgr/babel-plugin-remove-jsx-attribute');
|
5 | var removeJSXEmptyExpression = require('@svgr/babel-plugin-remove-jsx-empty-expression');
|
6 | var replaceJSXAttributeValue = require('@svgr/babel-plugin-replace-jsx-attribute-value');
|
7 | var svgDynamicTitle = require('@svgr/babel-plugin-svg-dynamic-title');
|
8 | var svgEmDimensions = require('@svgr/babel-plugin-svg-em-dimensions');
|
9 | var transformReactNativeSVG = require('@svgr/babel-plugin-transform-react-native-svg');
|
10 | var transformSvgComponent = require('@svgr/babel-plugin-transform-svg-component');
|
11 |
|
12 | function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
13 |
|
14 | var addJSXAttribute__default = _interopDefaultLegacy(addJSXAttribute);
|
15 | var removeJSXAttribute__default = _interopDefaultLegacy(removeJSXAttribute);
|
16 | var removeJSXEmptyExpression__default = _interopDefaultLegacy(removeJSXEmptyExpression);
|
17 | var replaceJSXAttributeValue__default = _interopDefaultLegacy(replaceJSXAttributeValue);
|
18 | var svgDynamicTitle__default = _interopDefaultLegacy(svgDynamicTitle);
|
19 | var svgEmDimensions__default = _interopDefaultLegacy(svgEmDimensions);
|
20 | var transformReactNativeSVG__default = _interopDefaultLegacy(transformReactNativeSVG);
|
21 | var transformSvgComponent__default = _interopDefaultLegacy(transformSvgComponent);
|
22 |
|
23 | const getAttributeValue = (value) => {
|
24 | const literal = typeof value === "string" && value.startsWith("{") && value.endsWith("}");
|
25 | return { value: literal ? value.slice(1, -1) : value, literal };
|
26 | };
|
27 | const propsToAttributes = (props) => {
|
28 | return Object.keys(props).map((name) => {
|
29 | const { literal, value } = getAttributeValue(props[name]);
|
30 | return { name, literal, value };
|
31 | });
|
32 | };
|
33 | function replaceMapToValues(replaceMap) {
|
34 | return Object.keys(replaceMap).map((value) => {
|
35 | const { literal, value: newValue } = getAttributeValue(replaceMap[value]);
|
36 | return { value, newValue, literal };
|
37 | });
|
38 | }
|
39 | const plugin = (_, opts) => {
|
40 | let toRemoveAttributes = ["version"];
|
41 | let toAddAttributes = [];
|
42 | if (opts.svgProps) {
|
43 | toAddAttributes = [...toAddAttributes, ...propsToAttributes(opts.svgProps)];
|
44 | }
|
45 | if (opts.ref) {
|
46 | toAddAttributes = [
|
47 | ...toAddAttributes,
|
48 | {
|
49 | name: "ref",
|
50 | value: "ref",
|
51 | literal: true
|
52 | }
|
53 | ];
|
54 | }
|
55 | if (opts.titleProp) {
|
56 | toAddAttributes = [
|
57 | ...toAddAttributes,
|
58 | {
|
59 | name: "aria-labelledby",
|
60 | value: "titleId",
|
61 | literal: true
|
62 | }
|
63 | ];
|
64 | }
|
65 | if (opts.descProp) {
|
66 | toAddAttributes = [
|
67 | ...toAddAttributes,
|
68 | {
|
69 | name: "aria-describedby",
|
70 | value: "descId",
|
71 | literal: true
|
72 | }
|
73 | ];
|
74 | }
|
75 | if (opts.expandProps) {
|
76 | toAddAttributes = [
|
77 | ...toAddAttributes,
|
78 | {
|
79 | name: "props",
|
80 | spread: true,
|
81 | position: opts.expandProps === "start" || opts.expandProps === "end" ? opts.expandProps : void 0
|
82 | }
|
83 | ];
|
84 | }
|
85 | if (!opts.dimensions) {
|
86 | toRemoveAttributes = [...toRemoveAttributes, "width", "height"];
|
87 | }
|
88 | const plugins = [
|
89 | [transformSvgComponent__default["default"], opts],
|
90 | ...opts.icon !== false && opts.dimensions ? [
|
91 | [
|
92 | svgEmDimensions__default["default"],
|
93 | opts.icon !== true ? { width: opts.icon, height: opts.icon } : opts.native ? { width: 24, height: 24 } : {}
|
94 | ]
|
95 | ] : [],
|
96 | [
|
97 | removeJSXAttribute__default["default"],
|
98 | { elements: ["svg", "Svg"], attributes: toRemoveAttributes }
|
99 | ],
|
100 | [
|
101 | addJSXAttribute__default["default"],
|
102 | { elements: ["svg", "Svg"], attributes: toAddAttributes }
|
103 | ],
|
104 | removeJSXEmptyExpression__default["default"]
|
105 | ];
|
106 | if (opts.replaceAttrValues) {
|
107 | plugins.push([
|
108 | replaceJSXAttributeValue__default["default"],
|
109 | { values: replaceMapToValues(opts.replaceAttrValues) }
|
110 | ]);
|
111 | }
|
112 | if (opts.titleProp) {
|
113 | plugins.push(svgDynamicTitle__default["default"]);
|
114 | }
|
115 | if (opts.descProp) {
|
116 | plugins.push([svgDynamicTitle__default["default"], { tag: "desc" }, "desc"]);
|
117 | }
|
118 | if (opts.native) {
|
119 | plugins.push(transformReactNativeSVG__default["default"]);
|
120 | }
|
121 | return { plugins };
|
122 | };
|
123 |
|
124 | module.exports = plugin;
|
125 |
|