From b8d548aadd367475291a05db9798c0247787ae57 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Mon, 14 May 2018 08:15:16 +0200 Subject: [PATCH] Improve toJSON of CSSRule --- src/css_composer/model/CssRule.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/css_composer/model/CssRule.js b/src/css_composer/model/CssRule.js index 7599db4a1..81d455dee 100644 --- a/src/css_composer/model/CssRule.js +++ b/src/css_composer/model/CssRule.js @@ -1,4 +1,5 @@ import Styleable from 'domain_abstract/model/Styleable'; +import { isEmpty, forEach } from 'underscore'; var Backbone = require('backbone'); var Selectors = require('selector_manager/model/Selectors'); @@ -118,6 +119,25 @@ module.exports = Backbone.Model.extend(Styleable).extend({ return result; }, + toJSON(...args) { + const obj = Backbone.Model.prototype.toJSON.apply(this, args); + + if (this.em.getConfig('avoidDefaults')) { + const defaults = this.defaults; + + forEach(defaults, (value, key) => { + if (obj[key] === value) { + delete obj[key]; + } + }); + + if (isEmpty(obj.selectors)) delete obj.selectors; + if (isEmpty(obj.style)) delete obj.style; + } + + return obj; + }, + /** * Compare the actual model with parameters * @param {Object} selectors Collection of selectors