{"version":3,"file":"index.mjs","sources":["../../../../../packages/directives/repeat-click/index.ts"],"sourcesContent":["import { isFunction } from '@vue/shared'\r\n\r\nimport type { ObjectDirective } from 'vue'\r\n\r\nexport const REPEAT_INTERVAL = 100\r\nexport const REPEAT_DELAY = 600\r\n\r\nexport interface RepeatClickOptions {\r\n  interval?: number\r\n  delay?: number\r\n  handler: (...args: unknown[]) => unknown\r\n}\r\n\r\nexport const RepeatClick: ObjectDirective<\r\n  HTMLElement,\r\n  RepeatClickOptions | RepeatClickOptions['handler']\r\n> = {\r\n  beforeMount(el, binding) {\r\n    const value = binding.value\r\n    const { interval = REPEAT_INTERVAL, delay = REPEAT_DELAY } = isFunction(\r\n      value\r\n    )\r\n      ? {}\r\n      : value\r\n\r\n    let intervalId: ReturnType<typeof setInterval> | undefined\r\n    let delayId: ReturnType<typeof setTimeout> | undefined\r\n\r\n    const handler = () => (isFunction(value) ? value() : value.handler())\r\n\r\n    const clear = () => {\r\n      if (delayId) {\r\n        clearTimeout(delayId)\r\n        delayId = undefined\r\n      }\r\n      if (intervalId) {\r\n        clearInterval(intervalId)\r\n        intervalId = undefined\r\n      }\r\n    }\r\n\r\n    el.addEventListener('mousedown', (evt: MouseEvent) => {\r\n      if (evt.button !== 0) return\r\n      clear()\r\n      handler()\r\n\r\n      document.addEventListener('mouseup', () => clear(), {\r\n        once: true,\r\n      })\r\n\r\n      delayId = setTimeout(() => {\r\n        intervalId = setInterval(() => {\r\n          handler()\r\n        }, interval)\r\n      }, delay)\r\n    })\r\n  },\r\n}\r\n\r\n"],"names":[],"mappings":";;AACY,MAAC,eAAe,GAAG,IAAI;AACvB,MAAC,YAAY,GAAG,IAAI;AACpB,MAAC,WAAW,GAAG;AAC3B,EAAE,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE;AAC3B,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAChC,IAAI,MAAM,EAAE,QAAQ,GAAG,eAAe,EAAE,KAAK,GAAG,YAAY,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;AAChG,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;AACxE,IAAI,MAAM,KAAK,GAAG,MAAM;AACxB,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,YAAY,CAAC,OAAO,CAAC,CAAC;AAC9B,QAAQ,OAAO,GAAG,KAAK,CAAC,CAAC;AACzB,OAAO;AACP,MAAM,IAAI,UAAU,EAAE;AACtB,QAAQ,aAAa,CAAC,UAAU,CAAC,CAAC;AAClC,QAAQ,UAAU,GAAG,KAAK,CAAC,CAAC;AAC5B,OAAO;AACP,KAAK,CAAC;AACN,IAAI,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK;AAC9C,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;AAC1B,QAAQ,OAAO;AACf,MAAM,KAAK,EAAE,CAAC;AACd,MAAM,OAAO,EAAE,CAAC;AAChB,MAAM,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,KAAK,EAAE,EAAE;AAC1D,QAAQ,IAAI,EAAE,IAAI;AAClB,OAAO,CAAC,CAAC;AACT,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM;AACjC,QAAQ,UAAU,GAAG,WAAW,CAAC,MAAM;AACvC,UAAU,OAAO,EAAE,CAAC;AACpB,SAAS,EAAE,QAAQ,CAAC,CAAC;AACrB,OAAO,EAAE,KAAK,CAAC,CAAC;AAChB,KAAK,CAAC,CAAC;AACP,GAAG;AACH;;;;"}