UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 3.52 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,eAAA,GAAkB;AACxB,MAAM,YAAA,GAAe;AAC5B,MAAM,KAAA,GAAQ,cAAA;AAeP,MAAM,YAAA,GAGT;AAAA,EACF,WAAA,CAAY,IAAI,OAAA,EAAS;AACvB,IAAA,MAAM,QAAQ,OAAA,CAAQ,KAAA;AACtB,IAAA,MAAM,EAAE,QAAA,GAAW,eAAA,EAAiB,KAAA,GAAQ,cAAa,GAAI,UAAA;AAAA,MAC3D;AAAA,KACF,GACI,EAAC,GACD,KAAA;AAEJ,IAAA,IAAI,UAAA;AACJ,IAAA,IAAI,OAAA;AAEJ,IAAA,MAAM,OAAA,GAAU,MAAO,UAAA,CAAW,KAAK,IAAI,KAAA,EAAM,GAAI,MAAM,OAAA,EAAQ;AAEnE,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,YAAA,CAAa,OAAO,CAAA;AACpB,QAAA,OAAA,GAAU,MAAA;AAAA,MACZ;AACA,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,aAAA,CAAc,UAAU,CAAA;AACxB,QAAA,UAAA,GAAa,MAAA;AAAA,MACf;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,KAAA,GAAQ,CAAC,GAAA,KAAoB;AACjC,MAAA,IAAI,GAAA,CAAI,WAAW,CAAA,EAAG;AACtB,MAAA,KAAA,EAAM;AACN,MAAA,OAAA,EAAQ;AAER,MAAA,QAAA,CAAS,iBAAiB,SAAA,EAAW,KAAA,EAAO,EAAE,IAAA,EAAM,MAAM,CAAA;AAE1D,MAAA,OAAA,GAAU,WAAW,MAAM;AACzB,QAAA,UAAA,GAAa,YAAY,MAAM;AAC7B,UAAA,OAAA,EAAQ;AAAA,QACV,GAAG,QAAQ,CAAA;AAAA,MACb,GAAG,KAAK,CAAA;AAAA,IACV,CAAA;AAEA,IAAA,EAAA,CAAG,KAAK,CAAA,GAAI,EAAE,KAAA,EAAO,KAAA,EAAM;AAC3B,IAAA,EAAA,CAAG,gBAAA,CAAiB,aAAa,KAAK,CAAA;AAAA,EACxC,CAAA;AAAA,EACA,UAAU,EAAA,EAAI;AACZ,IAAA,IAAI,CAAC,EAAA,CAAG,KAAK,CAAA,EAAG;AAChB,IAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAM,GAAI,GAAG,KAAK,CAAA;AAEjC,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,EAAA,CAAG,mBAAA,CAAoB,aAAa,KAAK,CAAA;AAAA,IAC3C;AACA,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,KAAA,EAAM;AACN,MAAA,QAAA,CAAS,mBAAA,CAAoB,WAAW,KAAK,CAAA;AAAA,IAC/C;AACA,IAAA,EAAA,CAAG,KAAK,CAAA,GAAI,IAAA;AAAA,EACd;AACF;;;;"}