ui(autoMate): 添加对鼠标事件的控制,优化快捷键功能,添加新hook(useIgnoreMouseEvents)

This commit is contained in:
yuruo
2024-06-10 11:39:09 +08:00
parent a8f217c8c4
commit 23a82c5960
2 changed files with 25 additions and 10 deletions

View File

@@ -3,21 +3,15 @@ import Search from "./components/Search"
import { CodeProvider } from "./context/CodeContext"
import useShortCut from "./hooks/useShortCut"
import Error from "./components/Error"
import { useEffect, useRef } from "react"
import { MutableRefObject, RefObject, useEffect, useRef } from "react"
import useIgnoreMouseEvents from "./hooks/useIgnoreMouseEvents"
function App(): JSX.Element {
const mainRef = useRef<HTMLDivElement>(null)
const {setIgnoreMouseEvents} = useIgnoreMouseEvents()
useEffect(()=>{
mainRef.current?.addEventListener('mouseover', ()=>{
window.api.setIgnoreMouseEvents(false)
})
document.body.addEventListener('mouseover', (e: MouseEvent)=>{
if (e.target === document.body) {
window.api.setIgnoreMouseEvents(true, {forward: true})
}
})
setIgnoreMouseEvents(mainRef as MutableRefObject<HTMLDivElement>)
}, [])
const shortCut = useShortCut()
shortCut.register("search", "CommandOrControl+n")
@@ -33,3 +27,7 @@ function App(): JSX.Element {
}
export default App
function setIgnoreMouseEvents(mainRef: RefObject<HTMLDivElement>) {
throw new Error("Function not implemented.")
}

View File

@@ -0,0 +1,17 @@
import { MutableRefObject } from "react"
export default() => {
const setIgnoreMouseEvents = <T extends HTMLElement>(el: MutableRefObject<T>) => {
el.current?.addEventListener('mouseover', ()=>{
window.api.setIgnoreMouseEvents(false)
})
document.body.addEventListener('mouseover', (e: MouseEvent)=>{
if (e.target === document.body) {
window.api.setIgnoreMouseEvents(true, {forward: true})
}
})
}
return {setIgnoreMouseEvents}
}