// @flow import { observer } from "mobx-react"; import * as React from "react"; import { useTranslation } from "react-i18next"; import { Dialog, DialogBackdrop, useDialogState } from "reakit/Dialog"; import styled from "styled-components"; import Template from "components/ContextMenu/Template"; import Scrollable from "components/Scrollable"; import useStores from "hooks/useStores"; function QuickMenu() { const { quickMenu } = useStores(); console.log("render"); const dialog = useDialogState({ modal: true, animated: 250 }); const { t } = useTranslation(); const handleSearchChange = React.useCallback( (event) => { quickMenu.setSearchTerm(event.target.value); }, [quickMenu] ); React.useEffect(() => { if (!dialog.visible) { quickMenu.setSearchTerm(""); } }, [quickMenu, dialog.visible]); React.useEffect(() => { const handleKeyDown = (event) => { if (event.key === "k" && event.metaKey) { dialog.visible ? dialog.hide() : dialog.show(); } }; window.addEventListener("keydown", handleKeyDown); return () => window.removeEventListener("keydown", handleKeyDown); }); return ( {(props) => ( {(props) => ( {quickMenu.resolvedMenuItems.map((context) => (