import { ModalExitCode, ModalService } from "renderer/services/modale.service"; import { AnimatePresence, motion } from "framer-motion"; import { useObservable } from "renderer/hooks/use-observable.hook"; import { useThemeColor } from "renderer/hooks/use-theme-color.hook"; import { useEffect } from "react"; import { BsmIcon } from "../svgs/bsm-icon.component"; export function Modal() { const modalSevice = ModalService.getInsance(); const ModalComponent = useObservable(modalSevice.getModalToShow()); const modalData = modalSevice.getModalData(); const resolver = modalSevice.getResolver(); const {firstColor, secondColor} = useThemeColor(); useEffect(() => { const onEscape = (e: KeyboardEvent) => { if(e.key !== "Escape"){ return; } resolver?.(ModalExitCode.NO_CHOICE); } if(!!ModalComponent){ window.addEventListener("keyup", onEscape) } else{ window.removeEventListener("keyup", onEscape); } return () => { window.removeEventListener("keyup", onEscape); } }, [ModalComponent]) return ( {ModalComponent && resolver && (
modalSevice.resolve({exitCode: ModalExitCode.NO_CHOICE})} className="absolute top-0 bottom-0 right-0 left-0 bg-black" initial={{opacity: 0}} animate={{opacity: ModalComponent && .60}} exit={{opacity: 0}} transition={{duration: .2}}/>
{e.stopPropagation(); resolver(ModalExitCode.CLOSED)}}>
)}
) }