"use client"; import * as React from "react"; import * as PopoverPrimitive from "@radix-ui/react-popover"; import { cn } from "@/lib/utils"; function Popover({ ...props }: React.ComponentProps) { return ; } function PopoverTrigger({ ...props }: React.ComponentProps) { return ; } function PopoverContent({ className, align = "center", sideOffset = 4, ...props }: React.ComponentProps) { const contentRef = React.useRef(null); React.useEffect(() => { const element = contentRef.current; if (!element) return; const disableAnimations = () => { element.style.setProperty("animation", "none", "important"); element.style.setProperty("transition", "none", "important"); // Ne pas toucher au transform car il est utilisé pour le positionnement element.style.setProperty("opacity", "1", "important"); element.style.setProperty("will-change", "auto", "important"); // Supprimer toutes les classes d'animation Tailwind const classesToRemove = Array.from(element.classList).filter( (cls) => cls.includes("animate") || cls.includes("fade") || cls.includes("zoom") || cls.includes("slide"), ); classesToRemove.forEach((cls) => element.classList.remove(cls)); }; // Désactiver immédiatement disableAnimations(); // Observer pour les changements d'attributs const observer = new MutationObserver(() => { disableAnimations(); }); observer.observe(element, { attributes: true, attributeFilter: ["class", "data-state"], subtree: false, }); // Observer pour les changements dans le DOM const domObserver = new MutationObserver(() => { disableAnimations(); }); domObserver.observe(document.body, { childList: true, subtree: true, }); return () => { observer.disconnect(); domObserver.disconnect(); }; }, []); return ( ); } function PopoverAnchor({ ...props }: React.ComponentProps) { return ; } export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };