46 lines
995 B
JavaScript
46 lines
995 B
JavaScript
export default {
|
|
eventMap: new Map(),
|
|
on(eventType, cb) {
|
|
let cbs = this.eventMap.get(eventType)
|
|
if (cbs) {
|
|
cbs.push(cb)
|
|
} else {
|
|
cbs = [cb]
|
|
}
|
|
if (cbs.length > 10) {
|
|
console.error('eventMap', this.eventMap)
|
|
}
|
|
this.eventMap.set(eventType, cbs)
|
|
},
|
|
off(eventType, fn) {
|
|
let cbs = this.eventMap.has(eventType);
|
|
if (cbs) {
|
|
if (fn) {
|
|
let cbs = this.eventMap.get(eventType)
|
|
let rIndex = cbs.findIndex(v => v === fn)
|
|
if (rIndex > -1) {
|
|
cbs.splice(rIndex, 1)
|
|
}
|
|
this.eventMap.set(eventType, cbs)
|
|
} else {
|
|
this.eventMap.delete(eventType);
|
|
}
|
|
}
|
|
},
|
|
offAll() {
|
|
this.eventMap = new Map()
|
|
},
|
|
emit(eventType, val) {
|
|
let cbs = this.eventMap.get(eventType)
|
|
if (cbs) {
|
|
cbs.map(cb => cb(val))
|
|
}
|
|
}
|
|
}
|
|
|
|
export const EVENT_KEY = {
|
|
ENTER_FULLSCREEN: 'ENTER_FULLSCREEN',
|
|
EXIT_FULLSCREEN: 'EXIT_FULLSCREEN',
|
|
TOGGLE_COMMENT: 'TOGGLE_COMMENT',
|
|
}
|