UNPKG

dart-sass-variable-loader

Version:

Sass variable loader module for webpack (dart)

63 lines (46 loc) 2.27 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); exports.default = parseVariables; var _sass = require('sass'); var _sass2 = _interopRequireDefault(_sass); var _camelCase = require('lodash/camelCase'); var _camelCase2 = _interopRequireDefault(_camelCase); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function constructSassString(variables) { var asVariables = variables.map(function (variable) { return '$' + variable.name + ': ' + variable.value + ';'; }).join('\n'); var asClasses = variables.map(function (variable) { return '.' + variable.name + ' { value: ' + variable.value + ' }'; }).join('\n'); return asVariables + '\n' + asClasses; } function parseVariables(variables) { var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var result = _sass2.default.renderSync({ data: constructSassString(variables), outputStyle: 'compressed' }).css.toString().replace('}.', '}\n.'); var parsedVariables = result.split(/\n/).filter(function (line) { return line && line.length; }).map(function (variable) { var _$exec = /\.(.+){value:(.+);?}/.exec(variable), _$exec2 = _slicedToArray(_$exec, 3), name = _$exec2[1], value = _$exec2[2]; var obj = {}; if (opts.preserveVariableNames) { obj[name] = value; return obj; } obj[(0, _camelCase2.default)(name)] = value; return obj; }); if (!parsedVariables.length) { return {}; } return Object.assign.apply(this, parsedVariables); }