Connect.utils.ts37 lines · main
| 1 | import { FRAMEWORKS, MOBILES } from './Connect.constants' |
| 2 | |
| 3 | type FieldValue = string | boolean | string[] | undefined |
| 4 | |
| 5 | interface FrameworkLibraryInput { |
| 6 | framework?: FieldValue |
| 7 | frameworkVariant?: FieldValue |
| 8 | library?: FieldValue |
| 9 | [key: string]: FieldValue |
| 10 | } |
| 11 | |
| 12 | export function resolveFrameworkLibraryKey(state: FrameworkLibraryInput): string | null { |
| 13 | const { framework, frameworkVariant, library } = state |
| 14 | |
| 15 | if (!framework) return null |
| 16 | |
| 17 | if (library) return String(library) |
| 18 | |
| 19 | const allFrameworks = [...FRAMEWORKS, ...MOBILES] |
| 20 | const selectedFramework = allFrameworks.find((f) => f.key === framework) |
| 21 | |
| 22 | if (!selectedFramework?.children?.length) return null |
| 23 | |
| 24 | if (frameworkVariant) { |
| 25 | const variant = selectedFramework.children.find((c) => c.key === frameworkVariant) |
| 26 | if (variant?.children?.length) { |
| 27 | return variant.children[0].key |
| 28 | } |
| 29 | } |
| 30 | |
| 31 | const firstChild = selectedFramework.children[0] |
| 32 | if (firstChild?.children?.length) { |
| 33 | return firstChild.children[0].key |
| 34 | } |
| 35 | |
| 36 | return firstChild?.key ?? null |
| 37 | } |