import React, { forwardRef, useCallback } from 'react'; import type { ListRenderItem, SectionListRenderItem, View } from 'react-native'; import { getReducedSectionData } from '../../helpers'; import type { OptionType, SectionOptionType } from '../../types'; import { isSectionOptionsType } from '../../types'; import { FlatOptionsList } from '../flat-options-list'; import { Option } from '../option'; import { OptionsListWrapper } from '../options-list-wrapper'; import { SectionOptionsList } from '../section-options-list'; import { useOptionsList } from './options-list.hooks'; export const OptionsList = forwardRef((_, optionsListRef) => { const { getItemLayout, measuredRef, findSelectedOption, findSelectedOptionIndex, resolvedData, scrollToSelectedOption, sectionListProps, flatListProps, selectedOption, optionCustomStyles, initialScrollIndex, accessibilityState, disabled, onPressOption, optionButtonProps, optionTextProps, isDisabledResolveOption, hideSelectedOptions, } = useOptionsList(); const isSectionedOptions = isSectionOptionsType(resolvedData); const renderSection: SectionListRenderItem = useCallback( ({ item, index, section }) => { const data = resolvedData as SectionOptionType[]; const { value } = item; const isSelected = findSelectedOption(item); const sectionTitle = section?.title; const optionIndex = getReducedSectionData(data).indexOf(item); const sectionObject = { title: sectionTitle, index: data.findIndex((el) => el.title === sectionTitle), }; const isDisabledOption = isDisabledResolveOption(isSelected); const sectionItem = { ...item, section: sectionObject }; return (