import React from 'react'; import { FlatList } from 'react-native'; import { ContainerTechs, ListTechs, ContentTech, Label } from './styled'; import type { Props, TechType } from './types'; import techs from './techs'; export default (props: Props) => { const getTech = (name: string) => techs.find((item) => item.name.toLowerCase() === name.toLowerCase()); const getTechs = (items: string[]): TechType[] => techs.filter((tech) => items.some( (name: string) => tech.name.toLowerCase() === name.toLowerCase() ) ); const hiddenTechs = (items: string[]): TechType[] => techs.filter(({ name }: TechType) => !items.includes(name.toLowerCase())); const renderList = (): TechType[] => props.list ? getTechs(props.list) : props.hiddenLogos ? hiddenTechs(props.hiddenLogos) : techs; const renderItem = ({ item }: { item: TechType }) => ( {!props.hiddenLabel && } ); const renderItemRaw = ({ item }: { item: TechType }) => ( ); const configGap = { gap: props.gap || 10 }; return props.raw ? ( props.name && getTech(props.name) && !props.list ? ( renderItemRaw({ item: getTech(props.name) as TechType }) ) : props.flatList ? ( // @ts-ignore: Suppress type error for renderItem item.name} showsHorizontalScrollIndicator={false} numColumns={2} contentContainerStyle={configGap} columnWrapperStyle={configGap} /> ) : ( <>{renderList().map((item) => renderItemRaw({ item }))} ) ) : ( {props.name && getTech(props.name) && !props.list ? ( renderItem({ item: getTech(props.name) as TechType }) ) : props.flatList ? ( // @ts-ignore: Suppress type error for renderItem item.name} showsHorizontalScrollIndicator={false} numColumns={2} contentContainerStyle={configGap} columnWrapperStyle={configGap} /> ) : ( {renderList().map((item) => renderItem({ item }))} )} ); };