{"version":3,"file":"index.mjs","sources":["../../../../../packages/directives/repeat-click/index.ts"],"sourcesContent":["import type { DirectiveBinding, ObjectDirective } from 'vue'\n\nconst RepeatClick: ObjectDirective = {\n  beforeMount(el: HTMLElement, binding: DirectiveBinding) {\n    let interval: ReturnType<typeof setInterval> | null = null\n    let isHandlerCalled = false\n\n    const handler = () => binding.value && binding.value()\n\n    const clear = () => {\n      clearInterval(interval!)\n      interval = null\n\n      if (!isHandlerCalled) {\n        handler()\n      }\n      isHandlerCalled = false\n    }\n\n    el.addEventListener('mousedown', (e: MouseEvent) => {\n      if (e.button !== 0) return\n\n      document.addEventListener('mouseup', clear, { once: true })\n\n      clearInterval(interval!)\n      interval = setInterval(() => {\n        isHandlerCalled = true\n        handler()\n      }, 100)\n    })\n  },\n}\n\nexport default RepeatClick\n"],"names":[],"mappings":"AAAK,MAAC,WAAW,GAAG;AACpB,EAAE,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE;AAC3B,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,eAAe,GAAG,KAAK,CAAC;AAChC,IAAI,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;AAC3D,IAAI,MAAM,KAAK,GAAG,MAAM;AACxB,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM,IAAI,CAAC,eAAe,EAAE;AAC5B,QAAQ,OAAO,EAAE,CAAC;AAClB,OAAO;AACP,MAAM,eAAe,GAAG,KAAK,CAAC;AAC9B,KAAK,CAAC;AACN,IAAI,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK;AAC5C,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;AACxB,QAAQ,OAAO;AACf,MAAM,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAClE,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC9B,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM;AACnC,QAAQ,eAAe,GAAG,IAAI,CAAC;AAC/B,QAAQ,OAAO,EAAE,CAAC;AAClB,OAAO,EAAE,GAAG,CAAC,CAAC;AACd,KAAK,CAAC,CAAC;AACP,GAAG;AACH;;;;"}