wheel.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /**
  2. * DevExtreme (events/core/wheel.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 eventsEngine = require("../../events/core/events_engine");
  12. var domAdapter = require("../../core/dom_adapter");
  13. var callOnce = require("../../core/utils/call_once");
  14. var registerEvent = require("./event_registrator");
  15. var eventUtils = require("../utils");
  16. var EVENT_NAME = "dxmousewheel";
  17. var EVENT_NAMESPACE = "dxWheel";
  18. var getWheelEventName = callOnce(function() {
  19. return domAdapter.hasDocumentProperty("onwheel") ? "wheel" : "mousewheel"
  20. });
  21. var wheel = {
  22. setup: function(element) {
  23. var $element = $(element);
  24. eventsEngine.on($element, eventUtils.addNamespace(getWheelEventName(), EVENT_NAMESPACE), wheel._wheelHandler.bind(wheel))
  25. },
  26. teardown: function(element) {
  27. eventsEngine.off(element, "." + EVENT_NAMESPACE)
  28. },
  29. _wheelHandler: function(e) {
  30. var delta = this._getWheelDelta(e.originalEvent);
  31. eventUtils.fireEvent({
  32. type: EVENT_NAME,
  33. originalEvent: e,
  34. delta: delta,
  35. pointerType: "mouse"
  36. });
  37. e.stopPropagation()
  38. },
  39. _getWheelDelta: function(event) {
  40. return event.wheelDelta ? event.wheelDelta : 30 * -event.deltaY
  41. }
  42. };
  43. registerEvent(EVENT_NAME, wheel);
  44. exports.name = EVENT_NAME;