blob: 6b44cbc5a3b5c7de40f570a274364cd937176911 [file] [log] [blame]
Leo Repp58b9f112021-11-22 11:57:47 +01001exports.removeElement = function(elem){
2 if(elem.prev) elem.prev.next = elem.next;
3 if(elem.next) elem.next.prev = elem.prev;
4
5 if(elem.parent){
6 var childs = elem.parent.children;
7 childs.splice(childs.lastIndexOf(elem), 1);
8 }
9};
10
11exports.replaceElement = function(elem, replacement){
12 var prev = replacement.prev = elem.prev;
13 if(prev){
14 prev.next = replacement;
15 }
16
17 var next = replacement.next = elem.next;
18 if(next){
19 next.prev = replacement;
20 }
21
22 var parent = replacement.parent = elem.parent;
23 if(parent){
24 var childs = parent.children;
25 childs[childs.lastIndexOf(elem)] = replacement;
26 }
27};
28
29exports.appendChild = function(elem, child){
30 child.parent = elem;
31
32 if(elem.children.push(child) !== 1){
33 var sibling = elem.children[elem.children.length - 2];
34 sibling.next = child;
35 child.prev = sibling;
36 child.next = null;
37 }
38};
39
40exports.append = function(elem, next){
41 var parent = elem.parent,
42 currNext = elem.next;
43
44 next.next = currNext;
45 next.prev = elem;
46 elem.next = next;
47 next.parent = parent;
48
49 if(currNext){
50 currNext.prev = next;
51 if(parent){
52 var childs = parent.children;
53 childs.splice(childs.lastIndexOf(currNext), 0, next);
54 }
55 } else if(parent){
56 parent.children.push(next);
57 }
58};
59
60exports.prepend = function(elem, prev){
61 var parent = elem.parent;
62 if(parent){
63 var childs = parent.children;
64 childs.splice(childs.lastIndexOf(elem), 0, prev);
65 }
66
67 if(elem.prev){
68 elem.prev.next = prev;
69 }
70
71 prev.parent = parent;
72 prev.prev = elem.prev;
73 prev.next = elem;
74 elem.prev = prev;
75};
76
77