Browse Source

Refactor css composer files to classes

pull/4234/head
Artur Arseniev 5 years ago
parent
commit
f0e4dbd17e
  1. 10
      src/css_composer/index.js
  2. 10
      src/css_composer/model/CssRule.js
  3. 22
      src/css_composer/model/CssRules.js
  4. 8
      src/css_composer/view/CssGroupRuleView.js
  5. 12
      src/css_composer/view/CssRuleView.js
  6. 36
      src/css_composer/view/CssRulesView.js

10
src/css_composer/index.js

@ -27,15 +27,15 @@
* @module CssComposer * @module CssComposer
*/ */
import { isArray, isString, isUndefined, each } from 'underscore'; import { isArray, isString, isUndefined } from 'underscore';
import { isObject } from 'utils/mixins'; import { isObject } from '../utils/mixins';
import Module from '../common/module';
import Selectors from '../selector_manager/model/Selectors';
import Selector from '../selector_manager/model/Selector';
import defaults from './config/config'; import defaults from './config/config';
import CssRule from './model/CssRule'; import CssRule from './model/CssRule';
import CssRules from './model/CssRules'; import CssRules from './model/CssRules';
import CssRulesView from './view/CssRulesView'; import CssRulesView from './view/CssRulesView';
import Selectors from 'selector_manager/model/Selectors';
import Selector from 'selector_manager/model/Selector';
import Module from 'common/module';
export default () => { export default () => {
let em; let em;

10
src/css_composer/model/CssRule.js

@ -1,9 +1,9 @@
import { Model } from 'backbone';
import Styleable from 'domain_abstract/model/Styleable';
import { isEmpty, forEach, isString, isArray } from 'underscore'; import { isEmpty, forEach, isString, isArray } from 'underscore';
import Selectors from 'selector_manager/model/Selectors'; import { Model } from '../../common';
import { getMediaLength } from 'code_manager/model/CssGenerator'; import Styleable from '../../domain_abstract/model/Styleable';
import { isEmptyObj, hasWin } from 'utils/mixins'; import Selectors from '../../selector_manager/model/Selectors';
import { getMediaLength } from '../../code_manager/model/CssGenerator';
import { isEmptyObj, hasWin } from '../../utils/mixins';
const { CSS } = hasWin() ? window : {}; const { CSS } = hasWin() ? window : {};

22
src/css_composer/model/CssRules.js

@ -1,11 +1,7 @@
import Backbone from 'backbone'; import { Collection } from '../../common';
import CssRule from './CssRule'; import CssRule from './CssRule';
const { Collection } = Backbone; export default class CssRules extends Collection {
export default Collection.extend({
model: CssRule,
initialize(models, opt) { initialize(models, opt) {
// Inject editor // Inject editor
if (opt && opt.em) this.editor = opt.em; if (opt && opt.em) this.editor = opt.em;
@ -15,22 +11,22 @@ export default Collection.extend({
this.on('remove', this.onRemove); this.on('remove', this.onRemove);
this.on('add', this.onAdd); this.on('add', this.onAdd);
}); });
}, }
toJSON(opts) { toJSON(opts) {
const result = Collection.prototype.toJSON.call(this, opts); const result = Collection.prototype.toJSON.call(this, opts);
return result.filter(rule => rule.style && !rule.shallow); return result.filter(rule => rule.style && !rule.shallow);
}, }
onAdd(model, c, o) { onAdd(model, c, o) {
model.ensureSelectors(model, c, o); // required for undo model.ensureSelectors(model, c, o); // required for undo
}, }
onRemove(removed) { onRemove(removed) {
const em = this.editor; const em = this.editor;
em.stopListening(removed); em.stopListening(removed);
em.get('UndoManager').remove(removed); em.get('UndoManager').remove(removed);
}, }
add(models, opt = {}) { add(models, opt = {}) {
if (typeof models === 'string') { if (typeof models === 'string') {
@ -38,5 +34,7 @@ export default Collection.extend({
} }
opt.em = this.editor; opt.em = this.editor;
return Collection.prototype.add.apply(this, [models, opt]); return Collection.prototype.add.apply(this, [models, opt]);
}, }
}); }
CssRules.prototype.model = CssRule;

8
src/css_composer/view/CssGroupRuleView.js

@ -1,9 +1,9 @@
import CssRuleView from './CssRuleView'; import CssRuleView from './CssRuleView';
export default CssRuleView.extend({ export default class CssGroupRuleView extends CssRuleView {
_createElement: function(tagName) { _createElement() {
return document.createTextNode(''); return document.createTextNode('');
}, }
render() { render() {
const model = this.model; const model = this.model;
@ -11,4 +11,4 @@ export default CssRuleView.extend({
this.el.textContent = model.getDeclaration({ important }); this.el.textContent = model.getDeclaration({ important });
return this; return this;
} }
}); }

12
src/css_composer/view/CssRuleView.js

@ -1,7 +1,9 @@
import Backbone from 'backbone'; import { View } from '../../common';
export default Backbone.View.extend({ export default class CssRuleView extends View {
tagName: 'style', tagName() {
return 'style';
}
initialize(o = {}) { initialize(o = {}) {
this.config = o.config || {}; this.config = o.config || {};
@ -9,7 +11,7 @@ export default Backbone.View.extend({
this.listenTo(model, 'change', this.render); this.listenTo(model, 'change', this.render);
this.listenTo(model, 'destroy remove', this.remove); this.listenTo(model, 'destroy remove', this.remove);
this.listenTo(model.get('selectors'), 'change', this.render); this.listenTo(model.get('selectors'), 'change', this.render);
}, }
render() { render() {
const { model, el } = this; const { model, el } = this;
@ -17,4 +19,4 @@ export default Backbone.View.extend({
el.innerHTML = model.toCSS({ important }); el.innerHTML = model.toCSS({ important });
return this; return this;
} }
}); }

36
src/css_composer/view/CssRulesView.js

@ -1,13 +1,11 @@
import Backbone from 'backbone'; import { View } from '../../common';
import { createEl } from '../../utils/dom';
import CssRuleView from './CssRuleView'; import CssRuleView from './CssRuleView';
import CssGroupRuleView from './CssGroupRuleView'; import CssGroupRuleView from './CssGroupRuleView';
const $ = Backbone.$; const getBlockId = (pfx, order) => `${pfx}${order ? `-${parseFloat(order)}` : ''}`;
const getBlockId = (pfx, order) => export default class CssRulesView extends View {
`${pfx}${order ? `-${parseFloat(order)}` : ''}`;
export default Backbone.View.extend({
initialize(o) { initialize(o) {
const config = o.config || {}; const config = o.config || {};
this.atRules = {}; this.atRules = {};
@ -18,7 +16,7 @@ export default Backbone.View.extend({
const coll = this.collection; const coll = this.collection;
this.listenTo(coll, 'add', this.addTo); this.listenTo(coll, 'add', this.addTo);
this.listenTo(coll, 'reset', this.render); this.listenTo(coll, 'reset', this.render);
}, }
/** /**
* Add to collection * Add to collection
@ -27,7 +25,7 @@ export default Backbone.View.extend({
* */ * */
addTo(model) { addTo(model) {
this.addToCollection(model); this.addToCollection(model);
}, }
/** /**
* Add new object to collection * Add new object to collection
@ -100,16 +98,11 @@ export default Backbone.View.extend({
} }
return rendered; return rendered;
}, }
getMediaWidth(mediaText) { getMediaWidth(mediaText) {
return ( return mediaText && mediaText.replace(`(${this.em.getConfig('mediaCondition')}: `, '').replace(')', '');
mediaText && }
mediaText
.replace(`(${this.em.getConfig('mediaCondition')}: `, '')
.replace(')', '')
);
},
render() { render() {
this.renderStarted = 1; this.renderStarted = 1;
@ -119,18 +112,13 @@ export default Backbone.View.extend({
$el.empty(); $el.empty();
// Create devices related DOM structure, ensure also to have a default container // Create devices related DOM structure, ensure also to have a default container
const prs = em const prs = em.get('DeviceManager').getAll().pluck('priority');
.get('DeviceManager')
.getAll()
.pluck('priority');
prs.every(pr => pr) && prs.unshift(0); prs.every(pr => pr) && prs.unshift(0);
prs.forEach(pr => prs.forEach(pr => frag.appendChild(createEl('div', { id: getBlockId(className, pr) })));
$(`<div id="${getBlockId(className, pr)}"></div>`).appendTo(frag)
);
collection.each(model => this.addToCollection(model, frag)); collection.each(model => this.addToCollection(model, frag));
$el.append(frag); $el.append(frag);
$el.attr('class', className); $el.attr('class', className);
return this; return this;
} }
}); }

Loading…
Cancel
Save