UNPKG

captain-ui

Version:

有赞vue wap业务组件库

67 lines (52 loc) 1.84 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = _default; var _vue = _interopRequireDefault(require("vue")); var isDragging = false; var supportTouch = !_vue.default.prototype.$isServer && 'ontouchstart' in window; function _default(element, options) { var moveFn = function moveFn(event) { if (options.drag) { options.stopPropagation && event.stopPropagation(); options.drag(supportTouch ? event.changedTouches[0] || event.touches[0] : event); } }; var endFn = function endFn(event) { if (!supportTouch) { document.removeEventListener('mousemove', moveFn); document.removeEventListener('mouseup', endFn); } document.onselectstart = null; document.ondragstart = null; isDragging = false; if (options.end) { options.stopPropagation && event.stopPropagation(); options.end(supportTouch ? event.changedTouches[0] || event.touches[0] : event); } }; element.addEventListener(supportTouch ? 'touchstart' : 'mousedown', function (event) { if (isDragging) return; document.onselectstart = function () { return false; }; document.ondragstart = function () { return false; }; if (!supportTouch) { document.addEventListener('mousemove', moveFn); document.addEventListener('mouseup', endFn); } isDragging = true; if (options.start) { event.preventDefault(); options.stopPropagation && event.stopPropagation(); options.start(supportTouch ? event.changedTouches[0] || event.touches[0] : event); } }); if (supportTouch) { element.addEventListener('touchmove', moveFn); element.addEventListener('touchend', endFn); element.addEventListener('touchcancel', endFn); } }