@dingdaoos/lucid-utils
Version:
Lucid utils
39 lines (32 loc) • 1.01 kB
text/typescript
interface OptionsType {
dragMove?: (e:MouseEvent) => void
dragStop?: (e:MouseEvent) => void
dragStart?: (e:MouseEvent) => void
}
let isDragging = false
export default (el: HTMLElement | undefined, options: OptionsType) => {
const dragMove = (e:MouseEvent) => {
options.dragMove && options.dragMove(e)
}
const dragStop = (e:MouseEvent) => {
document.removeEventListener('mousemove', dragMove)
document.removeEventListener('mouseup', dragStop)
document.onselectstart = null
document.ondragstart = null
isDragging = false
options.dragStop && options.dragStop(e)
}
el && el.addEventListener('mousedown', (e:MouseEvent) => {
if (isDragging) return
document.onselectstart = function () {
return false
}
document.ondragstart = function () {
return false
}
document.addEventListener('mousemove', dragMove)
document.addEventListener('mouseup', dragStop)
isDragging = true
options.dragStart && options.dragStart(e)
})
}