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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | 84x 84x 84x 84x 84x 84x 39x 4x 35x 35x 1x 1x 35x 17x 35x 35x 35x 35x 7x 35x 17x 35x 36x 34x 34x 33x 1x 32x | import { Data } from '../component' import { Slots, RawSlots } from '../componentSlots' import { ContextualRenderFn, currentRenderingInstance } from '../componentRenderContext' import { Comment, isVNode } from '../vnode' import { VNodeArrayChildren, openBlock, createBlock, Fragment, VNode } from '../vnode' import { PatchFlags, SlotFlags } from '@vue/shared' import { warn } from '../warning' import { createVNode } from '@vue/runtime-core' /** * Compiler runtime helper for rendering `<slot/>` * @private */ export function renderSlot( slots: Slots, name: string, props: Data = {}, // this is not a user-facing function, so the fallback is always generated by // the compiler and guaranteed to be a function returning an array fallback?: () => VNodeArrayChildren, noSlotted?: boolean ): VNode { if (currentRenderingInstance!.isCE) { return createVNode( 'slot', name === 'default' ? null : { name }, fallback && fallback() ) } let slot = slots[name] if (__DEV__ && slot && slot.length > 1) { warn( `SSR-optimized slot function detected in a non-SSR-optimized render ` + `function. You need to mark this component with $dynamic-slots in the ` + `parent template.` ) slot = () => [] } // a compiled slot disables block tracking by default to avoid manual // invocation interfering with template-based block tracking, but in // `renderSlot` we can be sure that it's template-based so we can force // enable it. if (slot && (slot as ContextualRenderFn)._c) { ;(slot as ContextualRenderFn)._d = false } openBlock() const validSlotContent = slot && ensureValidVNode(slot(props)) const rendered = createBlock( Fragment, { key: props.key || `_${name}` }, validSlotContent || (fallback ? fallback() : []), validSlotContent && (slots as RawSlots)._ === SlotFlags.STABLE ? PatchFlags.STABLE_FRAGMENT : PatchFlags.BAIL ) if (!noSlotted && rendered.scopeId) { rendered.slotScopeIds = [rendered.scopeId + '-s'] } if (slot && (slot as ContextualRenderFn)._c) { ;(slot as ContextualRenderFn)._d = true } return rendered } function ensureValidVNode(vnodes: VNodeArrayChildren) { return vnodes.some(child => { Iif (!isVNode(child)) return true if (child.type === Comment) return false if ( child.type === Fragment && !ensureValidVNode(child.children as VNodeArrayChildren) ) return false return true }) ? vnodes : null } |