1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- const cssom = require('cssom');
- const os = require('os');
- const CSSFontFaceRule = require('cssom/lib/CSSFontFaceRule').CSSFontFaceRule;
-
- /**
- * Returns Media Query text for a CSS source.
- *
- * @param {String} css source
- * @api public
- */
-
- module.exports = css => {
- const rules = cssom.parse(css).cssRules || [];
- const queries = [];
- let queryMedia;
- let queryString;
- let style;
- let property;
- let value;
- let important;
- let result;
-
- rules.forEach(({ type, media, cssRules }) => {
- /* CSS types
- STYLE: 1,
- IMPORT: 3,
- MEDIA: 4,
- FONT_FACE: 5,
- */
-
- if (type === cssom.CSSMediaRule.prototype.type) {
- queryMedia = Array.prototype.slice.call(media).join(', ');
- queryString = [];
-
- queryString.push(`${os.EOL}@media ${queryMedia} {`);
-
- cssRules.forEach(rule => {
- if (rule.type === cssom.CSSStyleRule.prototype.type || rule.type === CSSFontFaceRule.prototype.type) {
- queryString.push(` ${rule.type === cssom.CSSStyleRule.prototype.type ? rule.selectorText : '@font-face'} {`);
-
- for (style = 0; style < rule.style.length; style++) {
- property = rule.style[style];
- value = rule.style[property];
- important = rule.style._importants[property] ? ' !important' : '';
- queryString.push(` ${property}: ${value}${important};`);
- }
- queryString.push(' }');
- }
- });
-
- queryString.push('}');
- result = queryString.length ? queryString.join(os.EOL) + os.EOL : '';
-
- queries.push(result);
- }
- });
-
- return queries.join(os.EOL);
- };
|