devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
46 lines (44 loc) • 1.36 kB
JavaScript
/**
* DevExtreme (viz/vector_map/data_exchanger.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/
*/
"use strict";
var Callbacks = require("../../core/utils/callbacks");
function DataExchanger() {
this._store = {}
}
DataExchanger.prototype = {
constructor: DataExchanger,
dispose: function() {
this._store = null;
return this
},
_get: function(category, name) {
var store = this._store[category] || (this._store[category] = {});
return store[name] || (store[name] = {
callbacks: Callbacks()
})
},
set: function(category, name, data) {
var item = this._get(category, name);
item.data = data;
item.callbacks.fire(data);
return this
},
bind: function(category, name, callback) {
var item = this._get(category, name);
item.callbacks.add(callback);
item.data && callback(item.data);
return this
},
unbind: function(category, name, callback) {
var item = this._get(category, name);
item.callbacks.remove(callback);
return this
}
};
exports.DataExchanger = DataExchanger;