emitter.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. /**
  2. * DevExtreme (events/core/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 $ = require("../../core/renderer");
  11. var noop = require("../../core/utils/common").noop;
  12. var Class = require("../../core/class");
  13. var Callbacks = require("../../core/utils/callbacks");
  14. var extend = require("../../core/utils/extend").extend;
  15. var eventUtils = require("../utils");
  16. var Emitter = Class.inherit({
  17. ctor: function(element) {
  18. this._$element = $(element);
  19. this._cancelCallback = Callbacks();
  20. this._acceptCallback = Callbacks()
  21. },
  22. getElement: function() {
  23. return this._$element
  24. },
  25. validate: function(e) {
  26. return !eventUtils.isDxMouseWheelEvent(e)
  27. },
  28. validatePointers: function(e) {
  29. return 1 === eventUtils.hasTouches(e)
  30. },
  31. allowInterruptionByMouseWheel: function() {
  32. return true
  33. },
  34. configure: function(data) {
  35. extend(this, data)
  36. },
  37. addCancelCallback: function(callback) {
  38. this._cancelCallback.add(callback)
  39. },
  40. removeCancelCallback: function() {
  41. this._cancelCallback.empty()
  42. },
  43. _cancel: function(e) {
  44. this._cancelCallback.fire(this, e)
  45. },
  46. addAcceptCallback: function(callback) {
  47. this._acceptCallback.add(callback)
  48. },
  49. removeAcceptCallback: function() {
  50. this._acceptCallback.empty()
  51. },
  52. _accept: function(e) {
  53. this._acceptCallback.fire(this, e)
  54. },
  55. _requestAccept: function(e) {
  56. this._acceptRequestEvent = e
  57. },
  58. _forgetAccept: function() {
  59. this._accept(this._acceptRequestEvent);
  60. this._acceptRequestEvent = null
  61. },
  62. start: noop,
  63. move: noop,
  64. end: noop,
  65. cancel: noop,
  66. reset: function() {
  67. if (this._acceptRequestEvent) {
  68. this._accept(this._acceptRequestEvent)
  69. }
  70. },
  71. _fireEvent: function(eventName, e, params) {
  72. var eventData = extend({
  73. type: eventName,
  74. originalEvent: e,
  75. target: this._getEmitterTarget(e),
  76. delegateTarget: this.getElement().get(0)
  77. }, params);
  78. e = eventUtils.fireEvent(eventData);
  79. if (e.cancel) {
  80. this._cancel(e)
  81. }
  82. return e
  83. },
  84. _getEmitterTarget: function(e) {
  85. return (this.delegateSelector ? $(e.target).closest(this.delegateSelector) : this.getElement()).get(0)
  86. },
  87. dispose: noop
  88. });
  89. module.exports = Emitter;