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