UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 3.67 kB
{"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<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 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":";;AAIO,MAAM,eAAkB,GAAA,IAAA;AACxB,MAAM,YAAe,GAAA,IAAA;AAC5B,MAAM,KAAQ,GAAA,cAAA,CAAA;AAeP,MAAM,YAGT,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,IAAM,MAAA,KAAA,GAAQ,CAAC,GAAoB,KAAA;AACjC,MAAA,IAAI,IAAI,MAAW,KAAA,CAAA;AAAG,QAAA,OAAA;AACtB,MAAM,KAAA,EAAA,CAAA;AACN,MAAQ,OAAA,EAAA,CAAA;AAER,MAAA,QAAA,CAAS,iBAAiB,SAAW,EAAA,KAAA,EAAO,EAAE,IAAA,EAAM,MAAM,CAAA,CAAA;AAE1D,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,KACV,CAAA;AAEA,IAAG,EAAA,CAAA,KAAA,CAAA,GAAS,EAAE,KAAA,EAAO,KAAM,EAAA,CAAA;AAC3B,IAAG,EAAA,CAAA,gBAAA,CAAiB,aAAa,KAAK,CAAA,CAAA;AAAA,GACxC;AAAA,EACA,UAAU,EAAI,EAAA;AACZ,IAAA,IAAI,CAAC,EAAG,CAAA,KAAA,CAAA;AAAQ,MAAA,OAAA;AAChB,IAAA,MAAM,EAAE,KAAA,EAAO,KAAM,EAAA,GAAI,EAAG,CAAA,KAAA,CAAA,CAAA;AAE5B,IAAA,IAAI,KAAO,EAAA;AACT,MAAG,EAAA,CAAA,mBAAA,CAAoB,aAAa,KAAK,CAAA,CAAA;AAAA,KAC3C;AACA,IAAA,IAAI,KAAO,EAAA;AACT,MAAM,KAAA,EAAA,CAAA;AACN,MAAS,QAAA,CAAA,mBAAA,CAAoB,WAAW,KAAK,CAAA,CAAA;AAAA,KAC/C;AACA,IAAA,EAAA,CAAG,KAAS,CAAA,GAAA,IAAA,CAAA;AAAA,GACd;AACF;;;;"}