UNPKG

vue-shiki-monaco

Version:
53 lines (52 loc) 1.38 kB
import { useState, useRef, useEffect, useCallback } from "react"; import { C as ContextMenuCore } from "./editorMenu-BFs5QkAV.js"; function useContextMenu(options) { const [isVisible, setIsVisible] = useState(false); const [position, setPosition] = useState({ x: 0, y: 0, direction: "down" }); const [items, setItems] = useState(options.items || []); const contextMenuCoreRef = useRef(null); useEffect(() => { const core = new ContextMenuCore(options); contextMenuCoreRef.current = core; core.onStateChange((state) => { setIsVisible(state.isVisible); setPosition(state.position); setItems(state.items); }); return () => { core.destroy(); }; }, []); const show = useCallback( (event, menuItems, target) => { contextMenuCoreRef.current?.show(event, menuItems, target); }, [] ); const hide = useCallback(() => { contextMenuCoreRef.current?.hide(); }, []); const handleItemClick = useCallback((item) => { contextMenuCoreRef.current?.handleItemClick(item); }, []); const updateTarget = useCallback((target) => { contextMenuCoreRef.current?.updateTarget(target); }, []); return { isVisible, position, items, show, hide, handleItemClick, updateTarget }; } export { useContextMenu as u }; //# sourceMappingURL=react-DLjrL97M.js.map