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