(vnode, rm)
| 6063 | } |
| 6064 | |
| 6065 | function leave (vnode, rm) { |
| 6066 | var el = vnode.elm; |
| 6067 | |
| 6068 | // call enter callback now |
| 6069 | if (el._enterCb) { |
| 6070 | el._enterCb.cancelled = true; |
| 6071 | el._enterCb(); |
| 6072 | } |
| 6073 | |
| 6074 | var data = resolveTransition(vnode.data.transition); |
| 6075 | if (!data) { |
| 6076 | return rm() |
| 6077 | } |
| 6078 | |
| 6079 | /* istanbul ignore if */ |
| 6080 | if (el._leaveCb || el.nodeType !== 1) { |
| 6081 | return |
| 6082 | } |
| 6083 | |
| 6084 | var css = data.css; |
| 6085 | var type = data.type; |
| 6086 | var leaveClass = data.leaveClass; |
| 6087 | var leaveToClass = data.leaveToClass; |
| 6088 | var leaveActiveClass = data.leaveActiveClass; |
| 6089 | var beforeLeave = data.beforeLeave; |
| 6090 | var leave = data.leave; |
| 6091 | var afterLeave = data.afterLeave; |
| 6092 | var leaveCancelled = data.leaveCancelled; |
| 6093 | var delayLeave = data.delayLeave; |
| 6094 | var duration = data.duration; |
| 6095 | |
| 6096 | var expectsCSS = css !== false && !isIE9; |
| 6097 | var userWantsControl = getHookArgumentsLength(leave); |
| 6098 | |
| 6099 | var explicitLeaveDuration = toNumber( |
| 6100 | isObject(duration) |
| 6101 | ? duration.leave |
| 6102 | : duration |
| 6103 | ); |
| 6104 | |
| 6105 | if (process.env.NODE_ENV !== 'production' && explicitLeaveDuration != null) { |
| 6106 | checkDuration(explicitLeaveDuration, 'leave', vnode); |
| 6107 | } |
| 6108 | |
| 6109 | var cb = el._leaveCb = once(function () { |
| 6110 | if (el.parentNode && el.parentNode._pending) { |
| 6111 | el.parentNode._pending[vnode.key] = null; |
| 6112 | } |
| 6113 | if (expectsCSS) { |
| 6114 | removeTransitionClass(el, leaveToClass); |
| 6115 | removeTransitionClass(el, leaveActiveClass); |
| 6116 | } |
| 6117 | if (cb.cancelled) { |
| 6118 | if (expectsCSS) { |
| 6119 | removeTransitionClass(el, leaveClass); |
| 6120 | } |
| 6121 | leaveCancelled && leaveCancelled(el); |
| 6122 | } else { |
no test coverage detected