Browse Source

Fix handleChanges

pull/663/head
Artur Arseniev 9 years ago
parent
commit
93783bb124
  1. 7
      src/dom_components/index.js
  2. 6
      src/dom_components/view/ComponentTextView.js
  3. 2
      src/undo_manager/index.js

7
src/dom_components/index.js

@ -247,12 +247,13 @@ module.exports = () => {
* @private
*/
handleChanges(model, value, opts = {}) {
const comps = model.get('components');
const comps = model.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);
um && um.add(model);
um && comps && um.add(comps);
const evn = 'change:style change:content change:attributes change:src';
[ [model, evn, handleUpdates],
@ -265,7 +266,7 @@ module.exports = () => {
});
!opts.avoidStore && handleUpdates('', '', opts);
comps.each(model => this.handleChanges(model));
comps.each(model => this.handleChanges(model, value, opts));
},

6
src/dom_components/view/ComponentTextView.js

@ -60,14 +60,14 @@ module.exports = ComponentView.extend({
const content = this.getChildrenContainer().innerHTML;
const comps = model.get('components');
comps.length && comps.reset();
model.set('content', '');
// If there is a custom RTE the content is just baked staticly
// inside 'content'
if (rte.customRte) {
// Avoid double content by removing its children components
// and force to trigger change
model.set('content', '')
.set('content', content);
model.set('content', content);
} else {
const clean = model => {
model.set({
@ -82,7 +82,7 @@ module.exports = ComponentView.extend({
}
// Avoid re-render on reset with silent option
model.set('content', '').trigger('change:content', model);
model.trigger('change:content', model);
comps.add(content);
comps.each(model => clean(model));
comps.trigger('resetNavigator');

2
src/undo_manager/index.js

@ -31,6 +31,7 @@ module.exports = () => {
em = config.em;
this.em = em;
um = new UndoManager({ track: true, register: [] });
um.changeUndoType('change', { condition: false });
const customUndoType = {
on(object, value, opt = {}) {
!beforeCache && (beforeCache = object.previousAttributes());
@ -59,7 +60,6 @@ module.exports = () => {
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;

Loading…
Cancel
Save