Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | 3x 3x 1411x 1411x 702x 1411x 88x 88x 14x 14x 14x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 14x 14x 4x 2x 1x 1x 1x 1x 1x 1x 1x 1x 2x 4x 14x 14x 88x 1411x 27x 27x 27x 27x 27x 27x 27x 27x 27x 23x 21x 27x | import { type ComponentNode, ElementTypes, type IfBranchNode, type NodeTransform, NodeTypes, } from '@vue/compiler-core' import { TRANSITION } from '../runtimeHelpers' import { DOMErrorCodes, createDOMCompilerError } from '../errors' export const transformTransition: NodeTransform = (node, context) => { if ( node.type === NodeTypes.ELEMENT && node.tagType === ElementTypes.COMPONENT ) { const component = context.isBuiltInComponent(node.tag) if (component === TRANSITION) { return () => { if (!node.children.length) { return } // warn multiple transition children if (hasMultipleChildren(node)) { context.onError( createDOMCompilerError( DOMErrorCodes.X_TRANSITION_INVALID_CHILDREN, { start: node.children[0].loc.start, end: node.children[node.children.length - 1].loc.end, source: '', }, ), ) } // check if it's s single child w/ v-show // if yes, inject "persisted: true" to the transition props const child = node.children[0] if (child.type === NodeTypes.ELEMENT) { for (const p of child.props) { if (p.type === NodeTypes.DIRECTIVE && p.name === 'show') { node.props.push({ type: NodeTypes.ATTRIBUTE, name: 'persisted', nameLoc: node.loc, value: undefined, loc: node.loc, }) } } } } } } } function hasMultipleChildren(node: ComponentNode | IfBranchNode): boolean { // #1352 filter out potential comment nodes. const children = (node.children = node.children.filter( c => c.type !== NodeTypes.COMMENT && !(c.type === NodeTypes.TEXT && !c.content.trim()), )) const child = children[0] return ( children.length !== 1 || child.type === NodeTypes.FOR || (child.type === NodeTypes.IF && child.branches.some(hasMultipleChildren)) ) } |