UNPKG

2.75 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.prepend = exports.append = exports.appendChild = exports.replaceElement = exports.removeElement = void 0;
4/***
5 * Remove an element from the dom
6 *
7 * @param elem The element to be removed
8 */
9function removeElement(elem) {
10 if (elem.prev)
11 elem.prev.next = elem.next;
12 if (elem.next)
13 elem.next.prev = elem.prev;
14 if (elem.parent) {
15 var childs = elem.parent.children;
16 childs.splice(childs.lastIndexOf(elem), 1);
17 }
18}
19exports.removeElement = removeElement;
20/***
21 * Replace an element in the dom
22 *
23 * @param elem The element to be replaced
24 * @param replacement The element to be added
25 */
26function replaceElement(elem, replacement) {
27 var prev = (replacement.prev = elem.prev);
28 if (prev) {
29 prev.next = replacement;
30 }
31 var next = (replacement.next = elem.next);
32 if (next) {
33 next.prev = replacement;
34 }
35 var parent = (replacement.parent = elem.parent);
36 if (parent) {
37 var childs = parent.children;
38 childs[childs.lastIndexOf(elem)] = replacement;
39 }
40}
41exports.replaceElement = replaceElement;
42/***
43 * Append a child to an element
44 *
45 * @param elem The element to append to
46 * @param child The element to be added as a child
47 */
48function appendChild(elem, child) {
49 removeElement(child);
50 child.parent = elem;
51 if (elem.children.push(child) !== 1) {
52 var sibling = elem.children[elem.children.length - 2];
53 sibling.next = child;
54 child.prev = sibling;
55 child.next = null;
56 }
57}
58exports.appendChild = appendChild;
59/***
60 * Append an element after another
61 *
62 * @param elem The element to append to
63 * @param next The element be added
64 */
65function append(elem, next) {
66 removeElement(next);
67 var parent = elem.parent;
68 var currNext = elem.next;
69 next.next = currNext;
70 next.prev = elem;
71 elem.next = next;
72 next.parent = parent;
73 if (currNext) {
74 currNext.prev = next;
75 if (parent) {
76 var childs = parent.children;
77 childs.splice(childs.lastIndexOf(currNext), 0, next);
78 }
79 }
80 else if (parent) {
81 parent.children.push(next);
82 }
83}
84exports.append = append;
85/***
86 * Prepend an element before another
87 *
88 * @param elem The element to append to
89 * @param prev The element be added
90 */
91function prepend(elem, prev) {
92 var parent = elem.parent;
93 if (parent) {
94 var childs = parent.children;
95 childs.splice(childs.lastIndexOf(elem), 0, prev);
96 }
97 if (elem.prev) {
98 elem.prev.next = prev;
99 }
100 prev.parent = parent;
101 prev.prev = elem.prev;
102 prev.next = elem;
103 elem.prev = prev;
104}
105exports.prepend = prepend;