vue-shiki-monaco
Version:
一个封shiki和monaco-editor的Vue组件
53 lines (52 loc) • 1.38 kB
JavaScript
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