12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- "use strict";
- exports.__esModule = true;
- exports.default = void 0;
- var _loaderUtils = require("loader-utils");
- var _core = require("@babel/core");
- var _core2 = _interopRequireDefault(require("@svgr/core"));
- var _pluginSvgo = _interopRequireDefault(require("@svgr/plugin-svgo"));
- var _pluginJsx = _interopRequireDefault(require("@svgr/plugin-jsx"));
- var _presetReact = _interopRequireDefault(require("@babel/preset-react"));
- var _presetEnv = _interopRequireDefault(require("@babel/preset-env"));
- var _pluginTransformReactConstantElements = _interopRequireDefault(require("@babel/plugin-transform-react-constant-elements"));
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- const babelOptions = {
- babelrc: false,
- configFile: false,
- presets: [(0, _core.createConfigItem)(_presetReact.default, {
- type: 'preset'
- }), (0, _core.createConfigItem)([_presetEnv.default, {
- modules: false
- }], {
- type: 'preset'
- })],
- plugins: [(0, _core.createConfigItem)(_pluginTransformReactConstantElements.default)]
- };
- function svgrLoader(source) {
- const callback = this.async();
- const {
- babel = true,
- ...options
- } = (0, _loaderUtils.getOptions)(this) || {};
- const readSvg = () => new Promise((resolve, reject) => {
- this.fs.readFile(this.resourcePath, (err, result) => {
- if (err) reject(err);
- resolve(result);
- });
- });
- const previousExport = (() => {
- if (source.toString('utf-8').startsWith('export ')) {
- return source;
- }
- const exportMatches = source.toString('utf-8').match(/^module.exports\s*=\s*(.*)/);
- return exportMatches ? `export default ${exportMatches[1]}` : null;
- })();
- const tranformSvg = svg => (0, _core2.default)(svg, options, {
- caller: {
- name: '@svgr/webpack',
- previousExport,
- defaultPlugins: [_pluginSvgo.default, _pluginJsx.default]
- },
- filePath: this.resourcePath
- }).then(jsCode => {
- if (!babel) return jsCode;
- return (0, _core.transformAsync)(jsCode, babelOptions).then(({
- code
- }) => code);
- }).then(result => callback(null, result)).catch(err => callback(err));
- if (previousExport) {
- readSvg().then(tranformSvg);
- } else {
- tranformSvg(source);
- }
- }
- var _default = svgrLoader;
- exports.default = _default;
|