123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- 'use strict';
- var addJSXAttribute = require('@svgr/babel-plugin-add-jsx-attribute');
- var removeJSXAttribute = require('@svgr/babel-plugin-remove-jsx-attribute');
- var removeJSXEmptyExpression = require('@svgr/babel-plugin-remove-jsx-empty-expression');
- var replaceJSXAttributeValue = require('@svgr/babel-plugin-replace-jsx-attribute-value');
- var svgDynamicTitle = require('@svgr/babel-plugin-svg-dynamic-title');
- var svgEmDimensions = require('@svgr/babel-plugin-svg-em-dimensions');
- var transformReactNativeSVG = require('@svgr/babel-plugin-transform-react-native-svg');
- var transformSvgComponent = require('@svgr/babel-plugin-transform-svg-component');
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
- var addJSXAttribute__default = /*#__PURE__*/_interopDefaultLegacy(addJSXAttribute);
- var removeJSXAttribute__default = /*#__PURE__*/_interopDefaultLegacy(removeJSXAttribute);
- var removeJSXEmptyExpression__default = /*#__PURE__*/_interopDefaultLegacy(removeJSXEmptyExpression);
- var replaceJSXAttributeValue__default = /*#__PURE__*/_interopDefaultLegacy(replaceJSXAttributeValue);
- var svgDynamicTitle__default = /*#__PURE__*/_interopDefaultLegacy(svgDynamicTitle);
- var svgEmDimensions__default = /*#__PURE__*/_interopDefaultLegacy(svgEmDimensions);
- var transformReactNativeSVG__default = /*#__PURE__*/_interopDefaultLegacy(transformReactNativeSVG);
- var transformSvgComponent__default = /*#__PURE__*/_interopDefaultLegacy(transformSvgComponent);
- const getAttributeValue = (value) => {
- const literal = typeof value === "string" && value.startsWith("{") && value.endsWith("}");
- return { value: literal ? value.slice(1, -1) : value, literal };
- };
- const 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 = (_, opts) => {
- let toRemoveAttributes = ["version"];
- let toAddAttributes = [];
- if (opts.svgProps) {
- toAddAttributes = [...toAddAttributes, ...propsToAttributes(opts.svgProps)];
- }
- if (opts.ref) {
- toAddAttributes = [
- ...toAddAttributes,
- {
- name: "ref",
- value: "ref",
- literal: true
- }
- ];
- }
- if (opts.titleProp) {
- toAddAttributes = [
- ...toAddAttributes,
- {
- name: "aria-labelledby",
- value: "titleId",
- literal: true
- }
- ];
- }
- if (opts.descProp) {
- toAddAttributes = [
- ...toAddAttributes,
- {
- name: "aria-describedby",
- value: "descId",
- literal: true
- }
- ];
- }
- if (opts.expandProps) {
- toAddAttributes = [
- ...toAddAttributes,
- {
- name: "props",
- spread: true,
- position: opts.expandProps === "start" || opts.expandProps === "end" ? opts.expandProps : void 0
- }
- ];
- }
- if (!opts.dimensions) {
- toRemoveAttributes = [...toRemoveAttributes, "width", "height"];
- }
- const plugins = [
- [transformSvgComponent__default["default"], opts],
- ...opts.icon !== false && opts.dimensions ? [
- [
- svgEmDimensions__default["default"],
- opts.icon !== true ? { width: opts.icon, height: opts.icon } : opts.native ? { width: 24, height: 24 } : {}
- ]
- ] : [],
- [
- removeJSXAttribute__default["default"],
- { elements: ["svg", "Svg"], attributes: toRemoveAttributes }
- ],
- [
- addJSXAttribute__default["default"],
- { elements: ["svg", "Svg"], attributes: toAddAttributes }
- ],
- removeJSXEmptyExpression__default["default"]
- ];
- if (opts.replaceAttrValues) {
- plugins.push([
- replaceJSXAttributeValue__default["default"],
- { values: replaceMapToValues(opts.replaceAttrValues) }
- ]);
- }
- if (opts.titleProp) {
- plugins.push(svgDynamicTitle__default["default"]);
- }
- if (opts.descProp) {
- plugins.push([svgDynamicTitle__default["default"], { tag: "desc" }, "desc"]);
- }
- if (opts.native) {
- plugins.push(transformReactNativeSVG__default["default"]);
- }
- return { plugins };
- };
- module.exports = plugin;
- //# sourceMappingURL=index.js.map
|