67 lines
1.6 KiB
TypeScript
67 lines
1.6 KiB
TypeScript
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)
|
|
},
|
|
once(eventType, cb) {
|
|
this.eventMap.set(eventType, [cb])
|
|
},
|
|
off(eventType, fn) {
|
|
const cbs = this.eventMap.has(eventType)
|
|
if (cbs) {
|
|
if (fn) {
|
|
const cbs = this.eventMap.get(eventType)
|
|
const 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?) {
|
|
console.log('emit', eventType, val)
|
|
const cbs = this.eventMap.get(eventType)
|
|
if (cbs) {
|
|
cbs.map((cb) => cb(val))
|
|
}
|
|
}
|
|
}
|
|
|
|
export const EVENT_KEY = {
|
|
SINGLE_CLICK: 'SINGLE_CLICK',
|
|
SINGLE_CLICK_BROADCAST: 'SINGLE_CLICK_BROADCAST',
|
|
ENTER_FULLSCREEN: 'ENTER_FULLSCREEN',
|
|
EXIT_FULLSCREEN: 'EXIT_FULLSCREEN',
|
|
TOGGLE_FULLSCREEN: 'TOGGLE_FULLSCREEN',
|
|
TOGGLE_COMMENT: 'TOGGLE_COMMENT',
|
|
OPEN_COMMENTS: 'OPEN_COMMENTS',
|
|
CLOSE_COMMENTS: 'CLOSE_COMMENTS',
|
|
DIALOG_MOVE: 'DIALOG_MOVE',
|
|
DIALOG_END: 'DIALOG_END',
|
|
OPEN_SUB_TYPE: 'OPEN_SUB_TYPE',
|
|
CLOSE_SUB_TYPE: 'CLOSE_SUB_TYPE',
|
|
ITEM_TOGGLE: 'ITEM_TOGGLE',
|
|
ITEM_PLAY: 'ITEM_PLAY',
|
|
ITEM_STOP: 'ITEM_STOP',
|
|
NAV: 'NAV',
|
|
GO_USERINFO: 'GO_USERINFO',
|
|
SHOW_SHARE: 'SHOW_SHARE',
|
|
UPDATE_ITEM: 'UPDATE_ITEM',
|
|
CURRENT_ITEM: 'CURRENT_ITEM'
|
|
}
|