observer.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /**
  2. * DevExtreme (events/pointer/observer.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 each = require("../../core/utils/iterator").each;
  11. var readyCallbacks = require("../../core/utils/ready_callbacks");
  12. var domAdapter = require("../../core/dom_adapter");
  13. var addEventsListener = function(events, handler) {
  14. readyCallbacks.add(function() {
  15. events.split(" ").forEach(function(event) {
  16. domAdapter.listen(domAdapter.getDocument(), event, handler, true)
  17. })
  18. })
  19. };
  20. var Observer = function(eventMap, pointerEquals, onPointerAdding) {
  21. onPointerAdding = onPointerAdding || function() {};
  22. var pointers = [];
  23. var getPointerIndex = function(e) {
  24. var index = -1;
  25. each(pointers, function(i, pointer) {
  26. if (!pointerEquals(e, pointer)) {
  27. return true
  28. }
  29. index = i;
  30. return false
  31. });
  32. return index
  33. };
  34. var addPointer = function(e) {
  35. if (getPointerIndex(e) === -1) {
  36. onPointerAdding(e);
  37. pointers.push(e)
  38. }
  39. };
  40. var removePointer = function(e) {
  41. var index = getPointerIndex(e);
  42. if (index > -1) {
  43. pointers.splice(index, 1)
  44. }
  45. };
  46. var updatePointer = function(e) {
  47. pointers[getPointerIndex(e)] = e
  48. };
  49. addEventsListener(eventMap.dxpointerdown, addPointer);
  50. addEventsListener(eventMap.dxpointermove, updatePointer);
  51. addEventsListener(eventMap.dxpointerup, removePointer);
  52. addEventsListener(eventMap.dxpointercancel, removePointer);
  53. this.pointers = function() {
  54. return pointers
  55. };
  56. this.reset = function() {
  57. pointers = []
  58. }
  59. };
  60. module.exports = Observer;