/* @flow */ import { namespaceMap } from 'web/util/index' export function createElement (tagName: string, vnode: VNode): Element { const elm = document.createElement(tagName) if (tagName !== 'select') { return elm } // false or null will remove the attribute but undefined will not if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) { elm.setAttribute('multiple', 'multiple') } return elm } export function createElementNS (namespace: string, tagName: string): Element { return document.createElementNS(namespaceMap[namespace], tagName) } export function createTextNode (text: string): Text { return document.createTextNode(text) } export function createComment (text: string): Comment { return document.createComment(text) } export function insertBefore (parentNode: Node, newNode: Node, referenceNode: Node) { parentNode.insertBefore(newNode, referenceNode) } export function removeChild (node: Node, child: Node) { node.removeChild(child) } export function appendChild (node: Node, child: Node) { node.appendChild(child) } export function parentNode (node: Node): ?Node { return node.parentNode } export function nextSibling (node: Node): ?Node { return node.nextSibling } export function tagName (node: Element): string { return node.tagName } export function setTextContent (node: Node, text: string) { node.textContent = text } export function setStyleScope (node: Element, scopeId: string) { node.setAttribute(scopeId, '') }