From 93783bb124a6b3d2c180d3b4f281d0abefc48cfe Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Mon, 11 Dec 2017 04:06:00 +0100 Subject: [PATCH] Fix handleChanges --- src/dom_components/index.js | 7 ++++--- src/dom_components/view/ComponentTextView.js | 6 +++--- src/undo_manager/index.js | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/dom_components/index.js b/src/dom_components/index.js index e1d2158bd..5f65f1a32 100644 --- a/src/dom_components/index.js +++ b/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)); }, diff --git a/src/dom_components/view/ComponentTextView.js b/src/dom_components/view/ComponentTextView.js index d1118b1f1..2471e5645 100644 --- a/src/dom_components/view/ComponentTextView.js +++ b/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'); diff --git a/src/undo_manager/index.js b/src/undo_manager/index.js index 41908f78c..b9774ba50 100644 --- a/src/undo_manager/index.js +++ b/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;