1 | 'use strict';
|
2 |
|
3 | var fs = require('fs');
|
4 | var core$1 = require('@svgr/core');
|
5 | var rollupPluginutils = require('rollup-pluginutils');
|
6 | var core = require('@babel/core');
|
7 | var svgo = require('@svgr/plugin-svgo');
|
8 | var jsx = require('@svgr/plugin-jsx');
|
9 | var presetReact = require('@babel/preset-react');
|
10 | var presetEnv = require('@babel/preset-env');
|
11 | var presetTS = require('@babel/preset-typescript');
|
12 | var pluginTransformReactConstantElements = require('@babel/plugin-transform-react-constant-elements');
|
13 |
|
14 | function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
15 |
|
16 | function _interopNamespace(e) {
|
17 | if (e && e.__esModule) return e;
|
18 | var n = Object.create(null);
|
19 | if (e) {
|
20 | Object.keys(e).forEach(function (k) {
|
21 | if (k !== 'default') {
|
22 | var d = Object.getOwnPropertyDescriptor(e, k);
|
23 | Object.defineProperty(n, k, d.get ? d : {
|
24 | enumerable: true,
|
25 | get: function () { return e[k]; }
|
26 | });
|
27 | }
|
28 | });
|
29 | }
|
30 | n["default"] = e;
|
31 | return Object.freeze(n);
|
32 | }
|
33 |
|
34 | var fs__namespace = _interopNamespace(fs);
|
35 | var svgo__default = _interopDefaultLegacy(svgo);
|
36 | var jsx__default = _interopDefaultLegacy(jsx);
|
37 | var presetReact__default = _interopDefaultLegacy(presetReact);
|
38 | var presetEnv__default = _interopDefaultLegacy(presetEnv);
|
39 | var presetTS__default = _interopDefaultLegacy(presetTS);
|
40 | var pluginTransformReactConstantElements__default = _interopDefaultLegacy(pluginTransformReactConstantElements);
|
41 |
|
42 | var __defProp = Object.defineProperty;
|
43 | var __defProps = Object.defineProperties;
|
44 | var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
45 | var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
46 | var __hasOwnProp = Object.prototype.hasOwnProperty;
|
47 | var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
48 | var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
49 | var __spreadValues = (a, b) => {
|
50 | for (var prop in b || (b = {}))
|
51 | if (__hasOwnProp.call(b, prop))
|
52 | __defNormalProp(a, prop, b[prop]);
|
53 | if (__getOwnPropSymbols)
|
54 | for (var prop of __getOwnPropSymbols(b)) {
|
55 | if (__propIsEnum.call(b, prop))
|
56 | __defNormalProp(a, prop, b[prop]);
|
57 | }
|
58 | return a;
|
59 | };
|
60 | var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
61 | const babelOptions = {
|
62 | babelrc: false,
|
63 | configFile: false,
|
64 | presets: [
|
65 | core.createConfigItem(presetReact__default["default"], { type: "preset" }),
|
66 | core.createConfigItem([presetEnv__default["default"], { modules: false }], { type: "preset" })
|
67 | ],
|
68 | plugins: [core.createConfigItem(pluginTransformReactConstantElements__default["default"])]
|
69 | };
|
70 | const typeScriptBabelOptions = __spreadProps(__spreadValues({}, babelOptions), {
|
71 | presets: [
|
72 | ...babelOptions.presets,
|
73 | core.createConfigItem([presetTS__default["default"], { allowNamespaces: true, allExtensions: true, isTSX: true }], { type: "preset" })
|
74 | ]
|
75 | });
|
76 | const plugin = (options = {}) => {
|
77 | const EXPORT_REGEX = /(module\.exports *= *|export default)/;
|
78 | const filter = rollupPluginutils.createFilter(options.include || "**/*.svg", options.exclude);
|
79 | const { babel = true } = options;
|
80 | return {
|
81 | name: "svgr",
|
82 | async transform(data, id) {
|
83 | if (!filter(id))
|
84 | return null;
|
85 | if (id.slice(-4) !== ".svg")
|
86 | return null;
|
87 | const load = fs__namespace.readFileSync(id, "utf8");
|
88 | const previousExport = EXPORT_REGEX.test(data) ? data : null;
|
89 | const jsCode = await core$1.transform(load, options, {
|
90 | filePath: id,
|
91 | caller: {
|
92 | name: "@svgr/rollup",
|
93 | previousExport,
|
94 | defaultPlugins: [svgo__default["default"], jsx__default["default"]]
|
95 | }
|
96 | });
|
97 | if (babel) {
|
98 | const result = await core.transformAsync(jsCode, options.typescript ? typeScriptBabelOptions : babelOptions);
|
99 | if (!(result == null ? void 0 : result.code)) {
|
100 | throw new Error(`Error while transforming using Babel`);
|
101 | }
|
102 | return { code: result.code, map: null };
|
103 | }
|
104 | return {
|
105 | ast: {
|
106 | type: "Program",
|
107 | start: 0,
|
108 | end: 0,
|
109 | sourceType: "module",
|
110 | body: []
|
111 | },
|
112 | code: jsCode,
|
113 | map: null
|
114 | };
|
115 | }
|
116 | };
|
117 | };
|
118 |
|
119 | module.exports = plugin;
|
120 |
|