styled-components
Version:
Visual primitives for the component age. Use the best bits of ES6 and CSS to style your apps without stress
69 lines (53 loc) • 2.28 kB
JavaScript
Object.defineProperty(exports, '__esModule', { value: true });
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var helperModuleImports = require('@babel/helper-module-imports');
var traverse = _interopDefault(require('@babel/traverse'));
var babelPluginMacros = require('babel-plugin-macros');
var babelPlugin = _interopDefault(require('babel-plugin-styled-components'));
var _extends = Object.assign || function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
//
function styledComponentsMacro(_ref) {
var references = _ref.references,
state = _ref.state,
t = _ref.babel.types,
_ref$config = _ref.config,
config = _ref$config === undefined ? {} : _ref$config;
var program = state.file.path;
// FIRST STEP : replace `styled-components/macro` by `styled-components
// references looks like this
// { default: [path, path], css: [path], ... }
var customImportName = void 0;
Object.keys(references).forEach(function (refName) {
// generate new identifier
var id = void 0;
if (refName === 'default') {
id = helperModuleImports.addDefault(program, 'styled-components', { nameHint: 'styled' });
customImportName = id;
} else {
id = helperModuleImports.addNamed(program, refName, 'styled-components', { nameHint: refName });
}
// update references with the new identifiers
references[refName].forEach(function (referencePath) {
// eslint-disable-next-line no-param-reassign
referencePath.node.name = id.name;
});
});
// SECOND STEP : apply babel-plugin-styled-components to the file
var stateWithOpts = _extends({}, state, { opts: config, customImportName: customImportName });
traverse(program.parent, babelPlugin({ types: t }).visitor, undefined, stateWithOpts);
}
var configName = 'styledComponents';
var index = babelPluginMacros.createMacro(styledComponentsMacro, { configName: configName });
exports.default = index;
//# sourceMappingURL=styled-components-macro.cjs.js.map
;