import { LatLng } from 'leaflet' import { useMap } from 'react-leaflet' import { useNavigate } from 'react-router-dom' import { usePopupForm } from '#components/Map/hooks/usePopupForm' import { useSetSelectPosition } from '#components/Map/hooks/useSelectPosition' import useWindowDimensions from '#components/Map/hooks/useWindowDimension' import { StartEndView, TextView } from '#components/Map/Subcomponents/ItemPopupComponents' import { HeaderView } from '#components/Map/Subcomponents/ItemPopupComponents/HeaderView' import { DateUserInfo } from './DateUserInfo' import type { Item } from '#types/Item' export const ItemCard = ({ i, loading, url, deleteCallback, }: { i: Item loading: boolean url: string deleteCallback: (item: Item) => void }) => { const navigate = useNavigate() const windowDimensions = useWindowDimensions() const map = useMap() const setSelectPosition = useSetSelectPosition() const { setPopupForm } = usePopupForm() const handleEdit = () => { if (!i.layer) { throw new Error('Layer is not defined') } if (i.layer.itemType.small_form_edit && i.position) { navigate('/') // Wait for navigation to complete before setting popup setTimeout(() => { if (i.position && i.layer) { const position = new LatLng(i.position.coordinates[1], i.position.coordinates[0]) setPopupForm({ position, layer: i.layer, item: i, }) map.setView(position, map.getZoom(), { duration: 1 }) } }, 100) } else { navigate('/edit-item/' + i.id) } } return (