babel-plugin-transform-prejss
Version:
Get the power of PostCSS and Babel with plugins in your JSS styles. Just put CSS into JS and get it as JSS object.
72 lines (53 loc) • 2.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extractExpressions2 = require('./extract-expressions');
var _extractExpressions3 = _interopRequireDefault(_extractExpressions2);
var _restoreExpressions = require('./restore-expressions');
var _restoreExpressions2 = _interopRequireDefault(_restoreExpressions);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var parser = void 0;
exports.default = function (_ref) {
var t = _ref.types;
return {
visitor: {
ImportDefaultSpecifier: function ImportDefaultSpecifier(p, _ref2) {
var opts = _ref2.opts,
file = _ref2.file;
var removeImports = typeof opts['removeImports'] !== 'undefined' ? opts['removeImports'] : 'prejss';
if (removeImports === false) {
return;
}
var importRef = p.parentPath.node.source.value;
if (importRef === removeImports) {
if (opts['silent'] !== true) {
console.log('babel-plugin-transform-prejss: remove import construction for "' + importRef + '"' + (' from "' + file.opts.filename + '"'));
}
p.parentPath.remove();
}
},
TaggedTemplateExpression: function TaggedTemplateExpression(p, _ref3) {
var opts = _ref3.opts;
var namespace = opts['namespace'] || 'preJSS';
if (!parser) {
var parserName = opts['parser'] || 'prejss-postcss-parser';
parser = require(parserName);
if (typeof parser !== 'function') {
parser = parser.default;
}
}
var tag = p.node.tag;
if (tag.name.toLowerCase() !== namespace.toLowerCase()) {
return;
}
var _extractExpressions = (0, _extractExpressions3.default)(p.node.quasi),
rawStyle = _extractExpressions.rawStyle,
variables = _extractExpressions.variables;
var parsed = parser(rawStyle, { config: opts.config });
var restored = (0, _restoreExpressions2.default)(parsed, variables);
p.replaceWith(restored);
}
}
};
};