All files / virtual-dom/nodes FragmentNode.ts

100% Statements 10/10
100% Branches 0/0
100% Functions 3/3
100% Lines 10/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39  7x     7x   7x             5x                 1x   1x   1x   1x     1x         5x    
import ElementNode from "./ElementNode";
import patchChildren from "./helpers/patchChildren";
import TextNode from "./TextNode";
 
export default class FragmentNode {
 
    static isFragment: boolean = true;
 
    constructor(
 
        /**
         * The children of the virtual node
         */
        public children: (ElementNode | TextNode)[]
    ) { }
 
    /**
     * Creates a DOM node from this virtual node
     * @returns DocumentFragment that holds the children nodes
     */
    createDom(): DocumentFragment {
 
        const { children } = this;
 
        const node = document.createDocumentFragment();
 
        for (const child of children) {
 
            node.appendChild(child.createDom());
        }
 
        return node;
    }
 
    patchDom(container: HTMLElement | DocumentFragment): boolean {
 
        return patchChildren(container, this.children);
    }
}