UNPKG

1.15 kBJavaScriptView Raw
1var domquery = require("domquery");
2var render = require("./render");
3
4module.exports = {
5 setup: setup,
6 update: update
7};
8
9function setup (brick) {
10 if (brick.element) return;
11
12 var id, element;
13
14 if (brick.dom) {
15 id = brick.dom.id.splice(0, 1)[0];
16 element = document.getElementById(id);
17 brick.id = id;
18 } else {
19 element = document.createElement('div');
20 element.setAttribute('id', brick.id);
21 }
22
23 brick.element = domquery(element);
24}
25
26function update (brick) {
27 if (brick.parentMixing) return;
28
29 var replace = Array.prototype.slice.call(render.body(brick));
30 var current = Array.prototype.slice.call(brick.element[0].children);
31 var parent = brick.element[0];
32
33 var i = -1;
34 var len = replace.length;
35 var dirty;
36
37 while (++i < len) {
38 if (current && current[i] && current[i].isEqualNode(replace[i])) continue;
39
40 dirty = !current
41 || current[i].children.length != replace[i].children.length
42 || current[i].outerHTML != replace[i].outerHTML;
43
44 if (!dirty) continue;
45
46 if (!current || !current[i]) return parent.appendChild(replace[i]);
47
48 parent.replaceChild(replace[i], current[i]);
49 }
50}