styled-components-macro.cjs.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
  4. var helperModuleImports = require('@babel/helper-module-imports');
  5. var traverse = _interopDefault(require('@babel/traverse'));
  6. var babelPluginMacros = require('babel-plugin-macros');
  7. var babelPlugin = _interopDefault(require('babel-plugin-styled-components'));
  8. function _extends() {
  9. _extends = Object.assign || function (target) {
  10. for (var i = 1; i < arguments.length; i++) {
  11. var source = arguments[i];
  12. for (var key in source) {
  13. if (Object.prototype.hasOwnProperty.call(source, key)) {
  14. target[key] = source[key];
  15. }
  16. }
  17. }
  18. return target;
  19. };
  20. return _extends.apply(this, arguments);
  21. }
  22. function styledComponentsMacro(_ref) {
  23. var references = _ref.references,
  24. state = _ref.state,
  25. t = _ref.babel.types,
  26. _ref$config = _ref.config,
  27. config = _ref$config === void 0 ? {} : _ref$config;
  28. var program = state.file.path; // FIRST STEP : replace `styled-components/macro` by `styled-components
  29. // references looks like this
  30. // { default: [path, path], css: [path], ... }
  31. var customImportName;
  32. Object.keys(references).forEach(function (refName) {
  33. // generate new identifier
  34. var id;
  35. if (refName === 'default') {
  36. id = helperModuleImports.addDefault(program, 'styled-components', {
  37. nameHint: 'styled'
  38. });
  39. customImportName = id;
  40. } else {
  41. id = helperModuleImports.addNamed(program, refName, 'styled-components', {
  42. nameHint: refName
  43. });
  44. } // update references with the new identifiers
  45. references[refName].forEach(function (referencePath) {
  46. // eslint-disable-next-line no-param-reassign
  47. referencePath.node.name = id.name;
  48. });
  49. }); // SECOND STEP : apply babel-plugin-styled-components to the file
  50. var stateWithOpts = _extends({}, state, {
  51. opts: config,
  52. customImportName: customImportName
  53. });
  54. traverse(program.parent, babelPlugin({
  55. types: t
  56. }).visitor, undefined, stateWithOpts);
  57. }
  58. var index = babelPluginMacros.createMacro(styledComponentsMacro, {
  59. configName: 'styledComponents'
  60. });
  61. exports.default = index;
  62. //# sourceMappingURL=styled-components-macro.cjs.js.map