PageSourceSearch

https://www.siedl.net/s/SCRIPTS/cssvars.js

js siedl.net collected 2026-10-04 04:47:16 UTC 16,263 bytes, 395 lines download raw bytes

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.