import TimelineOppositeContent from '@mui/lab/TimelineOppositeContent' import TimelineSeparator from '@mui/lab/TimelineSeparator' import TimelineDot from '@mui/lab/TimelineDot' import TimelineConnector from '@mui/lab/TimelineConnector' import TimelineContent from '@mui/lab/TimelineContent' import TimelineItem from '@mui/lab/TimelineItem' import React, { useRef } from 'react' import CardHeader from '@mui/material/CardHeader' import CardContent from '@mui/material/CardContent' import { LmComponentRender } from '@LmComponentRender' import { CardContentContainer } from './CardContentContainer' import { LmTimelineItemProps } from './timelineTypes' import { useEffectOnce } from 'react-use' import { useTheme } from '@mui/material/styles' import Box from '@mui/material/Box' export default function LmTimelineItem({ content, options, isLast, onFinish, setObserver }: LmTimelineItemProps) { const theme = useTheme() const timeline1 = useRef(null) const timeline2 = useRef(null) const dot1 = useRef(null) const hasOppositeContent = !!content.opposite_body?.length useEffectOnce(() => { if (typeof setObserver === 'function') { setObserver(timeline1.current as any) setObserver(dot1.current as any) if (isLast) { setObserver(timeline2.current as any, () => { if (typeof onFinish === 'function') { onFinish() } }) } else { setObserver(timeline2.current as any) } } }) return ( {content.opposite_body?.map((blok) => ( ))} {content.icon?.map((blok) => ( ))} {hasOppositeContent && ( {content.opposite_body?.map((blok) => ( ))} )} {(content.title || content.subheader) && ( )} {(content.body || []).length > 0 && ( {content.body?.map((blok) => ( ))} )} ) }