Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = exports.splitByRules = void 0;

var _styleh = _interopRequireDefault(require("../../../styleh"));

var _stylisRuleSheet = _interopRequireDefault(require("../../../stylis-rule-sheet"));

var _transpileStyles = _interopRequireDefault(require("../../../transpileStyles"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

// @flow
const stylisSplitter = new _styleh.default({
  global: false,
  cascade: false,
  keyframe: false,
  prefix: false,
  compress: false,
  semicolon: false
});
const stylis = new _styleh.default({
  global: false,
  cascade: true,
  keyframe: false,
  prefix: true,
  compress: false,
  semicolon: true
}); // Wrap `insertRulePlugin to build a list of rules,
// and then make our own plugin to return the rules. This
// makes it easier to hook into the existing SSR architecture

let parsingRules = []; // eslint-disable-next-line consistent-return

const returnRulesPlugin = context => {
  if (context === -2) {
    const parsedRules = parsingRules;
    parsingRules = [];
    return parsedRules;
  }
};

const parseRulesPlugin = (0, _stylisRuleSheet.default)(rule => {
  parsingRules.push(rule);
});
stylis.use([parseRulesPlugin, returnRulesPlugin]);
stylisSplitter.use([parseRulesPlugin, returnRulesPlugin]); // const matchComment = /^\s*\/\/.*$/gm

const stringifyRules = (rules, selector, prefix) => {
  // replace JS comments
  // @todo
  // const flatCSS = rules.join('').replace(matchComment, '')
  const flatCSS = rules.join('').replace(/^\s*\/\/.*$/gm, '');
  const cssStr = selector && prefix ? `${prefix} ${selector} { ${flatCSS} }` : flatCSS;
  const preCompiled = cssStr;
  const namespace = prefix || !selector ? '' : selector;
  const postRendered = (0, _transpileStyles.default)(preCompiled); // console.log({ postRendered })

  return stylis(namespace, postRendered);
};

const splitByRules = css => stylisSplitter('', css);

exports.splitByRules = splitByRules;
var _default = stringifyRules;
exports.default = _default;