Browse Source

Update getModelToStyle

pull/663/head
Artur Arseniev 9 years ago
parent
commit
90bc6ecfdf
  1. 4
      src/css_composer/index.js
  2. 30
      src/style_manager/index.js
  3. 5
      src/undo_manager/index.js

4
src/css_composer/index.js

@ -100,8 +100,6 @@ module.exports = () => {
postLoad(em) { postLoad(em) {
const ev = 'add remove'; const ev = 'add remove';
const rules = this.getAll(); const rules = this.getAll();
const um = em.get('UndoManager');
um && um.add(rules);
em.stopListening(rules, ev, this.handleChange); em.stopListening(rules, ev, this.handleChange);
em.listenTo(rules, ev, this.handleChange); em.listenTo(rules, ev, this.handleChange);
rules.each(rule => this.handleChange(rule)); rules.each(rule => this.handleChange(rule));
@ -114,6 +112,8 @@ module.exports = () => {
*/ */
handleChange(model) { handleChange(model) {
const ev = 'change:style'; const ev = 'change:style';
const um = em.get('UndoManager');
um && um.add(model);
const handleUpdates = em.handleUpdates.bind(em); const handleUpdates = em.handleUpdates.bind(em);
em.stopListening(model, ev, handleUpdates); em.stopListening(model, ev, handleUpdates);
em.listenTo(model, ev, handleUpdates); em.listenTo(model, ev, handleUpdates);

30
src/style_manager/index.js

@ -261,19 +261,29 @@ module.exports = () => {
* @return {Model} * @return {Model}
*/ */
getModelToStyle(model) { getModelToStyle(model) {
const classes = model.get('classes');
const em = c.em; const em = c.em;
const classes = model.get('classes');
const id = model.getId();
if (em && classes && classes.length) { if (em) {
const conf = em.get('Config'); const config = em.getConfig();
const state = !conf.devicePreviewMode ? model.get('state') : '';
const deviceW = em.getCurrentMedia();
const cssC = em.get('CssComposer'); const cssC = em.get('CssComposer');
const valid = classes.getStyleable(); const avoidInline = config.avoidInlineStyle;
const CssRule = cssC.get(valid, state, deviceW); const state = !config.devicePreviewMode ? model.get('state') : '';
const opts = { state };
if(CssRule && valid.length) {
return CssRule; // 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;
}
} }
} }

5
src/undo_manager/index.js

@ -232,6 +232,11 @@ module.exports = () => {
clear() { clear() {
um.clear(); um.clear();
return this; return this;
},
getInstance() {
return um;
} }
}; };
}; };

Loading…
Cancel
Save