ComponentPublicInstance
} from './componentPublicInstance'
import { Directive, validateDirectiveName } from './directives'
-import { RendererElement, RootRenderFunction } from './renderer'
+import { RootRenderFunction } from './renderer'
import { InjectionKey } from './apiInject'
import { warn } from './warning'
import { createVNode, cloneVNode, VNode } from './vnode'
let uid = 0
-export function createAppAPI<HostElement extends RendererElement>(
+export function createAppAPI<HostElement>(
render: RootRenderFunction<HostElement>,
hydrate?: RootHydrateFunction
): CreateAppFunction<HostElement> {
import { mapCompatDirectiveHook } from './compat/customDirective'
import { pauseTracking, resetTracking } from '@vue/reactivity'
import { traverse } from './apiWatch'
-import { RendererElement } from './renderer'
export interface DirectiveBinding<V = any> {
instance: ComponentPublicInstance | null
dir: ObjectDirective<any, V>
}
-export type DirectiveHook<
- T extends RendererElement = any,
- Prev = VNode<any, T> | null,
- V = any
-> = (
+export type DirectiveHook<T = any, Prev = VNode<any, T> | null, V = any> = (
el: T,
binding: DirectiveBinding<V>,
vnode: VNode<any, T>,
vnode: VNode
) => Data | undefined
-export interface ObjectDirective<T extends RendererElement = any, V = any> {
+export interface ObjectDirective<T = any, V = any> {
created?: DirectiveHook<T, null, V>
beforeMount?: DirectiveHook<T, null, V>
mounted?: DirectiveHook<T, null, V>
deep?: boolean
}
-export type FunctionDirective<
- T extends RendererElement = any,
- V = any
-> = DirectiveHook<T, any, V>
+export type FunctionDirective<T = any, V = any> = DirectiveHook<T, any, V>
-export type Directive<T extends RendererElement = any, V = any> =
+export type Directive<T = any, V = any> =
| ObjectDirective<T, V>
| FunctionDirective<T, V>
export interface RendererOptions<
HostNode = RendererNode,
- HostElement extends RendererElement = RendererElement
+ HostElement = RendererElement
> {
patchProp(
el: HostElement,
// to optimize bundle size.
export interface RendererInternals<
HostNode = RendererNode,
- HostElement extends RendererElement = RendererElement
+ HostElement = RendererElement
> {
p: PatchFn
um: UnmountFn
*/
export function createRenderer<
HostNode = RendererNode,
- HostElement extends RendererElement = RendererElement
+ HostElement = RendererElement
>(options: RendererOptions<HostNode, HostElement>) {
return baseCreateRenderer<HostNode, HostElement>(options)
}
// overload 1: no hydration
function baseCreateRenderer<
HostNode = RendererNode,
- HostElement extends RendererElement = RendererElement
+ HostElement = RendererElement
>(options: RendererOptions<HostNode, HostElement>): Renderer<HostElement>
// overload 2: with hydration
export interface VNode<
HostNode = RendererNode,
- HostElement extends RendererElement = RendererElement,
+ HostElement = RendererElement,
ExtraProps = { [key: string]: any }
> {
/**
: props
}
-export function cloneVNode<T extends RendererNode, U extends RendererElement>(
+export function cloneVNode<T, U>(
vnode: VNode<T, U>,
extraProps?: (Data & VNodeProps) | null,
mergeRef = false