Connect.utils.ts37 lines · main
1import { FRAMEWORKS, MOBILES } from './Connect.constants'
2
3type FieldValue = string | boolean | string[] | undefined
4
5interface FrameworkLibraryInput {
6 framework?: FieldValue
7 frameworkVariant?: FieldValue
8 library?: FieldValue
9 [key: string]: FieldValue
10}
11
12export 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}