import VNode from 'core/vdom/vnode'
|
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) {
|
return node.parentNode
|
}
|
|
export function nextSibling(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, '')
|
}
|