events_mixin.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /**
  2. * DevExtreme (core/events_mixin.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 DefaultEventsStrategy = require("./events_strategy");
  11. var each = require("./utils/iterator").each;
  12. var isPlainObject = require("./utils/type").isPlainObject;
  13. module.exports = {
  14. ctor: function() {
  15. this._events = {};
  16. this.setEventsStrategy(new DefaultEventsStrategy(this))
  17. },
  18. setEventsStrategy: function(strategy) {
  19. if ("function" === typeof strategy) {
  20. strategy = strategy(this)
  21. }
  22. this._eventsStrategy = strategy
  23. },
  24. hasEvent: function(eventName) {
  25. return this._eventsStrategy.hasEvent(eventName)
  26. },
  27. fireEvent: function(eventName, eventArgs) {
  28. this._eventsStrategy.fireEvent(eventName, eventArgs);
  29. return this
  30. },
  31. on: function(eventName, eventHandler) {
  32. if (isPlainObject(eventName)) {
  33. each(eventName, function(e, h) {
  34. this.on(e, h)
  35. }.bind(this))
  36. } else {
  37. this._eventsStrategy.on(eventName, eventHandler)
  38. }
  39. return this
  40. },
  41. off: function(eventName, eventHandler) {
  42. this._eventsStrategy.off(eventName, eventHandler);
  43. return this
  44. },
  45. _disposeEvents: function() {
  46. this._eventsStrategy.dispose()
  47. }
  48. };