| 12
 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
 
 | 
 export default class VNode {
 tag: string | void;
 data: VNodeData | void;
 children: ?Array<VNode>;
 text: string | void;
 elm: Node | void;
 ns: string | void;
 context: Component | void;
 key: string | number | void;
 componentOptions: VNodeComponentOptions | void;
 componentInstance: Component | void;
 parent: VNode | void;
 
 
 raw: boolean;
 isStatic: boolean;
 isRootInsert: boolean;
 isComment: boolean;
 isCloned: boolean;
 isOnce: boolean;
 asyncFactory: Function | void;
 asyncMeta: Object | void;
 isAsyncPlaceholder: boolean;
 ssrContext: Object | void;
 fnContext: Component | void;
 fnOptions: ?ComponentOptions;
 devtoolsMeta: ?Object;
 fnScopeId: ?string;
 
 constructor (
 tag?: string,
 data?: VNodeData,
 children?: ?Array<VNode>,
 text?: string,
 elm?: Node,
 context?: Component,
 componentOptions?: VNodeComponentOptions,
 asyncFactory?: Function
 ) {
 
 this.tag = tag
 
 
 this.data = data
 
 
 this.children = children
 this.text = text
 
 
 this.elm = elm
 this.ns = undefined
 
 
 this.context = context
 this.fnContext = undefined
 this.fnOptions = undefined
 this.fnScopeId = undefined
 
 this.key = data && data.key
 this.componentOptions = componentOptions
 this.componentInstance = undefined
 this.parent = undefined
 this.raw = false
 this.isStatic = false
 this.isRootInsert = true
 this.isComment = false
 this.isCloned = false
 this.isOnce = false
 this.asyncFactory = asyncFactory
 this.asyncMeta = undefined
 this.isAsyncPlaceholder = false
 }
 
 
 
 get child (): Component | void {
 return this.componentInstance
 }
 }
 
 export const createEmptyVNode = (text: string = '') => {
 const node = new VNode()
 node.text = text
 node.isComment = true
 return node
 }
 
 export function createTextVNode (val: string | number) {
 return new VNode(undefined, undefined, undefined, String(val))
 }
 
 
 
 
 
 export function cloneVNode (vnode: VNode): VNode {
 const cloned = new VNode(
 vnode.tag,
 vnode.data,
 
 
 
 vnode.children && vnode.children.slice(),
 vnode.text,
 vnode.elm,
 vnode.context,
 vnode.componentOptions,
 vnode.asyncFactory
 )
 cloned.ns = vnode.ns
 cloned.isStatic = vnode.isStatic
 cloned.key = vnode.key
 cloned.isComment = vnode.isComment
 cloned.fnContext = vnode.fnContext
 cloned.fnOptions = vnode.fnOptions
 cloned.fnScopeId = vnode.fnScopeId
 cloned.asyncMeta = vnode.asyncMeta
 cloned.isCloned = true
 return cloned
 }
 
 
 |