-
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Expand file tree
/
Copy pathevents.js
More file actions
88 lines (82 loc) · 2.17 KB
/
events.js
File metadata and controls
88 lines (82 loc) · 2.17 KB
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
class Events {
constructor() {
this.events = {};
this.videoEvents = [
'abort',
'canplay',
'canplaythrough',
'durationchange',
'emptied',
'ended',
'error',
'loadeddata',
'loadedmetadata',
'loadstart',
'mozaudioavailable',
'pause',
'play',
'playing',
'progress',
'ratechange',
'seeked',
'seeking',
'stalled',
'suspend',
'timeupdate',
'volumechange',
'waiting',
];
this.playerEvents = [
'screenshot',
'thumbnails_show',
'thumbnails_hide',
'danmaku_show',
'danmaku_hide',
'danmaku_clear',
'danmaku_load_start',
'danmaku_load_end',
'danmaku_send',
'danmaku_opacity',
'contextmenu_show',
'contextmenu_hide',
'notice_show',
'notice_hide',
'quality_start',
'quality_end',
'destroy',
'resize',
'fullscreen',
'fullscreen_cancel',
'webfullscreen',
'webfullscreen_cancel',
'subtitle_show',
'subtitle_hide',
'subtitle_change',
];
}
on(name, callback) {
if (this.type(name) && typeof callback === 'function') {
if (!this.events[name]) {
this.events[name] = [];
}
this.events[name].push(callback);
}
}
trigger(name, info) {
if (this.events[name] && this.events[name].length) {
for (let i = 0; i < this.events[name].length; i++) {
this.events[name][i](info);
}
}
}
type(name) {
if (this.playerEvents.indexOf(name) !== -1) {
return 'player';
} else if (this.videoEvents.indexOf(name) !== -1) {
return 'video';
}
console.error(`Unknown event name: ${name}`);
return null;
}
}
export default Events;