lx-music-desktop/src/renderer/plugins/Tips/index.js
2020-09-29 14:41:41 +08:00

56 lines
1.0 KiB
JavaScript

import tips from './Tips'
import { debounce } from '../../utils'
let instance
let prevTips
const getTips = el => el.getAttribute('tips')
? el.getAttribute('tips')
: el.parentNode === document.documentElement
? null
: getTips(el.parentNode)
const showTips = debounce(event => {
let msg = getTips(event.target)
if (!msg) return
prevTips = msg
instance = tips({
message: msg,
position: {
top: event.y + 12,
left: event.x + 8,
},
})
}, 400)
const hideTips = () => {
if (!instance) return
instance.cancel()
prevTips = null
instance = null
}
const setTips = tips => {
if (!instance) return
instance.setTips(tips)
}
const updateTips = event => {
if (!instance) return
setTimeout(() => {
let msg = getTips(event.target)
if (!msg || prevTips === msg) return
setTips(msg)
prevTips = msg
})
}
document.body.addEventListener('mousemove', event => {
hideTips()
showTips(event)
})
document.body.addEventListener('click', updateTips)
document.body.addEventListener('contextmenu', updateTips)