{"version":3,"file":"index.mjs","sources":["../../../../../packages/directives/repeat-click/index.ts"],"sourcesContent":["import { isFunction } from '@element-plus/utils'\n\nimport type { ObjectDirective } from 'vue'\n\nexport const REPEAT_INTERVAL = 100\nexport const REPEAT_DELAY = 600\nconst SCOPE = '_RepeatClick'\n\ninterface RepeatClickEl extends HTMLElement {\n [SCOPE]: null | {\n start?: (evt: MouseEvent) => void\n clear?: () => void\n }\n}\n\nexport interface RepeatClickOptions {\n interval?: number\n delay?: number\n handler: (...args: unknown[]) => unknown\n}\n\nexport const vRepeatClick: ObjectDirective<\n RepeatClickEl,\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 | undefined\n let delayId: ReturnType | 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 const start = (evt: MouseEvent) => {\n if (evt.button !== 0) return\n clear()\n handler()\n\n document.addEventListener('mouseup', clear, { once: true })\n\n delayId = setTimeout(() => {\n intervalId = setInterval(() => {\n handler()\n }, interval)\n }, delay)\n }\n\n el[SCOPE] = { start, clear }\n el.addEventListener('mousedown', start)\n },\n unmounted(el) {\n if (!el[SCOPE]) return\n const { start, clear } = el[SCOPE]\n\n if (start) {\n el.removeEventListener('mousedown', start)\n }\n if (clear) {\n clear()\n document.removeEventListener('mouseup', clear)\n }\n el[SCOPE] = null\n },\n}\n"],"names":[],"mappings":";;AACY,MAAC,eAAe,GAAG,IAAI;AACvB,MAAC,YAAY,GAAG,IAAI;AAChC,MAAM,KAAK,GAAG,cAAc,CAAC;AACjB,MAAC,YAAY,GAAG;AAC5B,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,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK;AAC3B,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,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAClE,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;AACN,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACjC,IAAI,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAC5C,GAAG;AACH,EAAE,SAAS,CAAC,EAAE,EAAE;AAChB,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAClB,MAAM,OAAO;AACb,IAAI,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AACvC,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,EAAE,CAAC,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,KAAK,EAAE,CAAC;AACd,MAAM,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AACrB,GAAG;AACH;;;;"}