devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
57 lines (56 loc) • 1.73 kB
JavaScript
/**
* DevExtreme (core/events_strategy.js)
* Version: 18.1.3
* Build date: Tue May 15 2018
*
* Copyright (c) 2012 - 2018 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
var Callbacks = require("./utils/callbacks"),
isFunction = require("./utils/type").isFunction,
each = require("./utils/iterator").each,
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 addFn, callbacks = this._events[eventName];
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()
})
}
});