Browse Source

Bind context for handleChanges and handleRemoves

pull/663/head
Artur Arseniev 9 years ago
parent
commit
e553a9b949
  1. 8
      src/dom_components/index.js
  2. 37
      src/editor/model/Editor.js

8
src/dom_components/index.js

@ -253,12 +253,14 @@ module.exports = () => {
const comps = model.get('components');
const um = em.get('UndoManager');
const handleUpdates = em.handleUpdates.bind(em);
const handleChanges = this.handleChanges.bind(this);
const handleRemoves = this.handleRemoves.bind(this);
um && um.add(model) && comps && um.add(comps);
const evn = 'change:style change:content change:attributes change:src';
[ [comps, 'add', this.handleChanges],
[comps, 'remove', this.handleRemoves],
[model, evn, handleUpdates],
[ [model, evn, handleUpdates],
[comps, 'add', handleChanges],
[comps, 'remove', handleRemoves],
[model.get('classes'), 'add remove', handleUpdates],
].forEach(els => {
em.stopListening(els[0], els[1], els[2]);

37
src/editor/model/Editor.js

@ -264,43 +264,6 @@ module.exports = Backbone.Model.extend({
that.um.redo(true);
that.trigger('component:update');
});
var beforeCache;
const customUndoType = {
on: function (model, value, opts) {
var opt = opts || {};
if(!beforeCache){
beforeCache = model.previousAttributes();
}
if (opt && opt.avoidStore) {
return;
} else {
var obj = {
object: model,
before: beforeCache,
after: model.toJSON()
};
beforeCache = null;
return obj;
}
},
undo: function (model, bf, af, opt) {
model.set(bf);
// Update also inputs inside Style Manager
that.trigger('change:selectedComponent');
},
redo: function (model, bf, af, opt) {
model.set(af);
// Update also inputs inside Style Manager
that.trigger('change:selectedComponent');
}
};
UndoManager.removeUndoType("change");
UndoManager.addUndoType("change:style", customUndoType);
UndoManager.addUndoType("change:attributes", customUndoType);
UndoManager.addUndoType("change:content", customUndoType);
UndoManager.addUndoType("change:src", customUndoType);
}
},
*/

Loading…
Cancel
Save