import React, { useMemo, useEffect } from 'react'; import SliderModalView from './SliderModalView'; import FadeModalView from './FadeModalView'; import { useDimensionContext } from '../../contexts/DimensionContext'; import { useLayoutContext } from '../../contexts/LayoutContext'; import { generateModalItemProps } from '../../functions'; import type { NestedModalProps } from '../../types'; function ModalItem(props: NestedModalProps) { const { modalType, autoTransform, transformBreakPoint, getLayoutData, keyboardHeight, safeAreaInsets, dimension, extraData, ...modalItemProps } = props; const { contentContainerStyle } = modalItemProps; const dimensionContext = useDimensionContext(); const { keyboardHeight: keyboardHeightContextValue, safeAreaInsets: safeAreaInsetsContextValue, } = useLayoutContext(); const _keyboardHeight = keyboardHeight ?? keyboardHeightContextValue; const _safeAreaInsets = safeAreaInsets ?? safeAreaInsetsContextValue; const _dimension = dimension ?? dimensionContext; const { contentContainerStyle: nContentContainerStyle, modalType: nModalType, } = useMemo(() => { return generateModalItemProps( { autoTransform, modalType, transformBreakPoint, }, _dimension.width, ); }, [autoTransform, modalType, transformBreakPoint, _dimension.width]); useEffect(() => { if (!getLayoutData) return; getLayoutData({ keyboardHeight: _keyboardHeight, safeAreaInsets: _safeAreaInsets, dimension: _dimension, }); }, [getLayoutData, _dimension, _keyboardHeight, _safeAreaInsets]); if (nModalType === 'slide') { return ( ); } return ( ); } export default ModalItem;