repeat-click.js 853 B

123456789101112131415161718192021222324252627282930313233
  1. 'use strict';
  2. exports.__esModule = true;
  3. var _dom = require('element-ui/lib/utils/dom');
  4. var _util = require('element-ui/lib/utils/util');
  5. exports.default = {
  6. bind: function bind(el, binding, vnode) {
  7. var interval = null;
  8. var startTime = void 0;
  9. var maxIntervals = (0, _util.isMac)() ? 100 : 200;
  10. var handler = function handler() {
  11. return vnode.context[binding.expression].apply();
  12. };
  13. var clear = function clear() {
  14. if (Date.now() - startTime < maxIntervals) {
  15. handler();
  16. }
  17. clearInterval(interval);
  18. interval = null;
  19. };
  20. (0, _dom.on)(el, 'mousedown', function (e) {
  21. if (e.button !== 0) return;
  22. startTime = Date.now();
  23. (0, _dom.once)(document, 'mouseup', clear);
  24. clearInterval(interval);
  25. interval = setInterval(handler, maxIntervals);
  26. });
  27. }
  28. };