{"version":3,"file":"index.mjs","sources":["../../../../../packages/directives/repeat-click/index.ts"],"sourcesContent":["import { isFunction } from '@vuesax-plus/utils'\n\nimport type { ObjectDirective } from 'vue'\n\nexport const REPEAT_INTERVAL = 100\nexport const REPEAT_DELAY = 600\n\nexport interface RepeatClickOptions {\n  interval?: number\n  delay?: number\n  handler: (...args: unknown[]) => unknown\n}\n\nexport const RepeatClick: ObjectDirective<\n  HTMLElement,\n  RepeatClickOptions | RepeatClickOptions['handler']\n> = {\n  beforeMount(el, binding) {\n    const value = binding.value\n    const { interval = REPEAT_INTERVAL, delay = REPEAT_DELAY } = isFunction(\n      value\n    )\n      ? {}\n      : value\n\n    let intervalId: ReturnType<typeof setInterval> | undefined\n    let delayId: ReturnType<typeof setTimeout> | undefined\n\n    const handler = () => (isFunction(value) ? value() : value.handler())\n\n    const clear = () => {\n      if (delayId) {\n        clearTimeout(delayId)\n        delayId = undefined\n      }\n      if (intervalId) {\n        clearInterval(intervalId)\n        intervalId = undefined\n      }\n    }\n\n    el.addEventListener('mousedown', (evt: MouseEvent) => {\n      if (evt.button !== 0) return\n      clear()\n      handler()\n\n      document.addEventListener('mouseup', () => clear(), {\n        once: true,\n      })\n\n      delayId = setTimeout(() => {\n        intervalId = setInterval(() => {\n          handler()\n        }, interval)\n      }, delay)\n    })\n  },\n}\n"],"names":[],"mappings":";;;AAIO,MAAM,eAAkB,GAAA,IAAA;AACxB,MAAM,YAAe,GAAA,IAAA;AAQrB,MAAM,WAGT,GAAA;AAAA,EACF,WAAA,CAAY,IAAI,OAAS,EAAA;AACvB,IAAA,MAAM,QAAQ,OAAQ,CAAA,KAAA,CAAA;AACtB,IAAA,MAAM,EAAE,QAAA,GAAW,eAAiB,EAAA,KAAA,GAAQ,cAAiB,GAAA,UAAA;AAAA,MAC3D,KAAA;AAAA,KACF,GACI,EACA,GAAA,KAAA,CAAA;AAEJ,IAAI,IAAA,UAAA,CAAA;AACJ,IAAI,IAAA,OAAA,CAAA;AAEJ,IAAM,MAAA,OAAA,GAAU,MAAO,UAAW,CAAA,KAAK,IAAI,KAAM,EAAA,GAAI,MAAM,OAAQ,EAAA,CAAA;AAEnE,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,IAAI,OAAS,EAAA;AACX,QAAA,YAAA,CAAa,OAAO,CAAA,CAAA;AACpB,QAAU,OAAA,GAAA,KAAA,CAAA,CAAA;AAAA,OACZ;AACA,MAAA,IAAI,UAAY,EAAA;AACd,QAAA,aAAA,CAAc,UAAU,CAAA,CAAA;AACxB,QAAa,UAAA,GAAA,KAAA,CAAA,CAAA;AAAA,OACf;AAAA,KACF,CAAA;AAEA,IAAG,EAAA,CAAA,gBAAA,CAAiB,WAAa,EAAA,CAAC,GAAoB,KAAA;AACpD,MAAA,IAAI,IAAI,MAAW,KAAA,CAAA;AAAG,QAAA,OAAA;AACtB,MAAM,KAAA,EAAA,CAAA;AACN,MAAQ,OAAA,EAAA,CAAA;AAER,MAAA,QAAA,CAAS,gBAAiB,CAAA,SAAA,EAAW,MAAM,KAAA,EAAS,EAAA;AAAA,QAClD,IAAM,EAAA,IAAA;AAAA,OACP,CAAA,CAAA;AAED,MAAA,OAAA,GAAU,WAAW,MAAM;AACzB,QAAA,UAAA,GAAa,YAAY,MAAM;AAC7B,UAAQ,OAAA,EAAA,CAAA;AAAA,WACP,QAAQ,CAAA,CAAA;AAAA,SACV,KAAK,CAAA,CAAA;AAAA,KACT,CAAA,CAAA;AAAA,GACH;AACF;;;;"}