56 lines
2.0 KiB
JavaScript
56 lines
2.0 KiB
JavaScript
import { EventHook } from './hook';
|
|
import { Util } from './util';
|
|
// Prevent triggered image.load events from bubbling to window.load
|
|
export var Special;
|
|
(function (Special) {
|
|
EventHook.register('load', {
|
|
noBubble: true,
|
|
});
|
|
})(Special || (Special = {}));
|
|
// Support: Chrome <=73+
|
|
// Chrome doesn't alert on `event.preventDefault()`
|
|
// as the standard mandates.
|
|
(function (Special) {
|
|
EventHook.register('beforeunload', {
|
|
postDispatch(elem, event) {
|
|
if (event.result !== undefined && event.originalEvent) {
|
|
event.originalEvent.returnValue = event.result;
|
|
}
|
|
},
|
|
});
|
|
})(Special || (Special = {}));
|
|
// For mouseenter/leave call the handler if related is outside the target.
|
|
// NB: No relatedTarget if the mouse left/entered the browser window
|
|
(function (Special) {
|
|
EventHook.register('mouseenter', {
|
|
delegateType: 'mouseover',
|
|
bindType: 'mouseover',
|
|
handle(target, event) {
|
|
let ret;
|
|
const related = event.relatedTarget;
|
|
const handleObj = event.handleObj;
|
|
if (!related || (related !== target && !Util.contains(target, related))) {
|
|
event.type = handleObj.originType;
|
|
ret = handleObj.handler.call(target, event);
|
|
event.type = 'mouseover';
|
|
}
|
|
return ret;
|
|
},
|
|
});
|
|
EventHook.register('mouseleave', {
|
|
delegateType: 'mouseout',
|
|
bindType: 'mouseout',
|
|
handle(target, event) {
|
|
let ret;
|
|
const related = event.relatedTarget;
|
|
const handleObj = event.handleObj;
|
|
if (!related || (related !== target && !Util.contains(target, related))) {
|
|
event.type = handleObj.originType;
|
|
ret = handleObj.handler.call(target, event);
|
|
event.type = 'mouseout';
|
|
}
|
|
return ret;
|
|
},
|
|
});
|
|
})(Special || (Special = {}));
|
|
//# sourceMappingURL=special.js.map
|