vue
Version:
Reactive, component-oriented view layer for modern web interfaces.
128 lines (118 loc) • 2.67 kB
text/typescript
import VNode from 'core/vdom/vnode'
import { Ref } from 'v3'
import { Component } from './component'
import { ASTModifiers } from './compiler'
/**
* @internal
*/
export type VNodeChildren =
| Array<null | VNode | string | number | VNodeChildren>
| string
/**
* @internal
*/
export type VNodeComponentOptions = {
Ctor: typeof Component
propsData?: Object
listeners?: Record<string, Function | Function[]>
children?: Array<VNode>
tag?: string
}
/**
* @internal
*/
export type MountedComponentVNode = VNode & {
context: Component
componentOptions: VNodeComponentOptions
componentInstance: Component
parent: VNode
data: VNodeData
}
/**
* @internal
*/
// interface for vnodes in update modules
export type VNodeWithData = VNode & {
tag: string
data: VNodeData
children: Array<VNode>
text: void
elm: any
ns: string | void
context: Component
key: string | number | undefined
parent?: VNodeWithData
componentOptions?: VNodeComponentOptions
componentInstance?: Component
isRootInsert: boolean
}
// // interface for vnodes in update modules
// export type VNodeWithData = {
// tag: string;
// data: VNodeData;
// children: Array<VNode>;
// text: void;
// elm: any;
// ns: string | void;
// context: Component;
// key: string | number | undefined;
// parent?: VNodeWithData;
// componentOptions?: VNodeComponentOptions;
// componentInstance?: Component;
// isRootInsert: boolean;
// };
/**
* @internal
*/
export interface VNodeData {
key?: string | number
slot?: string
ref?: string | Ref | ((el: any) => void)
is?: string
pre?: boolean
tag?: string
staticClass?: string
class?: any
staticStyle?: { [key: string]: any }
style?: string | Array<Object> | Object
normalizedStyle?: Object
props?: { [key: string]: any }
attrs?: { [key: string]: string }
domProps?: { [key: string]: any }
hook?: { [key: string]: Function }
on?: { [key: string]: Function | Array<Function> }
nativeOn?: { [key: string]: Function | Array<Function> }
transition?: Object
show?: boolean // marker for v-show
inlineTemplate?: {
render: Function
staticRenderFns: Array<Function>
}
directives?: Array<VNodeDirective>
keepAlive?: boolean
scopedSlots?: { [key: string]: Function }
model?: {
value: any
callback: Function
}
[key: string]: any
}
/**
* @internal
*/
export type VNodeDirective = {
name: string
rawName: string
value?: any
oldValue?: any
arg?: string
oldArg?: string
modifiers?: ASTModifiers
def?: Object
}
/**
* @internal
*/
export type ScopedSlotsData = Array<
{ key: string; fn: Function } | ScopedSlotsData
>