UNPKG

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
'use strict'; 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); } } }; };