47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { value: true });
 | 
						|
 | 
						|
var shared = require('@vue/shared');
 | 
						|
 | 
						|
const REPEAT_INTERVAL = 100;
 | 
						|
const REPEAT_DELAY = 600;
 | 
						|
const vRepeatClick = {
 | 
						|
  beforeMount(el, binding) {
 | 
						|
    const value = binding.value;
 | 
						|
    const { interval = REPEAT_INTERVAL, delay = REPEAT_DELAY } = shared.isFunction(value) ? {} : value;
 | 
						|
    let intervalId;
 | 
						|
    let delayId;
 | 
						|
    const handler = () => shared.isFunction(value) ? value() : value.handler();
 | 
						|
    const clear = () => {
 | 
						|
      if (delayId) {
 | 
						|
        clearTimeout(delayId);
 | 
						|
        delayId = void 0;
 | 
						|
      }
 | 
						|
      if (intervalId) {
 | 
						|
        clearInterval(intervalId);
 | 
						|
        intervalId = void 0;
 | 
						|
      }
 | 
						|
    };
 | 
						|
    el.addEventListener("mousedown", (evt) => {
 | 
						|
      if (evt.button !== 0)
 | 
						|
        return;
 | 
						|
      clear();
 | 
						|
      handler();
 | 
						|
      document.addEventListener("mouseup", () => clear(), {
 | 
						|
        once: true
 | 
						|
      });
 | 
						|
      delayId = setTimeout(() => {
 | 
						|
        intervalId = setInterval(() => {
 | 
						|
          handler();
 | 
						|
        }, interval);
 | 
						|
      }, delay);
 | 
						|
    });
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
exports.REPEAT_DELAY = REPEAT_DELAY;
 | 
						|
exports.REPEAT_INTERVAL = REPEAT_INTERVAL;
 | 
						|
exports.vRepeatClick = vRepeatClick;
 | 
						|
//# sourceMappingURL=index.js.map
 |