Repository URL to install this package:
|
Version:
1.2.1 ▾
|
@skava/modules
/
___dist
/
view-container
/
styles
/
styled-components
/
src
/
utils
/
stringifyRules.js
|
|---|
"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;