data_exchanger.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /**
  2. * DevExtreme (viz/vector_map/data_exchanger.js)
  3. * Version: 19.1.16
  4. * Build date: Tue Oct 18 2022
  5. *
  6. * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED
  7. * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
  8. */
  9. "use strict";
  10. var Callbacks = require("../../core/utils/callbacks");
  11. function DataExchanger() {
  12. this._store = {}
  13. }
  14. DataExchanger.prototype = {
  15. constructor: DataExchanger,
  16. dispose: function() {
  17. this._store = null;
  18. return this
  19. },
  20. _get: function(category, name) {
  21. var store = this._store[category] || (this._store[category] = {});
  22. return store[name] || (store[name] = {
  23. callbacks: Callbacks()
  24. })
  25. },
  26. set: function(category, name, data) {
  27. var item = this._get(category, name);
  28. item.data = data;
  29. item.callbacks.fire(data);
  30. return this
  31. },
  32. bind: function(category, name, callback) {
  33. var item = this._get(category, name);
  34. item.callbacks.add(callback);
  35. item.data && callback(item.data);
  36. return this
  37. },
  38. unbind: function(category, name, callback) {
  39. var item = this._get(category, name);
  40. item.callbacks.remove(callback);
  41. return this
  42. }
  43. };
  44. exports.DataExchanger = DataExchanger;