-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathasync-event-target.js
More file actions
38 lines (33 loc) · 982 Bytes
/
async-event-target.js
File metadata and controls
38 lines (33 loc) · 982 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
"use module"
import { EventTarget} from "yaeti"
import { ExtendableEventMixin} from "./extendable-event.js"
const __dispatchEvent= EventTarget.prototype.dispatchEvent
class ExtendableEventTarget extends EventTarget{
static mixin( eventTarget){
if( !( eventTarget instanceof ExtendableEventTarget)&& eventTarget.dispatchEvent!== ExtendableEventTarget.prototype.dispatchEvent){
Object.defineProperties( eventTarget, {
dispatchEvent: {
value: ExtendableEventTarget.prototype.dispatchEvent,
configurable: true
}
})
}
return eventTarget
}
dispatchEvent( evt){
// enhance event
ExtendableEventMixin( evt)
// call underlying
var value= __dispatchEvent.call( this, evt)
if( value=== false){
return false
}
// return a promise for when all the waits are done
return evt.then()
}
}
export const ExtendableEventTargetMixin= ExtendableEventTarget.mixin
export {
ExtendableEventTarget as default,
ExtendableEventTargetMixin as mixin
}