index.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. 'use strict';
  2. var svgParser = require('svg-parser');
  3. var hastToBabelAst = require('@svgr/hast-util-to-babel-ast');
  4. var core = require('@babel/core');
  5. var svgrBabelPreset = require('@svgr/babel-preset');
  6. function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
  7. var hastToBabelAst__default = /*#__PURE__*/_interopDefaultLegacy(hastToBabelAst);
  8. var svgrBabelPreset__default = /*#__PURE__*/_interopDefaultLegacy(svgrBabelPreset);
  9. var __defProp = Object.defineProperty;
  10. var __defProps = Object.defineProperties;
  11. var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
  12. var __getOwnPropSymbols = Object.getOwnPropertySymbols;
  13. var __hasOwnProp = Object.prototype.hasOwnProperty;
  14. var __propIsEnum = Object.prototype.propertyIsEnumerable;
  15. var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  16. var __spreadValues = (a, b) => {
  17. for (var prop in b || (b = {}))
  18. if (__hasOwnProp.call(b, prop))
  19. __defNormalProp(a, prop, b[prop]);
  20. if (__getOwnPropSymbols)
  21. for (var prop of __getOwnPropSymbols(b)) {
  22. if (__propIsEnum.call(b, prop))
  23. __defNormalProp(a, prop, b[prop]);
  24. }
  25. return a;
  26. };
  27. var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
  28. const getJsxRuntimeOptions = (config) => {
  29. switch (config.jsxRuntime) {
  30. case null:
  31. case void 0:
  32. case "classic":
  33. return {
  34. jsxRuntime: "classic",
  35. importSource: "react",
  36. jsxRuntimeImport: { namespace: "React", source: "react" }
  37. };
  38. case "classic-preact":
  39. return {
  40. jsxRuntime: "classic",
  41. importSource: "preact/compat",
  42. jsxRuntimeImport: { specifiers: ["h"], source: "preact" }
  43. };
  44. case "automatic":
  45. return { jsxRuntime: "automatic" };
  46. default:
  47. throw new Error(`Unsupported "jsxRuntime" "${config.jsxRuntime}"`);
  48. }
  49. };
  50. const jsxPlugin = (code, config, state) => {
  51. const filePath = state.filePath || "unknown";
  52. const hastTree = svgParser.parse(code);
  53. const babelTree = hastToBabelAst__default["default"](hastTree);
  54. const svgPresetOptions = __spreadProps(__spreadValues({
  55. ref: config.ref,
  56. titleProp: config.titleProp,
  57. descProp: config.descProp,
  58. expandProps: config.expandProps,
  59. dimensions: config.dimensions,
  60. icon: config.icon,
  61. native: config.native,
  62. svgProps: config.svgProps,
  63. replaceAttrValues: config.replaceAttrValues,
  64. typescript: config.typescript,
  65. template: config.template,
  66. memo: config.memo,
  67. exportType: config.exportType,
  68. namedExport: config.namedExport
  69. }, getJsxRuntimeOptions(config)), {
  70. state
  71. });
  72. const result = core.transformFromAstSync(babelTree, code, __spreadValues({
  73. caller: {
  74. name: "svgr"
  75. },
  76. presets: [
  77. core.createConfigItem([svgrBabelPreset__default["default"], svgPresetOptions], {
  78. type: "preset"
  79. })
  80. ],
  81. filename: filePath,
  82. babelrc: false,
  83. configFile: false,
  84. code: true,
  85. ast: false,
  86. inputSourceMap: false
  87. }, config.jsx && config.jsx.babelConfig));
  88. if (!(result == null ? void 0 : result.code)) {
  89. throw new Error(`Unable to generate SVG file`);
  90. }
  91. return result.code;
  92. };
  93. module.exports = jsxPlugin;
  94. //# sourceMappingURL=index.js.map