UNPKG

tiny-dream

Version:

A tiny Incremental DOM implementation for modern browsers.

36 lines (27 loc) 759 B
import getNodeData from './get-node-data' import initNodeData from './init-node-data' const getNamespaceForTag = (tag, parent) => { if (tag === 'svg') { return 'http://www.w3.org/2000/svg' } if (getNodeData(parent).nameOrCtor === 'foreignObject') { return null } return parent.namespaceURI } const createElement = (doc, parent, nameOrCtor, key, typeId) => { let el if (typeof nameOrCtor === 'function') { el = new nameOrCtor() } else { const namespace = getNamespaceForTag(nameOrCtor, parent) if (namespace) { el = doc.createElementNS(namespace, nameOrCtor) } else { el = doc.createElement(nameOrCtor) } } initNodeData(el, nameOrCtor, key, typeId) return el } export default createElement