diff --git a/src/css_composer/index.js b/src/css_composer/index.js index 20b4e3304..2e4e1d9f0 100644 --- a/src/css_composer/index.js +++ b/src/css_composer/index.js @@ -100,8 +100,6 @@ module.exports = () => { postLoad(em) { const ev = 'add remove'; const rules = this.getAll(); - const um = em.get('UndoManager'); - um && um.add(rules); em.stopListening(rules, ev, this.handleChange); em.listenTo(rules, ev, this.handleChange); rules.each(rule => this.handleChange(rule)); @@ -114,6 +112,8 @@ module.exports = () => { */ handleChange(model) { const ev = 'change:style'; + const um = em.get('UndoManager'); + um && um.add(model); const handleUpdates = em.handleUpdates.bind(em); em.stopListening(model, ev, handleUpdates); em.listenTo(model, ev, handleUpdates); diff --git a/src/style_manager/index.js b/src/style_manager/index.js index 70006c83a..639241429 100644 --- a/src/style_manager/index.js +++ b/src/style_manager/index.js @@ -261,19 +261,29 @@ module.exports = () => { * @return {Model} */ getModelToStyle(model) { - const classes = model.get('classes'); const em = c.em; + const classes = model.get('classes'); + const id = model.getId(); - if (em && classes && classes.length) { - const conf = em.get('Config'); - const state = !conf.devicePreviewMode ? model.get('state') : ''; - const deviceW = em.getCurrentMedia(); + if (em) { + const config = em.getConfig(); const cssC = em.get('CssComposer'); - const valid = classes.getStyleable(); - const CssRule = cssC.get(valid, state, deviceW); - - if(CssRule && valid.length) { - return CssRule; + const avoidInline = config.avoidInlineStyle; + const state = !config.devicePreviewMode ? model.get('state') : ''; + const opts = { state }; + + // If true the model will be always a rule + if (avoidInline) { + const rule = cssC.getIdRule(id, opts); + return rule ? rule : cssC.setIdRule(id, {}, opts); + } else if (classes && classes.length) { + const deviceW = em.getCurrentMedia(); + const valid = classes.getStyleable(); + const CssRule = cssC.get(valid, state, deviceW); + + if (CssRule && valid.length) { + return CssRule; + } } } diff --git a/src/undo_manager/index.js b/src/undo_manager/index.js index 34d52513a..786fd4af6 100644 --- a/src/undo_manager/index.js +++ b/src/undo_manager/index.js @@ -232,6 +232,11 @@ module.exports = () => { clear() { um.clear(); return this; + }, + + + getInstance() { + return um; } }; };