|
|
|
@ -11,9 +11,10 @@ define(['backbone'], |
|
|
|
|
|
|
|
/** |
|
|
|
* Get CSS from components |
|
|
|
* @param {Model} model |
|
|
|
* @return {String} |
|
|
|
*/ |
|
|
|
buildFromComp: function(model){ |
|
|
|
buildFromComp: function(model) { |
|
|
|
var coll = model.get('components') || model, |
|
|
|
code = ''; |
|
|
|
|
|
|
|
@ -43,43 +44,84 @@ define(['backbone'], |
|
|
|
}, |
|
|
|
|
|
|
|
/** @inheritdoc */ |
|
|
|
build: function(model, cssc) |
|
|
|
{ |
|
|
|
build: function(model, cssc) { |
|
|
|
this.compCls = []; |
|
|
|
var code = this.buildFromComp(model); |
|
|
|
var compCls = this.compCls; |
|
|
|
|
|
|
|
if(cssc){ |
|
|
|
var rules = cssc.getRules(); |
|
|
|
var mediaRules = {}; |
|
|
|
rules.each(function(rule){ |
|
|
|
var selectors = rule.get('selectors'); |
|
|
|
var ruleStyle = rule.get('style'); |
|
|
|
var state = rule.get('state'); |
|
|
|
var strSel = ''; |
|
|
|
var found = 0; |
|
|
|
|
|
|
|
selectors.each(function(selector){ |
|
|
|
strSel += '.' + selector.get('name'); |
|
|
|
if(compCls.indexOf(selector.get('name')) > -1) |
|
|
|
found = 1; |
|
|
|
}); |
|
|
|
if(strSel && found){ |
|
|
|
strSel += state ? ':' + state : ''; |
|
|
|
var strStyle = ''; |
|
|
|
if(ruleStyle && Object.keys(ruleStyle).length !== 0){ |
|
|
|
for(var prop2 in ruleStyle){ |
|
|
|
if(ruleStyle.hasOwnProperty(prop2)) |
|
|
|
strStyle += prop2 + ':' + ruleStyle[prop2] + ';'; |
|
|
|
} |
|
|
|
} |
|
|
|
if(strStyle) |
|
|
|
code += strSel + '{' + strStyle + '}'; |
|
|
|
var width = rule.get('maxWidth'); |
|
|
|
|
|
|
|
// If width setted will render it later
|
|
|
|
if(width){ |
|
|
|
var mRule = mediaRules[width]; |
|
|
|
if(mRule) |
|
|
|
mRule.push(rule); |
|
|
|
else |
|
|
|
mediaRules[width] = [rule]; |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
code += this.buildFromRule(rule); |
|
|
|
}, this); |
|
|
|
|
|
|
|
// Get media rules
|
|
|
|
for (var ruleW in mediaRules) { |
|
|
|
var meRules = mediaRules[ruleW]; |
|
|
|
var ruleC = ''; |
|
|
|
for(var i = 0, len = meRules.length; i < len; i++){ |
|
|
|
ruleC += this.buildFromRule(meRules[i]); |
|
|
|
} |
|
|
|
}); |
|
|
|
if(ruleC) |
|
|
|
code += '@media (max-width: ' + ruleW + '){' + ruleC + '}'; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
return code; |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* Get CSS from the rule model |
|
|
|
* @param {Model} rule |
|
|
|
* @return {string} CSS string |
|
|
|
*/ |
|
|
|
buildFromRule: function(rule) { |
|
|
|
var result = ''; |
|
|
|
var selectors = rule.get('selectors'); |
|
|
|
var ruleStyle = rule.get('style'); |
|
|
|
var state = rule.get('state'); |
|
|
|
var strSel = ''; |
|
|
|
var found = 0; |
|
|
|
var compCls = this.compCls; |
|
|
|
|
|
|
|
// Get string of selectors
|
|
|
|
selectors.each(function(selector){ |
|
|
|
strSel += '.' + selector.get('name'); |
|
|
|
if(compCls.indexOf(selector.get('name')) > -1) |
|
|
|
found = 1; |
|
|
|
}); |
|
|
|
|
|
|
|
if(strSel && found){ |
|
|
|
strSel += state ? ':' + state : ''; |
|
|
|
var strStyle = ''; |
|
|
|
|
|
|
|
// Get string of style properties
|
|
|
|
if(ruleStyle && Object.keys(ruleStyle).length !== 0){ |
|
|
|
for(var prop2 in ruleStyle){ |
|
|
|
if(ruleStyle.hasOwnProperty(prop2)) |
|
|
|
strStyle += prop2 + ':' + ruleStyle[prop2] + ';'; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if(strStyle) |
|
|
|
result += strSel + '{' + strStyle + '}'; |
|
|
|
} |
|
|
|
|
|
|
|
return result; |
|
|
|
}, |
|
|
|
|
|
|
|
}); |
|
|
|
}); |
|
|
|
|