(vnode, rm)
| 6511 | } |
| 6512 | |
| 6513 | function leave (vnode, rm) { |
| 6514 | var el = vnode.elm; |
| 6515 | |
| 6516 | // call enter callback now |
| 6517 | if (el._enterCb) { |
| 6518 | el._enterCb.cancelled = true; |
| 6519 | el._enterCb(); |
| 6520 | } |
| 6521 | |
| 6522 | var data = resolveTransition(vnode.data.transition); |
| 6523 | if (!data) { |
| 6524 | return rm() |
| 6525 | } |
| 6526 | |
| 6527 | /* istanbul ignore if */ |
| 6528 | if (el._leaveCb || el.nodeType !== 1) { |
| 6529 | return |
| 6530 | } |
| 6531 | |
| 6532 | var css = data.css; |
| 6533 | var type = data.type; |
| 6534 | var leaveClass = data.leaveClass; |
| 6535 | var leaveToClass = data.leaveToClass; |
| 6536 | var leaveActiveClass = data.leaveActiveClass; |
| 6537 | var beforeLeave = data.beforeLeave; |
| 6538 | var leave = data.leave; |
| 6539 | var afterLeave = data.afterLeave; |
| 6540 | var leaveCancelled = data.leaveCancelled; |
| 6541 | var delayLeave = data.delayLeave; |
| 6542 | var duration = data.duration; |
| 6543 | |
| 6544 | var expectsCSS = css !== false && !isIE9; |
| 6545 | var userWantsControl = getHookArgumentsLength(leave); |
| 6546 | |
| 6547 | var explicitLeaveDuration = toNumber( |
| 6548 | isObject(duration) |
| 6549 | ? duration.leave |
| 6550 | : duration |
| 6551 | ); |
| 6552 | |
| 6553 | if (process.env.NODE_ENV !== 'production' && explicitLeaveDuration != null) { |
| 6554 | checkDuration(explicitLeaveDuration, 'leave', vnode); |
| 6555 | } |
| 6556 | |
| 6557 | var cb = el._leaveCb = once(function () { |
| 6558 | if (el.parentNode && el.parentNode._pending) { |
| 6559 | el.parentNode._pending[vnode.key] = null; |
| 6560 | } |
| 6561 | if (expectsCSS) { |
| 6562 | removeTransitionClass(el, leaveToClass); |
| 6563 | removeTransitionClass(el, leaveActiveClass); |
| 6564 | } |
| 6565 | if (cb.cancelled) { |
| 6566 | if (expectsCSS) { |
| 6567 | removeTransitionClass(el, leaveClass); |
| 6568 | } |
| 6569 | leaveCancelled && leaveCancelled(el); |
| 6570 | } else { |
no test coverage detected