2 lines
6.7 KiB
JavaScript
Raw Normal View History

/*! css.js 19-04-2016 */
!function(a){"use strict";var b=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*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})",this.cssCommentsRegex="(\\/\\*[\\s\\S]*?\\*\\/)",this.cssImportStatementRegex=new RegExp("@import .*?;","gi")};b.prototype.stripComments=function(a){var b=new RegExp(this.cssCommentsRegex,"gi");return a.replace(b,"")},b.prototype.parseCSS=function(a){if(void 0===a)return[];for(var b=[];;){var c=this.cssImportStatementRegex.exec(a);if(null===c)break;this.cssImportStatements.push(c[0]),b.push({selector:"@imports",type:"imports",styles:c[0]})}a=a.replace(this.cssImportStatementRegex,"");for(var d,e=new RegExp(this.cssKeyframeRegex,"gi");;){if(d=e.exec(a),null===d)break;b.push({selector:"@keyframes",type:"keyframes",styles:d[0]})}a=a.replace(e,"");for(var f=new RegExp(this.combinedCSSRegex,"gi");;){if(d=f.exec(a),null===d)break;var g="";g=void 0===d[2]?d[5].split("\r\n").join("\n").trim():d[2].split("\r\n").join("\n").trim();var h=new RegExp(this.cssCommentsRegex,"gi"),i=h.exec(g);if(null!==i&&(g=g.replace(h,"").trim()),g=g.replace(/\n+/,"\n"),-1!==g.indexOf("@media")){var j={selector:g,type:"media",subStyles:this.parseCSS(d[3]+"\n}")};null!==i&&(j.comments=i[0]),b.push(j)}else{var k=this.parseRules(d[6]),l={selector:g,rules:k};"@font-face"===g&&(l.type="font-face"),null!==i&&(l.comments=i[0]),b.push(l)}}return b},b.prototype.parseRules=function(a){a=a.split("\r\n").join("\n");var b=[];a=a.split(";");for(var c=0;c<a.length;c++){var d=a[c];if(d=d.trim(),-1!==d.indexOf(":")){d=d.split(":");var e=d[0].trim(),f=d.slice(1).join(":").trim();if(e.length<1||f.length<1)continue;b.push({directive:e,value:f})}else"base64,"===d.trim().substr(0,7)?b[b.length-1].value+=d.trim():d.length>0&&b.push({directive:"",value:d,defective:!0})}return b},b.prototype.findCorrespondingRule=function(a,b,c){void 0===c&&(c=!1);for(var d=!1,e=0;e<a.length&&(a[e].directive!==b||(d=a[e],c!==a[e].value));e++);return d},b.prototype.findBySelector=function(a,b,c){void 0===c&&(c=!1);for(var d=[],e=0;e<a.length;e++)c===!1?a[e].selector===b&&d.push(a[e]):-1!==a[e].selector.indexOf(b)&&d.push(a[e]);if(d.length<2)return d;var f=d[0];for(e=1;e<d.length;e++)this.intelligentCSSPush([f],d[e]);return[f]},b.prototype.deleteBySelector=function(a,b){for(var c=[],d=0;d<a.length;d++)a[d].selector!==b&&c.push(a[d]);return c},b.prototype.compressCSS=function(a){for(var b=[],c={},d=0;d<a.length;d++){var e=a[d];if(c[e.selector]!==!0){var f=this.findBySelector(a,e.selector);0!==f.length&&(b.push(f[0]),c[e.selector]=!0)}}return b},b.prototype.cssDiff=function(a,b){if(a.selector!==b.selector)return!1;if("media"===a.type||"media"===b.type)return!1;for(var c,d,e={selector:a.selector,rules:[]},f=0;f<a.rules.length;f++)c=a.rules[f],d=this.findCorrespondingRule(b.rules,c.directive,c.value),d===!1?e.rules.push(c):c.value!==d.value&&e.rules.push(c);for(var g=0;g<b.rules.length;g++)d=b.rules[g],c=this.findCorrespondingRule(a.rules,d.directive),c===!1&&(d.type="DELETED",e.rules.push(d));return 0===e.rules.length?!1:e},b.prototype.intelligentMerge=function(a,b,c){void 0===c&&(c=!1);for(var d=0;d<b.length;d++)this.intelligentCSSPush(a,b[d],c);for(d=0;d<a.length;d++){var e=a[d];"media"!==e.type&&"keyframes"!==e.type&&(e.rules=this.compactRules(e.rules))}},b.prototype.intelligentCSSPush=function(a,b,c){var d=(b.selector,!1);if(void 0===c&&(c=!1),c===!1){for(var e=0;e<a.length;e++)if(a[e].selector===b.selector){d=a[e];break}}else for(var f=a.length-1;f>-1;f--)if(a[f].selector===b.selector){d=a[f];break}if(d===!1)a.push(b);else if("media"!==b.type)for(var g=0;g<b.rules.length;g++){var h=b.rules[g],i=this.findCorrespondingRule(d.rules,h.directive);i===!1?d.rules.push(h):"DELETED"===h.type?i.type="DELETED":i.value=h.value}else d.subStyles=d.subStyles.concat(b.subStyles)},b.