Browse Source

Remove UndoManager references in Editor

pull/663/head
Artur Arseniev 8 years ago
parent
commit
58b732bdef
  1. 7
      src/editor/model/Editor.js
  2. 88
      src/undo_manager/index.js

7
src/editor/model/Editor.js

@ -23,7 +23,6 @@ const deps = [
];
const Backbone = require('backbone');
const UndoManager = require('backbone-undo');
const key = require('keymaster');
let timedInterval;
@ -59,7 +58,6 @@ module.exports = Backbone.Model.extend({
// Load modules
deps.forEach(name => this.loadModule(name));
//this.initUndoManager();
this.on('change:selectedComponent', this.componentSelected, this);
this.on('change:changesCount', this.updateChanges, this);
},
@ -93,11 +91,6 @@ module.exports = Backbone.Model.extend({
// Stuff to do post load (eg. init undo manager for loaded components)
const postLoad = () => {
// I've initialized undo manager in initialize() because otherwise the
// editor will unable to fetch the instance via 'editor.UndoManager' but
// I need to cleare the stack now as it was dirtied by 'onLoad' method
//this.um && this.um.clear();
//this.initUndoManager();
this.get('modules').forEach(module =>
module.postLoad && module.postLoad(this)
);

88
src/undo_manager/index.js

@ -11,84 +11,10 @@ import UndoManager from 'backbone-undo';
module.exports = () => {
let em;
let config;
let um;
let config;
let beforeCache;
const configDef = {};
const keymaps = {};
/*
const canvas = this.get('Canvas');
if (this.um) {
return;
}
var cmp = this.get('DomComponents');
if(cmp && this.config.undoManager) {
var that = this;
this.um = new UndoManager({
register: [cmp.getComponents(), this.get('CssComposer').getAll()],
track: true
});
this.UndoManager = this.um;
this.set('UndoManager', this.um);
key('⌘+z, ctrl+z', () => {
if (canvas.isInputFocused()) {
return;
}
that.um.undo(true);
that.trigger('component:update');
});
key('⌘+shift+z, ctrl+shift+z', () => {
if (canvas.isInputFocused()) {
return;
}
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);
}
*/
return {
@ -105,12 +31,6 @@ module.exports = () => {
em = config.em;
this.em = em;
um = new UndoManager({ track: true, register: [] });
um.changeUndoType('change', { condition: false });
const updated = () => {
em.trigger('change:selectedComponent');
em.trigger('change:canvasOffset');
console.log('updated');
};
const customUndoType = {
on(object, value, opt = {}) {
!beforeCache && (beforeCache = object.previousAttributes());
@ -130,17 +50,17 @@ module.exports = () => {
undo(model, bf, af, opt) {
model.set(bf);
updated();
},
redo(model, bf, af, opt) {
model.set(af);
updated();
}
};
const events = ['style', 'attributes', 'content', 'src'];
events.forEach(ev => um.addUndoType(`change:${ev}`, customUndoType));
um.changeUndoType('change', { condition: false });
um.on('undo redo', () => em.trigger('change:selectedComponent change:canvasOffset'));
return this;
},
@ -156,7 +76,7 @@ module.exports = () => {
/**
* Add an entity (Model/Collection) to track changes
* Add an entity (Model/Collection) to track
* @param {Model|Collection} entity Entity to track
*/
add(entity) {

Loading…
Cancel
Save