@@ -161,9 +161,15 @@ function render(elem) {
161 case "EContainer": e = container(elem[2][1],elem[2][2]); break;
161 case "EContainer": e = container(elem[2][1],elem[2][2]); break;
162 case "EHtml":
162 case "EHtml":
163 e = elem[2][1];
163 e = elem[2][1];
164+ if (e.type !== 'button') {
164− var p = Value.getExcess(e);
165+ var p = Value.getExcess(e);
165− elem[3] -= p[0];
166+ elem[3] -= p[0];
166− elem[4] -= p[1];
167+ elem[4] -= p[1];
170+ case "EExternalHtml":
171+ e = newElement('div');
172+ addTo(e, elem[2][1]);
169 e.id = elem[1];
175 e.id = elem[1];
@@ -237,9 +243,21 @@ function update(node,curr,next) {
237 case "EEmpty":
243 case "EEmpty":
239 case "EHtml":
245 case "EHtml":
246+ if (next[1] !== curr[1]) {
247+ var e = render(next);
248+ node.parentNode.replaceChild(e,node);
251+ if (e.type !== 'button') {
240− var p = Value.getExcess(node);
252+ var p = Value.getExcess(node);
241− next[3] -= p[0];
253+ next[3] -= p[0];
242− next[4] -= p[1];
254+ next[4] -= p[1];
257+ case "EExternalHtml":
258+ if (next[1] !== curr[1])
259+ node.parentNode.replaceChild(render(next),node);
244 if (next[3] !== curr[3]) node.style.width = (~~next[3]) + 'px';
262 if (next[3] !== curr[3]) node.style.width = (~~next[3]) + 'px';
245 if (next[4] !== curr[4]) node.style.height = (~~next[4]) + 'px';
263 if (next[4] !== curr[4]) node.style.height = (~~next[4]) + 'px';