import { VNode , VNodeProps , createVNode , VNodeArrayChildren , Fragment , Text , Comment , isVNode } from './vnode' ; import { Teleport , TeleportProps } from './components/Teleport' ; import { Suspense , SuspenseProps } from './components/Suspense' ; import { isObject , isArray } from '@vue/shared' ; import { RawSlots } from './componentSlots' ; import { FunctionalComponent , Component , ComponentOptions , ConcreteComponent } from './component' ; import { EmitsOptions } from './componentEmits' ; import { DefineComponent } from './apiDefineComponent' ; type RawProps = VNodeProps & { __v_isVNode ? : never ; [ Symbol . iterator ] ? : never ; } & Record < string , any > ; type RawChildren = string | number | boolean | VNode | VNodeArrayChildren | ( ( ) => any ) ; interface Constructor < P = any > { __isFragment ? : never ; __isTeleport ? : never ; __isSuspense ? : never ; new ( ... args ) : { $props : P ; } ; } export function h ( type , children ? ) ; export function h ( type , props ? , children ? ) ; export function h ( type , children ? ) ; export function h ( type , props ? , children ? ) ; export function h ( type , children ? ) ; export function h ( type , props ? , children ? ) ; export function h ( type , props , children ) ; export function h ( type , children ? ) ; export function h ( type , props ? , children ? ) ; export function h < P , E extends EmitsOptions = { } > ( type , props ? , children ? ) ; export function h ( type , children ? ) ; export function h < P > ( type , children ? ) ; export function h < P > ( type , props ? , children ? ) ; export function h ( type , props , children ? ) ; export function h < P > ( type , props ? , children ? ) ; export function h ( type , children ? ) ; export function h < P > ( type , props ? , children ? ) ; export function h ( type , children ? ) ; export function h < P > ( type , props ? , children ? ) ; export function h ( type , propsOrChildren ? , children ? ) { const l = arguments . length ; if ( l === 2 ) { if ( isObject ( propsOrChildren ) && ! isArray ( propsOrChildren ) ) { if ( isVNode ( propsOrChildren ) ) { return createVNode ( type , null , [ propsOrChildren ] ) ; } return createVNode ( type , propsOrChildren ) ; } else { return createVNode ( type , null , propsOrChildren ) ; } } else { if ( l > 3 ) { children = Array . prototype . slice . call ( arguments , 2 ) ; } else if ( l === 3 && isVNode ( children ) ) { children = [ children ] ; } return createVNode ( type , propsOrChildren , children ) ; } }