From 1a4ecd6e0105bb604fa1e6e4f08a52fcc7f96b7d Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Sat, 15 Sep 2018 01:22:20 +0200 Subject: [PATCH] Take in account singleAtRule in CSS generator --- src/code_manager/model/CssGenerator.js | 13 ++++++++++--- src/parser/model/ParserCss.js | 2 +- test/specs/grapesjs/index.js | 9 +++++---- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/code_manager/model/CssGenerator.js b/src/code_manager/model/CssGenerator.js index 5f01c4d29..cc210a776 100644 --- a/src/code_manager/model/CssGenerator.js +++ b/src/code_manager/model/CssGenerator.js @@ -72,9 +72,16 @@ module.exports = require('backbone').Model.extend({ for (let atRule in atRules) { let rulesStr = ''; const mRules = atRules[atRule]; - mRules.forEach( - rule => (rulesStr += this.buildFromRule(rule, dump, opts)) - ); + + mRules.forEach(rule => { + const ruleStr = this.buildFromRule(rule, dump, opts); + + if (rule.get('singleAtRule')) { + code += `${atRule}{${ruleStr}}`; + } else { + rulesStr += ruleStr; + } + }); if (rulesStr) { code += `${atRule}{${rulesStr}}`; diff --git a/src/parser/model/ParserCss.js b/src/parser/model/ParserCss.js index dd2edae96..10d8b3dd2 100644 --- a/src/parser/model/ParserCss.js +++ b/src/parser/model/ParserCss.js @@ -13,7 +13,7 @@ module.exports = (config = {}) => ({ parse(str) { let result = []; const { parserCss, em = {} } = config; - const editor = em && em.get('Editor'); + const editor = em && em.get && em.get('Editor'); const nodes = parserCss ? parserCss(str, editor) : BrowserCssParser(str); nodes.forEach(node => (result = result.concat(this.checkNode(node)))); diff --git a/test/specs/grapesjs/index.js b/test/specs/grapesjs/index.js index 76ea8bf64..e23a542d6 100644 --- a/test/specs/grapesjs/index.js +++ b/test/specs/grapesjs/index.js @@ -164,18 +164,19 @@ describe('GrapesJS', () => { ` ` + htmlString; const editor = obj.init(config); const css = editor.getCss(); const styles = editor.getStyle(); expect(styles.length).toEqual(2); + expect((css.match(/@font-face/g) || []).length).toEqual(2); }); test('Set components as HTML', () => {