PluginProbe
MainWP Dashboard: Self-hosted WordPress Management for Agencies / 6.2.2
MainWP Dashboard: Self-hosted WordPress Management for Agencies v6.2.2
6.2.2 6.2.1 6.2 6.1.8 6.1.7 6.1.6 6.1.5 6.1.4 6.1.3 6.1.2 6.1.1 6.1 6.0.12 6.0.11 4.6.0.1 5.0 5.0.1 5.0.2 5.0.3 5.0.3.1 5.0.3.2 5.1 5.1.1 5.2 5.2.1 All 155 releases
mainwp / assets / js / dropzone / emitter.js

emitter.js in MainWP Dashboard: Self-hosted WordPress Management for Agencies 6.2.2, at assets/js/dropzone/emitter.js

87 lines 2.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 // The Emitter class provides the ability to call `.on()` on Dropzone to listen
2 // to events.
3 // It is strongly based on component's emitter class, and I removed the
4 // functionality because of the dependency hell with different frameworks.
5 export default class Emitter {
6 // Add an event listener for given event
7 on(event, fn) {
8 this._callbacks = this._callbacks || {};
9 // Create namespace for this event
10 if (!this._callbacks[event]) {
11 this._callbacks[event] = [];
12 }
13 this._callbacks[event].push(fn);
14 return this;
15 }
16
17 emit(event, ...args) {
18 this._callbacks = this._callbacks || {};
19 let callbacks = this._callbacks[event];
20
21 if (callbacks) {
22 for (let callback of callbacks) {
23 callback.apply(this, args);
24 }
25 }
26 // trigger a corresponding DOM event
27 if (this.element) {
28 this.element.dispatchEvent(
29 this.makeEvent("dropzone:" + event, { args: args })
30 );
31 }
32 return this;
33 }
34
35 makeEvent(eventName, detail) {
36 let params = { bubbles: true, cancelable: true, detail: detail };
37
38 if (typeof window.CustomEvent === "function") {
39 return new CustomEvent(eventName, params);
40 } else {
41 // IE 11 support
42 // https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent
43 var evt = document.createEvent("CustomEvent");
44 evt.initCustomEvent(
45 eventName,
46 params.bubbles,
47 params.cancelable,
48 params.detail
49 );
50 return evt;
51 }
52 }
53
54 // Remove event listener for given event. If fn is not provided, all event
55 // listeners for that event will be removed. If neither is provided, all
56 // event listeners will be removed.
57 off(event, fn) {
58 if (!this._callbacks || arguments.length === 0) {
59 this._callbacks = {};
60 return this;
61 }
62
63 // specific event
64 let callbacks = this._callbacks[event];
65 if (!callbacks) {
66 return this;
67 }
68
69 // remove all handlers
70 if (arguments.length === 1) {
71 delete this._callbacks[event];
72 return this;
73 }
74
75 // remove specific handler
76 for (let i = 0; i < callbacks.length; i++) {
77 let callback = callbacks[i];
78 if (callback === fn) {
79 callbacks.splice(i, 1);
80 break;
81 }
82 }
83
84 return this;
85 }
86 }
87