UNPKG

1.97 kBJavaScriptView Raw
1"use strict";
2
3exports.__esModule = true;
4exports.default = void 0;
5
6var _loaderUtils = require("loader-utils");
7
8var _core = require("@babel/core");
9
10var _core2 = _interopRequireDefault(require("@svgr/core"));
11
12function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
14function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
15
16function svgrLoader(source) {
17 const callback = this.async();
18
19 const _ref = (0, _loaderUtils.getOptions)(this) || {},
20 {
21 babel = true
22 } = _ref,
23 options = _objectWithoutPropertiesLoose(_ref, ["babel"]);
24
25 const readSvg = () => new Promise((resolve, reject) => {
26 this.fs.readFile(this.resourcePath, (err, result) => {
27 if (err) reject(err);
28 resolve(result);
29 });
30 });
31
32 const exportMatches = source.toString('utf-8').match(/^module.exports\s*=\s*(.*)/);
33 const previousExport = exportMatches ? exportMatches[1] : null;
34
35 const pBabelTransform = async jsCode => new Promise((resolve, reject) => {
36 (0, _core.transform)(jsCode, {
37 babelrc: false,
38 presets: ['@babel/preset-react', ['@babel/preset-env', {
39 modules: false
40 }]],
41 plugins: ['@babel/plugin-transform-react-constant-elements']
42 }, (err, result) => {
43 if (err) reject(err);else resolve(result.code);
44 });
45 });
46
47 const tranformSvg = svg => (0, _core2.default)(svg, options, {
48 webpack: {
49 previousExport
50 }
51 }).then(jsCode => babel ? pBabelTransform(jsCode) : jsCode).then(result => callback(null, result)).catch(err => callback(err));
52
53 if (exportMatches) {
54 readSvg().then(tranformSvg);
55 } else {
56 tranformSvg(source);
57 }
58}
59
60var _default = svgrLoader;
61exports.default = _default;
\No newline at end of file