{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/directives/click-longpress/index.ts"],"sourcesContent":["/**\n * v-longpress\n * 长按指令，长按时触发事件\n */\nimport { withInstallDirective } from \"../../utils\";\nimport type { Directive, DirectiveBinding } from \"vue\";\n\nconst LongpressDirective: Directive = {\n\tmounted(el: HTMLElement, binding: DirectiveBinding<(event: MouseEvent | TouchEvent) => void>) {\n\t\tif (typeof binding.value !== \"function\") {\n\t\t\tthrow new TypeError(\"callback 必须是函数。\");\n\t\t}\n\n\t\t// 运行函数\n\t\tconst handler = (e: MouseEvent | TouchEvent): void => {\n\t\t\tbinding.value(e);\n\t\t};\n\n\t\t// 定义变量\n\t\tlet pressTimer: ReturnType<typeof setTimeout> | undefined;\n\t\t// 创建计时器（ 2秒后执行函数 ）\n\t\tconst start = (event: MouseEvent | TouchEvent): void => {\n\t\t\tif (event instanceof MouseEvent && event.button !== 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpressTimer ??= setTimeout(() => {\n\t\t\t\thandler(event);\n\t\t\t}, 1000);\n\t\t};\n\t\t// 取消计时器\n\t\tconst cancel = (): void => {\n\t\t\tif (pressTimer !== undefined) {\n\t\t\t\tclearTimeout(pressTimer);\n\t\t\t\tpressTimer = undefined;\n\t\t\t}\n\t\t};\n\t\t// 添加事件监听器\n\t\tel.addEventListener(\"mousedown\", start);\n\t\tel.addEventListener(\"touchstart\", start);\n\t\t// 取消计时器\n\t\tel.addEventListener(\"click\", cancel);\n\t\tel.addEventListener(\"mouseout\", cancel);\n\t\tel.addEventListener(\"touchend\", cancel);\n\t\tel.addEventListener(\"touchcancel\", cancel);\n\t},\n};\n\n/** 长按时触发绑定回调的 Vue 指令。 */\nexport const vLongpress = withInstallDirective(LongpressDirective, \"longpress\");\nexport default vLongpress;\n"],"mappings":";;AAgDA,MAAa,aAAa,qBAAqB,EAxC9C,QAAQ,IAAiB,SAAqE;CAC7F,IAAI,OAAO,QAAQ,UAAU,YAC5B,MAAM,IAAI,UAAU,iBAAiB;CAItC,MAAM,WAAW,MAAqC;EACrD,QAAQ,MAAM,CAAC;CAChB;CAGA,IAAI;CAEJ,MAAM,SAAS,UAAyC;EACvD,IAAI,iBAAiB,cAAc,MAAM,WAAW,GACnD;EAED,eAAe,iBAAiB;GAC/B,QAAQ,KAAK;EACd,GAAG,GAAI;CACR;CAEA,MAAM,eAAqB;EAC1B,IAAI,eAAe,KAAA,GAAW;GAC7B,aAAa,UAAU;GACvB,aAAa,KAAA;EACd;CACD;CAEA,GAAG,iBAAiB,aAAa,KAAK;CACtC,GAAG,iBAAiB,cAAc,KAAK;CAEvC,GAAG,iBAAiB,SAAS,MAAM;CACnC,GAAG,iBAAiB,YAAY,MAAM;CACtC,GAAG,iBAAiB,YAAY,MAAM;CACtC,GAAG,iBAAiB,eAAe,MAAM;AAC1C,EAI8C,GAAoB,WAAW"}