|
|
|
@ -6,6 +6,7 @@ import { |
|
|
|
has, |
|
|
|
clone, |
|
|
|
isString, |
|
|
|
forEach, |
|
|
|
keys |
|
|
|
} from 'underscore'; |
|
|
|
import { shallowDiff, hasDnd } from 'utils/mixins'; |
|
|
|
@ -722,6 +723,32 @@ const Component = Backbone.Model.extend(Styleable).extend( |
|
|
|
delete obj.attributes.class; |
|
|
|
delete obj.toolbar; |
|
|
|
|
|
|
|
if (this.em.getConfig('avoidDefaults')) { |
|
|
|
const defaults = this.defaults; |
|
|
|
|
|
|
|
forEach(defaults, (value, key) => { |
|
|
|
if (key !== 'type' && obj[key] === value) { |
|
|
|
delete obj[key]; |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
if (isEmpty(obj.type)) { |
|
|
|
delete obj.type; |
|
|
|
} |
|
|
|
|
|
|
|
forEach(['attributes', 'style'], prop => { |
|
|
|
if (isEmpty(defaults[prop]) && isEmpty(obj[prop])) { |
|
|
|
delete obj[prop]; |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
forEach(['classes', 'components'], prop => { |
|
|
|
if (isEmpty(defaults[prop]) && !obj[prop].length) { |
|
|
|
delete obj[prop]; |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
return obj; |
|
|
|
}, |
|
|
|
|
|
|
|
|