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 | 30x 30x 30x 30x 30x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x | import { ComponentNode, findProp, NodeTypes, createSimpleExpression, createFunctionExpression, createCallExpression, ExpressionNode } from '@vue/compiler-dom' import { SSRTransformContext, processChildrenAsStatement } from '../ssrCodegenTransform' import { createSSRCompilerError, SSRErrorCodes } from '../errors' import { SSR_RENDER_TELEPORT } from '../runtimeHelpers' // Note: this is a 2nd-pass codegen transform. export function ssrProcessTeleport( node: ComponentNode, context: SSRTransformContext ) { const targetProp = findProp(node, 'to') Iif (!targetProp) { context.onError( createSSRCompilerError(SSRErrorCodes.X_SSR_NO_TELEPORT_TARGET, node.loc) ) return } let target: ExpressionNode | undefined Iif (targetProp.type === NodeTypes.ATTRIBUTE) { target = targetProp.value && createSimpleExpression(targetProp.value.content, true) } else { target = targetProp.exp } Iif (!target) { context.onError( createSSRCompilerError( SSRErrorCodes.X_SSR_NO_TELEPORT_TARGET, targetProp.loc ) ) return } const disabledProp = findProp(node, 'disabled', false, true /* allow empty */) const disabled = disabledProp ? disabledProp.type === NodeTypes.ATTRIBUTE ? `true` : disabledProp.exp || `false` : `false` const contentRenderFn = createFunctionExpression( [`_push`], undefined, // Body is added later true, // newline false, // isSlot node.loc ) contentRenderFn.body = processChildrenAsStatement(node.children, context) context.pushStatement( createCallExpression(context.helper(SSR_RENDER_TELEPORT), [ `_push`, contentRenderFn, target, disabled, `_parent` ]) ) } |