项目原始demo,不改动
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 
 
 
 

117 rivejä
3.3 KiB

  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = exports.Touch = void 0;
  6. var _helpers = require("../../util/helpers");
  7. var handleGesture = function handleGesture(wrapper) {
  8. var touchstartX = wrapper.touchstartX,
  9. touchendX = wrapper.touchendX,
  10. touchstartY = wrapper.touchstartY,
  11. touchendY = wrapper.touchendY;
  12. var dirRatio = 0.5;
  13. var minDistance = 16;
  14. wrapper.offsetX = touchendX - touchstartX;
  15. wrapper.offsetY = touchendY - touchstartY;
  16. if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {
  17. wrapper.left && touchendX < touchstartX - minDistance && wrapper.left(wrapper);
  18. wrapper.right && touchendX > touchstartX + minDistance && wrapper.right(wrapper);
  19. }
  20. if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {
  21. wrapper.up && touchendY < touchstartY - minDistance && wrapper.up(wrapper);
  22. wrapper.down && touchendY > touchstartY + minDistance && wrapper.down(wrapper);
  23. }
  24. };
  25. function _touchstart(event, wrapper) {
  26. var touch = event.changedTouches[0];
  27. wrapper.touchstartX = touch.clientX;
  28. wrapper.touchstartY = touch.clientY;
  29. wrapper.start && wrapper.start(Object.assign(event, wrapper));
  30. }
  31. function _touchend(event, wrapper) {
  32. var touch = event.changedTouches[0];
  33. wrapper.touchendX = touch.clientX;
  34. wrapper.touchendY = touch.clientY;
  35. wrapper.end && wrapper.end(Object.assign(event, wrapper));
  36. handleGesture(wrapper);
  37. }
  38. function _touchmove(event, wrapper) {
  39. var touch = event.changedTouches[0];
  40. wrapper.touchmoveX = touch.clientX;
  41. wrapper.touchmoveY = touch.clientY;
  42. wrapper.move && wrapper.move(Object.assign(event, wrapper));
  43. }
  44. function createHandlers(value) {
  45. var wrapper = {
  46. touchstartX: 0,
  47. touchstartY: 0,
  48. touchendX: 0,
  49. touchendY: 0,
  50. touchmoveX: 0,
  51. touchmoveY: 0,
  52. offsetX: 0,
  53. offsetY: 0,
  54. left: value.left,
  55. right: value.right,
  56. up: value.up,
  57. down: value.down,
  58. start: value.start,
  59. move: value.move,
  60. end: value.end
  61. };
  62. return {
  63. touchstart: function touchstart(e) {
  64. return _touchstart(e, wrapper);
  65. },
  66. touchend: function touchend(e) {
  67. return _touchend(e, wrapper);
  68. },
  69. touchmove: function touchmove(e) {
  70. return _touchmove(e, wrapper);
  71. }
  72. };
  73. }
  74. function inserted(el, binding, vnode) {
  75. var value = binding.value;
  76. var target = value.parent ? el.parentElement : el;
  77. var options = value.options || {
  78. passive: true
  79. }; // Needed to pass unit tests
  80. if (!target) return;
  81. var handlers = createHandlers(binding.value);
  82. target._touchHandlers = Object(target._touchHandlers);
  83. target._touchHandlers[vnode.context._uid] = handlers;
  84. (0, _helpers.keys)(handlers).forEach(function (eventName) {
  85. target.addEventListener(eventName, handlers[eventName], options);
  86. });
  87. }
  88. function unbind(el, binding, vnode) {
  89. var target = binding.value.parent ? el.parentElement : el;
  90. if (!target || !target._touchHandlers) return;
  91. var handlers = target._touchHandlers[vnode.context._uid];
  92. (0, _helpers.keys)(handlers).forEach(function (eventName) {
  93. target.removeEventListener(eventName, handlers[eventName]);
  94. });
  95. delete target._touchHandlers[vnode.context._uid];
  96. }
  97. var Touch = {
  98. inserted: inserted,
  99. unbind: unbind
  100. };
  101. exports.Touch = Touch;
  102. var _default = Touch;
  103. exports.default = _default;
  104. //# sourceMappingURL=index.js.map