2a5f51697517234ed06a79b213dfeabb6754b2612455a1c20f744d70be1265c0c123b8b8f5c744e6bcac76a11699bb5d246d9b141f8df99e30f36aa16596b4 712 B

1234567891011121314151617181920212223242526
  1. import { once, on } from 'element-ui/src/utils/dom';
  2. import { isMac } from 'element-ui/src/utils/util';
  3. export default {
  4. bind(el, binding, vnode) {
  5. let interval = null;
  6. let startTime;
  7. const maxIntervals = isMac() ? 100 : 200;
  8. const handler = () => vnode.context[binding.expression].apply();
  9. const clear = () => {
  10. if (Date.now() - startTime < maxIntervals) {
  11. handler();
  12. }
  13. clearInterval(interval);
  14. interval = null;
  15. };
  16. on(el, 'mousedown', (e) => {
  17. if (e.button !== 0) return;
  18. startTime = Date.now();
  19. once(document, 'mouseup', clear);
  20. clearInterval(interval);
  21. interval = setInterval(handler, maxIntervals);
  22. });
  23. }
  24. };