PluginProbe ʕ •ᴥ•ʔ
SiteOrigin CSS / 1.0.1
SiteOrigin CSS v1.0.1
1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.4.0 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.10 1.5.11 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 trunk 1.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.2.0
so-css / js / css.min.js
so-css / js Last commit date
css.js 11 years ago css.min.js 11 years ago csslint.js 11 years ago csslint.min.js 11 years ago editor.js 11 years ago editor.min.js 11 years ago inspector.js 11 years ago inspector.min.js 11 years ago jquery.sizes.js 11 years ago jquery.sizes.min.js 11 years ago specificity.js 11 years ago specificity.min.js 11 years ago
css.min.js
79 lines
1
2 (function($){'use strict';var fi=function(){this.cssImportStatements=[];this.cssKeyframeStatements=[];this.cssRegex=new RegExp('([\\s\\S]*?){([\\s\\S]*?)}','gi');this.cssMediaQueryRegex='((@media [\\s\\S]*?){([\\s\\S]*?}\\s*?)})';this.cssKeyframeRegex='((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})';this.combinedCSSRegex='((\\s*?@media[\\s\\S]*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})';this.cssCommentsRegex='(\\/\\*[\\s\\S]*?\\*\\/)';this.cssImportStatementRegex=new RegExp('@import .*?;','gi');};fi.prototype.stripComments=function(cssString){var regex=new RegExp(this.cssCommentsRegex,'gi');return cssString.replace(regex,'');};fi.prototype.parseCSS=function(source){if(source===undefined){return[];}
3 var css=[];while(true){var imports=this.cssImportStatementRegex.exec(source);if(imports!==null){this.cssImportStatements.push(imports[0]);css.push({selector:'@imports',type:'imports',styles:imports[0]});}
4 else{break;}}
5 source=source.replace(this.cssImportStatementRegex,'');var keyframesRegex=new RegExp(this.cssKeyframeRegex,'gi');var arr;while(true){arr=keyframesRegex.exec(source);if(arr===null){break;}
6 css.push({selector:'@keyframes',type:'keyframes',styles:arr[0]});}
7 source=source.replace(keyframesRegex,'');var unified=new RegExp(this.combinedCSSRegex,'gi');while(true){arr=unified.exec(source);if(arr===null){break;}
8 var selector='';if(arr[2]===undefined){selector=arr[5].split('\r\n').join('\n').trim();}
9 else{selector=arr[2].split('\r\n').join('\n').trim();}
10 var commentsRegex=new RegExp(this.cssCommentsRegex,'gi');var comments=commentsRegex.exec(selector);if(comments!==null){selector=selector.replace(commentsRegex,'').trim();}
11 selector=selector.replace(/\n+/,"\n");if(selector.indexOf('@media')!==-1){var cssObject={selector:selector,type:'media',subStyles:this.parseCSS(arr[3]+'\n}')};if(comments!==null){cssObject.comments=comments[0];}
12 css.push(cssObject);}
13 else{var rules=this.parseRules(arr[6]);var style={selector:selector,rules:rules};if(selector==='@font-face'){style.type='font-face';}
14 if(comments!==null){style.comments=comments[0];}
15 css.push(style);}}
16 return css;};fi.prototype.parseRules=function(rules){rules=rules.split('\r\n').join('\n');var ret=[];rules=rules.split(';');for(var i=0;i<rules.length;i++){var line=rules[i];line=line.trim();if(line.indexOf(':')!==-1){line=line.split(':');var cssDirective=line[0].trim();var cssValue=line.slice(1).join(':').trim();ret.push({directive:cssDirective,value:cssValue});}
17 else{if(line.trim().substr(0,7)==='base64,'){ret[ret.length-1].value+=line.trim();}
18 else{if(line.length>0){ret.push({directive:'',value:line,defective:true});}}}}
19 return ret;};fi.prototype.findCorrespondingRule=function(rules,directive,value){if(value===undefined){value=false;}
20 var ret=false;for(var i=0;i<rules.length;i++){if(rules[i].directive==directive){ret=rules[i];if(value===rules[i].value){break;}}}
21 return ret;};fi.prototype.findBySelector=function(cssObjectArray,selector,contains){if(contains===undefined){contains=false;}
22 var found=[];for(var i=0;i<cssObjectArray.length;i++){if(contains===false){if(cssObjectArray[i].selector===selector){found.push(cssObjectArray[i]);}}
23 else{if(cssObjectArray[i].selector.indexOf(selector)!==-1){found.push(cssObjectArray[i]);}}}
24 if(found.length<2){return found;}
25 else{var base=found[0];for(i=1;i<found.length;i++){this.intelligentCSSPush([base],found[i]);}
26 return[base];}};fi.prototype.deleteBySelector=function(cssObjectArray,selector){var ret=[];for(var i=0;i<cssObjectArray.length;i++){if(cssObjectArray[i].selector!==selector){ret.push(cssObjectArray[i]);}}
27 return ret;};fi.prototype.compressCSS=function(cssObjectArray){var compressed=[];var done={};for(var i=0;i<cssObjectArray.length;i++){var obj=cssObjectArray[i];if(done[obj.selector]===true){continue;}
28 var found=this.findBySelector(cssObjectArray,obj.selector);if(found.length!==0){compressed.push(found[0]);done[obj.selector]=true;}}
29 return compressed;};fi.prototype.cssDiff=function(css1,css2){if(css1.selector!==css2.selector){return false;}
30 if((css1.type==='media'||css2.type==='media')){return false;}
31 var diff={selector:css1.selector,rules:[]};var rule1,rule2;for(var i=0;i<css1.rules.length;i++){rule1=css1.rules[i];rule2=this.findCorrespondingRule(css2.rules,rule1.directive,rule1.value);if(rule2===false){diff.rules.push(rule1);}
32 else{if(rule1.value!==rule2.value){diff.rules.push(rule1);}}}
33 for(var ii=0;ii<css2.rules.length;ii++){rule2=css2.rules[ii];rule1=this.findCorrespondingRule(css1.rules,rule2.directive);if(rule1===false){rule2.type='DELETED';diff.rules.push(rule2);}}
34 if(diff.rules.length===0){return false;}
35 return diff;};fi.prototype.intelligentMerge=function(cssObjectArray,newArray,reverse){if(reverse===undefined){reverse=false;}
36 for(var i=0;i<newArray.length;i++){this.intelligentCSSPush(cssObjectArray,newArray[i],reverse);}
37 for(i=0;i<cssObjectArray.length;i++){var cobj=cssObjectArray[i];if(cobj.type==='media'||(cobj.type==='keyframes')){continue;}
38 cobj.rules=this.compactRules(cobj.rules);}};fi.prototype.intelligentCSSPush=function(cssObjectArray,minimalObject,reverse){var pushSelector=minimalObject.selector;var cssObject=false;if(reverse===undefined){reverse=false;}
39 if(reverse===false){for(var i=0;i<cssObjectArray.length;i++){if(cssObjectArray[i].selector===minimalObject.selector){cssObject=cssObjectArray[i];break;}}}
40 else{for(var j=cssObjectArray.length-1;j>-1;j--){if(cssObjectArray[j].selector===minimalObject.selector){cssObject=cssObjectArray[j];break;}}}
41 if(cssObject===false){cssObjectArray.push(minimalObject);}
42 else{if(minimalObject.type!=='media'){for(var ii=0;ii<minimalObject.rules.length;ii++){var rule=minimalObject.rules[ii];var oldRule=this.findCorrespondingRule(cssObject.rules,rule.directive);if(oldRule===false){cssObject.rules.push(rule);}else if(rule.type==='DELETED'){oldRule.type='DELETED';}
43 else{oldRule.value=rule.value;}}}
44 else{cssObject.subStyles=minimalObject.subStyles;}}};fi.prototype.compactRules=function(rules){var newRules=[];for(var i=0;i<rules.length;i++){if(rules[i].type!=='DELETED'){newRules.push(rules[i]);}}
45 return newRules;};fi.prototype.getCSSForEditor=function(cssBase,depth){if(depth===undefined){depth=0;}
46 var ret='';if(cssBase===undefined){cssBase=this.css;}
47 for(var i=0;i<cssBase.length;i++){if(cssBase[i].type==='imports'){ret+=cssBase[i].styles+'\n\n';}}
48 for(i=0;i<cssBase.length;i++){var tmp=cssBase[i];if(tmp.selector===undefined){continue;}
49 var comments="";if(tmp.comments!==undefined){comments=tmp.comments+'\n';}
50 if(tmp.type==='media'){ret+=comments+tmp.selector+'{\n';ret+=this.getCSSForEditor(tmp.subStyles,depth+1);ret+='}\n\n';}
51 else if(tmp.type!=='keyframes'&&tmp.type!=='imports'){ret+=this.getSpaces(depth)+comments+tmp.selector+' {\n';ret+=this.getCSSOfRules(tmp.rules,depth+1);ret+=this.getSpaces(depth)+'}\n\n';}}
52 for(i=0;i<cssBase.length;i++){if(cssBase[i].type==='keyframes'){ret+=cssBase[i].styles+'\n\n';}}
53 return ret;};fi.prototype.getImports=function(cssObjectArray){var imps=[];for(var i=0;i<cssObjectArray.length;i++){if(cssObjectArray[i].type==='imports'){imps.push(cssObjectArray[i].styles);}}
54 return imps;};fi.prototype.getCSSOfRules=function(rules,depth){var ret='';for(var i=0;i<rules.length;i++){if(rules[i]===undefined){continue;}
55 if(rules[i].value===''){continue;}
56 if(rules[i].defective===undefined){ret+=this.getSpaces(depth)+rules[i].directive+': '+rules[i].value+';\n';}
57 else{ret+=this.getSpaces(depth)+rules[i].value+';\n';}}
58 return ret||'\n';};fi.prototype.getSpaces=function(num){var ret='';for(var i=0;i<num*2;i++){ret+=' ';}
59 return ret;};fi.prototype.applyNamespacing=function(css,forcedNamespace){var cssObjectArray=css;var namespaceClass='.'+this.cssPreviewNamespace;if(forcedNamespace!==undefined){namespaceClass=forcedNamespace;}
60 if(typeof css==='string'){cssObjectArray=this.parseCSS(css);}
61 for(var i=0;i<cssObjectArray.length;i++){var obj=cssObjectArray[i];if(obj.selector.indexOf('@font-face')>-1||obj.selector.indexOf('keyframes')>-1||obj.selector.indexOf('@import')>-1||obj.selector.indexOf('.form-all')>-1||obj.selector.indexOf('#stage')>-1){continue;}
62 if(obj.type!=='media'){var selector=obj.selector.split(',');var newSelector=[];for(var j=0;j<selector.length;j++){if(selector[j].indexOf('.supernova')===-1){newSelector.push(namespaceClass+' '+selector[j]);}
63 else{newSelector.push(selector[j]);}}
64 obj.selector=newSelector.join(',');}
65 else{obj.subStyles=this.applyNamespacing(obj.subStyles,forcedNamespace);}}
66 return cssObjectArray;};fi.prototype.clearNamespacing=function(css,returnObj){if(returnObj===undefined){returnObj=false;}
67 var cssObjectArray=css;var namespaceClass='.'+this.cssPreviewNamespace;if(typeof css==='string'){cssObjectArray=this.parseCSS(css);}
68 for(var i=0;i<cssObjectArray.length;i++){var obj=cssObjectArray[i];if(obj.type!=='media'){var selector=obj.selector.split(',');var newSelector=[];for(var j=0;j<selector.length;j++){newSelector.push(selector[j].split(namespaceClass+' ').join(''));}
69 obj.selector=newSelector.join(',');}
70 else{obj.subStyles=this.clearNamespacing(obj.subStyles,true);}}
71 if(returnObj===false){return this.getCSSForEditor(cssObjectArray);}
72 else{return cssObjectArray;}};fi.prototype.createStyleElement=function(id,css,format){if(format===undefined){format=false;}
73 if(this.testMode===false&&format!=='nonamespace'){css=this.applyNamespacing(css);}
74 if(typeof css!=='string'){css=this.getCSSForEditor(css);}
75 if(format===true){css=this.getCSSForEditor(this.parseCSS(css));}
76 if(this.testMode!==false){return this.testMode('create style #'+id,css);}
77 var __el=document.getElementById(id);if(__el){__el.parentNode.removeChild(__el);}
78 var head=document.head||document.getElementsByTagName('head')[0],style=document.createElement('style');style.id=id;style.type='text/css';head.appendChild(style);if(style.styleSheet&&!style.sheet){style.styleSheet.cssText=css;}
79 else{style.appendChild(document.createTextNode(css));}};window.cssjs=fi;})();