( source: unknown, renderItem: (value: unknown, key: string | number, index?: number) => void, )
| 2 | import { warn } from '@vue/runtime-core' |
| 3 | |
| 4 | export function ssrRenderList( |
| 5 | source: unknown, |
| 6 | renderItem: (value: unknown, key: string | number, index?: number) => void, |
| 7 | ): void { |
| 8 | if (isArray(source) || isString(source)) { |
| 9 | for (let i = 0, l = source.length; i < l; i++) { |
| 10 | renderItem(source[i], i) |
| 11 | } |
| 12 | } else if (typeof source === 'number') { |
| 13 | if (__DEV__ && (!Number.isInteger(source) || source < 0)) { |
| 14 | warn( |
| 15 | `The v-for range expects a positive integer value but got ${source}.`, |
| 16 | ) |
| 17 | return |
| 18 | } |
| 19 | for (let i = 0; i < source; i++) { |
| 20 | renderItem(i + 1, i) |
| 21 | } |
| 22 | } else if (isObject(source)) { |
| 23 | if (source[Symbol.iterator as any]) { |
| 24 | let i = 0 |
| 25 | for (const item of source as Iterable<any>) { |
| 26 | renderItem(item, i++) |
| 27 | } |
| 28 | } else { |
| 29 | const keys = Object.keys(source) |
| 30 | for (let i = 0, l = keys.length; i < l; i++) { |
| 31 | const key = keys[i] |
| 32 | renderItem(source[key], key, i) |
| 33 | } |
| 34 | } |
| 35 | } |
| 36 | } |
no test coverage detected