import { AppState } from '@/UIModels/AppState' 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 '@/UIModels/Application' type Props = { application: WebApplication appState: AppState } const NotesContextMenu = ({ application, appState }: Props) => { const { contextMenuOpen, contextMenuPosition, contextMenuMaxHeight } = appState.notes const contextMenuRef = useRef(null) const [closeOnBlur] = useCloseOnBlur(contextMenuRef, (open: boolean) => appState.notes.setContextMenuOpen(open)) useCloseOnClickOutside(contextMenuRef, () => appState.notes.setContextMenuOpen(false)) const reloadContextMenuLayout = useCallback(() => { appState.notes.reloadContextMenuLayout() }, [appState]) useEffect(() => { window.addEventListener('resize', reloadContextMenuLayout) return () => { window.removeEventListener('resize', reloadContextMenuLayout) } }, [reloadContextMenuLayout]) return contextMenuOpen ? (
) : null } export default observer(NotesContextMenu)