comparison lib/js/urweb.js @ 2121:f89be9cd2087

Support 'dynClass' and 'dynStyle' for <body>
author Adam Chlipala <adam@chlipala.net>
date Tue, 03 Mar 2015 15:55:00 -0500
parents 9e9c915f554c
children 248e2b32954b
comparison
equal deleted inserted replaced
2120:e3a79066380d 2121:f89be9cd2087
1198 if (s_class) { 1198 if (s_class) {
1199 var x = document.createElement("script"); 1199 var x = document.createElement("script");
1200 x.dead = false; 1200 x.dead = false;
1201 x.signal = s_class; 1201 x.signal = s_class;
1202 x.sources = null; 1202 x.sources = null;
1203 x.closures = htmlCls; 1203 x.closures = null;
1204 1204
1205 x.recreate = function(v) { 1205 x.recreate = function(v) {
1206 for (var ls = x.closures; ls != htmlCls; ls = ls.next) 1206 for (var ls = x.closures; ls != htmlCls; ls = ls.next)
1207 freeClosure(ls.data); 1207 freeClosure(ls.data);
1208 1208
1231 html.style.cssText = flatten(cls, v); 1231 html.style.cssText = flatten(cls, v);
1232 y.closures = concat(cls.v, htmlCls2); 1232 y.closures = concat(cls.v, htmlCls2);
1233 } 1233 }
1234 1234
1235 html.appendChild(y); 1235 html.appendChild(y);
1236 populate(y);
1237 }
1238 }
1239
1240 function bodyDynClass(s_class, s_style) {
1241 if (suspendScripts)
1242 return;
1243
1244 var htmlCls = null;
1245
1246 if (s_class) {
1247 var x = document.createElement("script");
1248 x.dead = false;
1249 x.signal = s_class;
1250 x.sources = null;
1251 x.closures = htmlCls;
1252
1253 x.recreate = function(v) {
1254 for (var ls = x.closures; ls != htmlCls; ls = ls.next)
1255 freeClosure(ls.data);
1256
1257 var cls = {v : null};
1258 document.body.className = flatten(cls, v);
1259 console.log("className to + " + document.body.className);
1260 x.closures = concat(cls.v, htmlCls);
1261 }
1262
1263 document.body.appendChild(x);
1264 populate(x);
1265 }
1266
1267 if (s_style) {
1268 var htmlCls2 = s_class ? null : htmlCls;
1269 var y = document.createElement("script");
1270 y.dead = false;
1271 y.signal = s_style;
1272 y.sources = null;
1273 y.closures = htmlCls2;
1274
1275 y.recreate = function(v) {
1276 for (var ls = y.closures; ls != htmlCls2; ls = ls.next)
1277 freeClosure(ls.data);
1278
1279 var cls = {v : null};
1280 document.body.style.cssText = flatten(cls, v);
1281 console.log("style to + " + document.body.style.cssText);
1282 y.closures = concat(cls.v, htmlCls2);
1283 }
1284
1285 document.body.appendChild(y);
1236 populate(y); 1286 populate(y);
1237 } 1287 }
1238 } 1288 }
1239 1289
1240 function addOnChange(x, f) { 1290 function addOnChange(x, f) {