78 lines
1.5 KiB
JavaScript
78 lines
1.5 KiB
JavaScript
exports.removeElement = function(elem){
|
|
if(elem.prev) elem.prev.next = elem.next;
|
|
if(elem.next) elem.next.prev = elem.prev;
|
|
|
|
if(elem.parent){
|
|
var childs = elem.parent.children;
|
|
childs.splice(childs.lastIndexOf(elem), 1);
|
|
}
|
|
};
|
|
|
|
exports.replaceElement = function(elem, replacement){
|
|
var prev = replacement.prev = elem.prev;
|
|
if(prev){
|
|
prev.next = replacement;
|
|
}
|
|
|
|
var next = replacement.next = elem.next;
|
|
if(next){
|
|
next.prev = replacement;
|
|
}
|
|
|
|
var parent = replacement.parent = elem.parent;
|
|
if(parent){
|
|
var childs = parent.children;
|
|
childs[childs.lastIndexOf(elem)] = replacement;
|
|
}
|
|
};
|
|
|
|
exports.appendChild = function(elem, child){
|
|
child.parent = elem;
|
|
|
|
if(elem.children.push(child) !== 1){
|
|
var sibling = elem.children[elem.children.length - 2];
|
|
sibling.next = child;
|
|
child.prev = sibling;
|
|
child.next = null;
|
|
}
|
|
};
|
|
|
|
exports.append = function(elem, next){
|
|
var parent = elem.parent,
|
|
currNext = elem.next;
|
|
|
|
next.next = currNext;
|
|
next.prev = elem;
|
|
elem.next = next;
|
|
next.parent = parent;
|
|
|
|
if(currNext){
|
|
currNext.prev = next;
|
|
if(parent){
|
|
var childs = parent.children;
|
|
childs.splice(childs.lastIndexOf(currNext), 0, next);
|
|
}
|
|
} else if(parent){
|
|
parent.children.push(next);
|
|
}
|
|
};
|
|
|
|
exports.prepend = function(elem, prev){
|
|
var parent = elem.parent;
|
|
if(parent){
|
|
var childs = parent.children;
|
|
childs.splice(childs.lastIndexOf(elem), 0, prev);
|
|
}
|
|
|
|
if(elem.prev){
|
|
elem.prev.next = prev;
|
|
}
|
|
|
|
prev.parent = parent;
|
|
prev.prev = elem.prev;
|
|
prev.next = elem;
|
|
elem.prev = prev;
|
|
};
|
|
|
|
|