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