events-strategy.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. "use strict";
  2. /*!
  3. * devextreme-angular
  4. * Version: 19.1.16
  5. * Build date: Tue Oct 18 2022
  6. *
  7. * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED
  8. *
  9. * This software may be modified and distributed under the terms
  10. * of the MIT license. See the LICENSE file in the root of the project for details.
  11. *
  12. * https://github.com/DevExpress/devextreme-angular
  13. */
  14. Object.defineProperty(exports, "__esModule", { value: true });
  15. var core_1 = require("@angular/core");
  16. var NgEventsStrategy = (function () {
  17. function NgEventsStrategy(instance) {
  18. this.instance = instance;
  19. this.subscriptions = {};
  20. this.events = {};
  21. }
  22. NgEventsStrategy.prototype.hasEvent = function (name) {
  23. return this.getEmitter(name).observers.length !== 0;
  24. };
  25. NgEventsStrategy.prototype.fireEvent = function (name, args) {
  26. var emitter = this.getEmitter(name);
  27. if (emitter.observers.length) {
  28. emitter.next(args && args[0]);
  29. }
  30. };
  31. NgEventsStrategy.prototype.on = function (name, handler) {
  32. var eventSubscriptions = this.subscriptions[name] || [], subcription = this.getEmitter(name).subscribe(handler.bind(this.instance)), unsubscribe = subcription.unsubscribe.bind(subcription);
  33. eventSubscriptions.push({ handler: handler, unsubscribe: unsubscribe });
  34. this.subscriptions[name] = eventSubscriptions;
  35. };
  36. NgEventsStrategy.prototype.off = function (name, handler) {
  37. var eventSubscriptions = this.subscriptions[name] || [];
  38. if (handler) {
  39. eventSubscriptions.some(function (subscription, i) {
  40. if (subscription.handler === handler) {
  41. subscription.unsubscribe();
  42. eventSubscriptions.splice(i, 1);
  43. return true;
  44. }
  45. });
  46. }
  47. else {
  48. eventSubscriptions.forEach(function (subscription) {
  49. subscription.unsubscribe();
  50. });
  51. eventSubscriptions.splice(0, eventSubscriptions.length);
  52. }
  53. };
  54. NgEventsStrategy.prototype.dispose = function () { };
  55. NgEventsStrategy.prototype.addEmitter = function (eventName, emitter) {
  56. this.events[eventName] = emitter;
  57. };
  58. NgEventsStrategy.prototype.getEmitter = function (eventName) {
  59. if (!this.events[eventName]) {
  60. this.events[eventName] = new core_1.EventEmitter();
  61. }
  62. return this.events[eventName];
  63. };
  64. return NgEventsStrategy;
  65. }());
  66. exports.NgEventsStrategy = NgEventsStrategy;
  67. var EmitterHelper = (function () {
  68. function EmitterHelper(zone, component) {
  69. this.zone = zone;
  70. this.component = component;
  71. this.lockedValueChangeEvent = false;
  72. }
  73. EmitterHelper.prototype.fireNgEvent = function (eventName, eventArgs) {
  74. if (this.lockedValueChangeEvent && eventName === 'valueChange') {
  75. return;
  76. }
  77. var emitter = this.component[eventName];
  78. if (emitter && emitter.observers.length) {
  79. this.zone.run(function () {
  80. emitter.next(eventArgs && eventArgs[0]);
  81. });
  82. }
  83. };
  84. EmitterHelper.prototype.createEmitters = function (events) {
  85. var _this = this;
  86. events.forEach(function (event) {
  87. _this.component[event.emit] = new core_1.EventEmitter();
  88. });
  89. };
  90. return EmitterHelper;
  91. }());
  92. exports.EmitterHelper = EmitterHelper;
  93. //# sourceMappingURL=events-strategy.js.map