-
-
Notifications
You must be signed in to change notification settings - Fork 33.7k
/
Copy pathvnode.ts
127 lines (118 loc) · 2.6 KB
/
vnode.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
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
>