| 123456789101112131415161718192021222324252627282930313233 |
- import { Slot } from '../componentSlots'
- import { isArray } from '@vue/shared'
- interface CompiledSlotDescriptor {
- name: string
- fn: Slot
- }
- /**
- * Compiler runtime helper for creating dynamic slots object
- * @private
- */
- export function createSlots(
- slots: Record<string, Slot>,
- dynamicSlots: (
- | CompiledSlotDescriptor
- | CompiledSlotDescriptor[]
- | undefined)[]
- ): Record<string, Slot> {
- for (let i = 0; i < dynamicSlots.length; i++) {
- const slot = dynamicSlots[i]
- // array of dynamic slot generated by <template v-for="..." #[...]>
- if (isArray(slot)) {
- for (let j = 0; j < slot.length; j++) {
- slots[slot[j].name] = slot[j].fn
- }
- } else if (slot) {
- // conditional single slot generated by <template v-if="..." #foo>
- slots[slot.name] = slot.fn
- }
- }
- return slots
- }
|