1(function() 2{ 3 function css_analyze(p,nrulestab,varref) 4 { 5 var mediablock=false; 6 var attrblock=false; 7 var aktmediablock=''; 8 var insiderule=false; 9 var attrtab=[]; 10 var aktsel=""; 11 12 var ret=p.replace(/([\s\S]*?)([\{\};])/gm,function(all,token,sep) 13 { 14 token=token.replace(/^\s+/m,'').replace(/\s+$/m,'').replace(/\s+/gm," "); 15 if (insiderule) 16 { 17 if (/\S/.test(token)) 18 { 19 var matt=token.match(/(--[-\wäöüÃÃÃÃ]+):(.*)/); 20 if (matt) 21 { 22 if (!varref[matt[1]]) 23 varref[matt[1]]={} 24 varref[matt[1]][aktsel]={ 25 sel:aktsel, 26 varname:matt[1], 27 varval:Y.UA.ie&&Y.UA.ie<9 28 //? matt[2].replace(/rgba\(([-\w%\s,]+),[-\w\s%\.]+\)/,"rgb($1)") 29 ? matt[2].replace(/rgba\((.*?),(.*?),(.*?),(.*?)\)/,function($0,$1,$2,$3,$4) 30 { 31 return parseFloat($4)>0.5 ? "rgb("+$1+","+$2+","+$3+")" : "transparent" 32 }) 33 : matt[2] 34 }; 35 } 36 else //if (/var\(--/.test(token)) 37 attrtab.push(token); 38 } 39 if(sep==='}') 40 { 41 var nasel=aktsel; 42 var allatts=attrtab.join(";") 43 //if (/var\(--.*?\)/.test(allatts)) 44 nrulestab.push({ 45 sel:nasel, 46 style:allatts, 47 block:aktmediablock.toLowerCase()}); 48 attrtab=[]; 49 aktsel=""; 50 insiderule=false; 51 } 52 } 53 else 54 { 55 if (/^@/.test(token)) 56 { 57 if (sep=="{") 58 aktmediablock=token; 59 else 60 nrulestab.push({sel:";",style:"",block:token}); 61 } 62 else if (sep==='}') 63 aktmediablock=''; 64 else 65 { 66 aktsel=token; 67 attrtab=[]; 68 insiderule=true; 69 } 70 } 71 return ""; 72 }); 73 return true; 74 } 75 function mkcss(nrulestab) 76 { 77 var blocks={}; 78 for ( var i=0 ; i<nrulestab.length ; ++i ) 79 { 80 var aktblock=nrulestab[i].block; 81 if ( nrulestab[i].style.search(/[^\s;]/)>=0 ) 82 { 83 var aktblock=nrulestab[i].block; 84 var tab=aktblock ? "\t" : ""; 85 if (!blocks[aktblock]) 86 blocks[aktblock]=[]; 87 var stext=" {\n\t"+tab 88 +nrulestab[i].style 89 .replace(/; ?/g,";\n\t"+tab) 90 .replace(/\S+:\s*UNDEFINED;?/g,'') 91 .replace(/url\((')?\.\.\/media\//gi,"url($1../../MEDIA/") 92 +";\n"+tab+"}"; 93 if (/[^\{;\s\n\r\}]/.test(stext)) 94 blocks[aktblock].push(tab+nrulestab[i].sel+stext); 95 } 96 else if (aktblock && nrulestab[i].sel===";") 97 { 98 if (!blocks[aktblock]) 99 blocks[aktblock]=[]; 100 } 101 102 } 103 var csstab=[]; 104 for (var k in blocks) 105 { 106 if (k) 107 csstab.push(blocks[k].length ? "\n"+k+" {\n"+blocks[k].join("\n")+"\n}\n" : "\n"+k+";\n") 108 else 109 csstab.push(blocks[k].join("\n")); 110 } 111 return csstab.join(""); 112 } 113 114 if (window.CSS && window.CSS.supports && window.CSS.supports('(--foo: red)')) 115 { 116 Y.log("native css vars support"); 117 return; 118 } 119 var DEBUG=false; 120 if (DEBUG && window.MSInputMethodContext && document.documentMode) 121 { 122 if (Y===YAHOO) 123 Y=Y0; 124 try 125 { 126 Y.Get.js("/s/SCRIPTS/cssvars-ie11.js",function() 127 { 128 Y.log('cssvars-ie11.js'); 129 }); 130 } 131 catch(ex) 132 { 133 Y.log("C: cssvars-ie11.js"); 134 } 135 } 136 else 137 { 138 if (!Function.prototype.bind) 139 { 140 Function.prototype.bind = function(oThis) 141 { 142 if (typeof this !== 'function') 143 throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); 144 145 var aArgs = Array.prototype.slice.call(arguments, 1), 146 fToBind = this, 147 fNOP = function() {}, 148 fBound = function() 149 { 150 return fToBind.apply(this instanceof fNOP 151 ? this 152 : oThis, 153 aArgs.concat(Array.prototype.slice.call(arguments))); 154 }; 155 156 if (this.prototype) 157 fNOP.prototype = this.prototype; 158 159 fBound.prototype = new fNOP(); 160 161 return fBound; 162 }; 163 } 164 var sheetlist=[],rulestab=[],varref={},delsheets=[]; 165 Y0.use("node","io","promise",function(Y) 166 { 167 var ptab=[]; 168 ptab.push(new Y.Promise(function(resolve,reject) 169 { 170 Y.io("../../STYLES/colordefs.jsn",{on:{ 171 success:function(txn,resp) 172 { 173 try 174 { 175 var colordef=eval("("+resp.responseText+")"); 176 resolve(colordef); 177 } 178 catch(ex) 179 { 180 resolve({}); 181 } 182 }, 183 failure:function() 184 { 185 resolve({}); 186 } 187 }}) 188 })) 189 Y.all("link[href][rel='stylesheet']").each(function(n) 190 { 191 var href=n.getAttribute("href",2); 192 if (/^\.\.|^\/s\/STYLES/i.test(href) && !/^\/s\/STYLES\/(normal|accordionview)\.css$/i.test(href)) 193 { 194 sheetlist.push(n.get("styleSheet")); 195 delsheets.push(n); 196 ptab.push(new Y.Promise(function(resolve,reject) 197 { 198 Y.io(href,{on:{ 199 success:function(txn,resp) 200 { 201 resolve(resp.responseText); 202 }, 203 failure:function() 204 { 205 resolve(""); 206 } 207 }}) 208 })) 209 } 210 }); 211 Y.Promise.all(ptab).then(function(params) 212 { 213 var coldef=params[0]; 214 var schementab=[]; 215 for (var s in coldef) 216 { 217 if (s) 218 schementab.push("."+s); 219 else 220 schementab.push("body"); 221 } 222 for (var ip=1; ip<params.length;
222 ++ip) 223 if (params[ip]) 224 css_analyze(params[ip].replace(/\/\*.*?\*\//g,''),rulestab,varref); 225 var REschemen=new RegExp("^\.styleset ("+schementab.join("|")+")"); 226 //var REvar=/var\((--.*?)(,.*?)?\)/g; 227 var REvar=/var\((--.*?)(?:(?:,)((?:[^()]*?|\([^()]*?\)|\([^()]*?\([^()]*?\).*?\)|\([^()]*?\([^()]*?\(.*?\).*?\).*?\))+))?\)/g; 228 var rneu=[], indirtab=[]; 229 for (var ir=0; ir<rulestab.length; ++ir) 230 { 231 if (!REvar.test(rulestab[ir].style)) 232 { 233 rneu.push(rulestab[ir]); 234 continue; 235 } 236 var mru=rulestab[ir].sel.match(REschemen); 237 if (mru) 238 { 239 var rstyle=rulestab[ir].style; 240 do 241 { 242 var indir=false; 243 var maxrek=10; 244 rstyle=rstyle.replace(REvar,function($0,$1,$2) 245 { 246 var retval=varref && varref[$1] && varref[$1][mru[1]] && varref[$1][mru[1]].varval || $2 || 'UNDEFINED'; 247 if (REvar.test(retval)) 248 indir=true; 249 return retval; 250 }); 251 } while (indir && --maxrek); 252 rulestab[ir].style=rstyle; 253 rneu.push(rulestab[ir]); 254 } 255 else if (/^(html\.\S*?\s*)?\.yui-skin-sam \.cms_template/.test(rulestab[ir].sel)) 256 { 257 var r=rulestab[ir]; 258 var sel=r.sel; 259 var style=r.style; 260 var allvars=style.match(REvar); 261 var selref={},seltab=[]; 262 for (var iav=0; allvars && iav<allvars.length; ++iav) 263 { 264 var aktvars=allvars[iav].match(/--[^,\)]+/g); 265 for (var ii=0; aktvars&&ii<aktvars.length; ++ii) 266 for (var kaktsel in varref[aktvars[ii]]) 267 selref[kaktsel]=1; 268 } 269 for (var kav in selref) 270 seltab.push(kav); 271 272 for (var is=0; is<seltab.length; ++is) 273 { 274 r.sel=sel.replace(/^(html\.\S*?\s*)?\.yui-skin-sam \.cms_template/,"$1"+seltab[is])+", "+sel.replace(/^(html\.\S*?\s*)?\.yui-skin-sam \.cms_template\s+/,"$1"+seltab[is]); 275 var sdefined=false; 276 var rstyle=r.style; 277 var maxrek=10; 278 do 279 { 280 var indir=false; 281 rstyle=rstyle.replace(REvar,function(schema,$0,$1,$2) 282 { 283 var retval; 284 if (varref[$1] && varref[$1][schema]) 285 { 286 sdefined=true; 287 retval=varref[$1][schema].varval; 288 } 289 else if ($2) 290 { 291 sdefined=true; 292 retval=$2; 293 } 294 else 295 retval='UNDEFINED'; 296 if (REvar.test(retval)) 297 indir=true; 298 return retval; 299 }.bind(this,seltab[is])); 300 } while (indir && --maxrek) 301 r.style=rstyle; 302 rneu.push({sel:r.sel,style:r.style,block:r.block}); 303 } 304 } 305 else 306 { 307 var r=rulestab[ir]; 308 var sel=r.sel; 309 var style=r.style; 310 var allvars=style.match(REvar); 311 var selref={},seltab=[]; 312 for (var iav=0; allvars && iav<allvars.length; ++iav) 313 { 314 var aktvars=allvars[iav].match(/--[^,\)]+/g); 315 for (var ii=0; aktvars&&ii<aktvars.length; ++ii) 316 for (var kaktsel in varref[aktvars[ii]]) 317 selref[kaktsel]=1; 318 } 319 for (var kav in selref) 320 seltab.push(kav); 321 322 for (var is=0; is<seltab.length; ++is) 323 { 324 r.sel=sel.replace(/^(html\S+)?(.styleset\s*)?\s*(body|\.yui-skin-sam)?(.*)/,"$1"+seltab[is]+" $4"); 325 //r.sel=sel.replace(/^(.styleset\s*)?(body|\.yui-skin-sam)?(.*)/,"$1$2"+seltab[is]+" $3"); 326 //r.sel="."+schementab[is]+" "+r.sel; 327 var sdefined=false; 328 var rstyle=style; 329 var sel2=seltab[is].replace(/\s*\.styleset\s*/,''); 330 var maxrek=10; 331 do 332 { 333 var indir=false; 334 rstyle=rstyle.replace(REvar,function($0,$1,$2) 335 { 336 var retval; 337 if (varref[$1] && (varref[$1][seltab[is]] || varref[$1][sel2])) 338 { 339 sdefined=true; 340 retval=(varref[$1][seltab[is]] || varref[$1][sel2]).varval; 341 } 342 else if ($2) 343 { 344 sdefined=true; 345 retval=$2; 346 } 347 else 348 retval='UNDEFINED'; 349 if (REvar.test(retval)) 350 indir=true; 351 return retval; 352 }); 353 } while(indir && --maxrek) 354 r.style=rstyle; 355 rneu.push({sel:r.sel,style:r.style,block:r.block}); 356 } 357 var sdefined=false; 358 var rstyle=style; 359 var maxrek=10; 360 do 361 { 362 var indir=false; 363 364 rstyle=rstyle.replace(REvar,function($0,$1,$2) 365 { 366 var retval 367 if (varref[$1] && varref[$1][sel]) 368 { 369 sdefined=true; 370 retval=varref[$1][sel].varval; 371 } 372 else if ($2) 373 { 374 sdefined=true; 375 retval=$2; 376 } 377 else 378 retval='UNDEFINED'; 379 if (REvar.test(retval)) 380 indir=true; 381 return retval; 382 }); 383 } while (indir && --maxrek); 384 r.style=rstyle; 385 rneu.push({sel:r.sel,style:r.style,block:r.block}); 386 } 387 } 388 var csstext=mkcss(rneu); 389 Y.one("head").appendChild('<style>'+csstext+'</style>') 390 for (var is=0; is<delsheets.length; ++is) 391 delsheets[is].remove(); 392 }) 393 }); 394 } 395})()
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.