@antv/x6
Version:
JavaScript diagramming library that uses SVG and HTML for rendering
52 lines (48 loc) • 1.45 kB
text/typescript
import { register } from './hook'
import { contains } from './util'
// Prevent triggered image.load events from bubbling to window.load
register('load', {
noBubble: true,
})
// Support: Chrome <=73+
// Chrome doesn't alert on `event.preventDefault()`
// as the standard mandates.
register('beforeunload', {
postDispatch(elem, event) {
if (event.result !== undefined && event.originalEvent) {
event.originalEvent.returnValue = event.result
}
},
})
// For mouseenter/leave call the handler if related is outside the target.
// NB: No relatedTarget if the mouse left/entered the browser window
register('mouseenter', {
delegateType: 'mouseover',
bindType: 'mouseover',
handle(target, event) {
let ret
const related = event.relatedTarget
const handleObj = event.handleObj
if (!related || (related !== target && !contains(target, related))) {
event.type = handleObj.originType
ret = handleObj.handler.call(target, event)
event.type = 'mouseover'
}
return ret
},
})
register('mouseleave', {
delegateType: 'mouseout',
bindType: 'mouseout',
handle(target, event) {
let ret
const related = event.relatedTarget
const handleObj = event.handleObj
if (!related || (related !== target && !contains(target, related))) {
event.type = handleObj.originType
ret = handleObj.handler.call(target, event)
event.type = 'mouseout'
}
return ret
},
})