/* @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, '')
|
}
|