Browse Source

Export only non default properties in frames

pull/3411/head
Artur Arseniev 5 years ago
parent
commit
13948064a3
  1. 35
      src/canvas/model/Frame.js

35
src/canvas/model/Frame.js

@ -1,8 +1,12 @@
import Backbone from 'backbone'; import { Model } from 'backbone';
import { result, forEach, isEmpty } from 'underscore';
import Component from 'dom_components/model/Component'; import Component from 'dom_components/model/Component';
import { isComponent, isObject } from 'utils/mixins'; import { isComponent, isObject } from 'utils/mixins';
export default Backbone.Model.extend({ const keyAutoW = '__aw';
const keyAutoH = '__ah';
export default Model.extend({
defaults: () => ({ defaults: () => ({
x: 0, x: 0,
y: 0, y: 0,
@ -36,6 +40,9 @@ export default Backbone.Model.extend({
allRules.add(styles); allRules.add(styles);
this.set('styles', allRules); this.set('styles', allRules);
} }
!props.width && this.set(keyAutoW, 1);
!props.height && this.set(keyAutoH, 1);
}, },
getComponent() { getComponent() {
@ -122,5 +129,29 @@ export default Backbone.Model.extend({
_emitUpdated(data = {}) { _emitUpdated(data = {}) {
this.em.trigger('frame:updated', { frame: this, ...data }); this.em.trigger('frame:updated', { frame: this, ...data });
},
toJSON(opts = {}) {
const obj = Model.prototype.toJSON.call(this, opts);
const defaults = result(this, 'defaults');
delete obj.styles;
obj[keyAutoW] && delete obj.width;
obj[keyAutoH] && delete obj.height;
// Remove private keys
forEach(obj, (value, key) => {
key.indexOf('__') === 0 && delete obj[key];
});
forEach(defaults, (value, key) => {
if (obj[key] === value) delete obj[key];
});
forEach(['attributes', 'head'], prop => {
if (isEmpty(obj[prop])) delete obj[prop];
});
return obj;
} }
}); });

Loading…
Cancel
Save