| 1234567891011121314151617181920212223242526272829303132 |
- import VNode from './vnode'
- import config from '../config'
- import { createComponent } from './create-component'
- import { flatten } from './helpers'
- import { renderState } from '../instance/render'
- import { warn, resolveAsset } from '../util/index'
- export default function createElement (tag, data, children, namespace) {
- const context = this
- const parent = renderState.activeInstance
- if (typeof tag === 'string') {
- let Ctor
- if (config.isReservedTag(tag)) {
- return VNode(tag, data, flatten(children), undefined, undefined, namespace)
- } else if ((Ctor = resolveAsset(context.$options, 'components', tag))) {
- return createComponent(Ctor, data, parent, children)
- } else {
- if (process.env.NODE_ENV !== 'production') {
- if (!namespace && config.isUnknownElement(tag)) {
- warn(
- 'Unknown custom element: <' + tag + '> - did you ' +
- 'register the component correctly? For recursive components, ' +
- 'make sure to provide the "name" option.'
- )
- }
- }
- return VNode(tag, data, flatten(children && children()), undefined, undefined, namespace)
- }
- } else {
- return createComponent(tag, data, parent, children)
- }
- }
|