event_emitter.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /**
  2. * DevExtreme (viz/vector_map/event_emitter.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. var eventEmitterMethods = {
  12. _initEvents: function() {
  13. var names = this._eventNames;
  14. var i;
  15. var ii = names.length;
  16. var events = this._events = {};
  17. for (i = 0; i < ii; ++i) {
  18. events[names[i]] = Callbacks()
  19. }
  20. },
  21. _disposeEvents: function() {
  22. var events = this._events;
  23. var name;
  24. for (name in events) {
  25. events[name].empty()
  26. }
  27. this._events = null
  28. },
  29. on: function(handlers) {
  30. var events = this._events;
  31. var name;
  32. for (name in handlers) {
  33. events[name].add(handlers[name])
  34. }
  35. return dispose;
  36. function dispose() {
  37. for (name in handlers) {
  38. events[name].remove(handlers[name])
  39. }
  40. }
  41. },
  42. _fire: function(name, arg) {
  43. this._events[name].fire(arg)
  44. }
  45. };
  46. exports.makeEventEmitter = function(target) {
  47. var proto = target.prototype;
  48. var name;
  49. for (name in eventEmitterMethods) {
  50. proto[name] = eventEmitterMethods[name]
  51. }
  52. };