import { ViewControllerManager } from '@/Services/ViewControllerManager' import { useCloseOnBlur } from '@/Hooks/useCloseOnBlur' import { useCloseOnClickOutside } from '@/Hooks/useCloseOnClickOutside' import { observer } from 'mobx-react-lite' import NotesOptions from '@/Components/NotesOptions/NotesOptions' import { useCallback, useEffect, useRef } from 'react' import { WebApplication } from '@/Application/Application' type Props = { application: WebApplication viewControllerManager: ViewControllerManager } const NotesContextMenu = ({ application, viewControllerManager }: Props) => { const { contextMenuOpen, contextMenuPosition, contextMenuMaxHeight } = viewControllerManager.notesController const contextMenuRef = useRef(null) const [closeOnBlur] = useCloseOnBlur(contextMenuRef, (open: boolean) => viewControllerManager.notesController.setContextMenuOpen(open), ) useCloseOnClickOutside(contextMenuRef, () => viewControllerManager.notesController.setContextMenuOpen(false)) const reloadContextMenuLayout = useCallback(() => { viewControllerManager.notesController.reloadContextMenuLayout() }, [viewControllerManager]) useEffect(() => { window.addEventListener('resize', reloadContextMenuLayout) return () => { window.removeEventListener('resize', reloadContextMenuLayout) } }, [reloadContextMenuLayout]) return contextMenuOpen ? (
) : null } export default observer(NotesContextMenu)