(el, remove)
| 446 | }, |
| 447 | |
| 448 | leave(el, remove) { |
| 449 | const key = String(vnode.key) |
| 450 | if (el[enterCbKey]) { |
| 451 | el[enterCbKey](true /* cancelled */) |
| 452 | } |
| 453 | if (state.isUnmounting) { |
| 454 | return remove() |
| 455 | } |
| 456 | callHook(onBeforeLeave, [el]) |
| 457 | let called = false |
| 458 | el[leaveCbKey] = (cancelled?) => { |
| 459 | if (called) return |
| 460 | called = true |
| 461 | remove() |
| 462 | if (cancelled) { |
| 463 | callHook(onLeaveCancelled, [el]) |
| 464 | } else { |
| 465 | callHook(onAfterLeave, [el]) |
| 466 | } |
| 467 | el[leaveCbKey] = undefined |
| 468 | if (leavingVNodesCache[key] === vnode) { |
| 469 | delete leavingVNodesCache[key] |
| 470 | } |
| 471 | } |
| 472 | const done = el[leaveCbKey]!.bind(null, false) |
| 473 | leavingVNodesCache[key] = vnode |
| 474 | if (onLeave) { |
| 475 | callAsyncHook(onLeave, [el, done]) |
| 476 | } else { |
| 477 | done() |
| 478 | } |
| 479 | }, |
| 480 | |
| 481 | clone(vnode) { |
| 482 | const hooks = resolveTransitionHooks( |
no test coverage detected