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 }))}
)}
);
};