import { randomString } from '@/lib/random' import { cn } from '@/lib/utils' import { useContentPolicy } from '@/providers/ContentPolicyProvider' import modalManager from '@/services/modal-manager.service' import { TImetaInfo } from '@/types' import { useEffect, useMemo, useState } from 'react' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' import Lightbox from 'yet-another-react-lightbox' import Zoom from 'yet-another-react-lightbox/plugins/zoom' import Image from '../Image' export default function ImageWithLightbox({ image, className, classNames = {}, errorPlaceholder, ignoreAutoLoadPolicy = false }: { image: TImetaInfo className?: string classNames?: { wrapper?: string skeleton?: string } errorPlaceholder?: string ignoreAutoLoadPolicy?: boolean }) { const id = useMemo(() => `image-with-lightbox-${randomString()}`, []) const { t } = useTranslation() const { autoLoadMedia } = useContentPolicy() const [display, setDisplay] = useState(ignoreAutoLoadPolicy ? true : autoLoadMedia) const [index, setIndex] = useState(-1) useEffect(() => { if (index >= 0) { modalManager.register(id, () => { setIndex(-1) }) } else { modalManager.unregister(id) } }, [index]) if (!display) { return (