devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
58 lines (57 loc) • 1.75 kB
JavaScript
/**
* DevExtreme (core/events_strategy.js)
* Version: 19.2.6
* Build date: Thu Jan 30 2020
*
* Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
var Callbacks = require("./utils/callbacks");
var isFunction = require("./utils/type").isFunction;
var each = require("./utils/iterator").each;
var Class = require("./class");
module.exports = Class.inherit({
ctor: function(owner) {
this._events = {};
this._owner = owner
},
hasEvent: function(eventName) {
var callbacks = this._events[eventName];
if (callbacks) {
return callbacks.has()
}
return false
},
fireEvent: function(eventName, eventArgs) {
var callbacks = this._events[eventName];
if (callbacks) {
callbacks.fireWith(this._owner, eventArgs)
}
},
on: function(eventName, eventHandler) {
var callbacks = this._events[eventName];
var addFn;
if (!callbacks) {
callbacks = Callbacks();
this._events[eventName] = callbacks
}
addFn = callbacks.originalAdd || callbacks.add;
addFn.call(callbacks, eventHandler)
},
off: function(eventName, eventHandler) {
var callbacks = this._events[eventName];
if (callbacks) {
if (isFunction(eventHandler)) {
callbacks.remove(eventHandler)
} else {
callbacks.empty()
}
}
},
dispose: function() {
each(this._events, function() {
this.empty()
})
}
});