UNPKG

@nanogiants/vue3-longpress

Version:

This package contains a Vue 3 directive which adds the `@longpress` event to an element.

48 lines (47 loc) 1.38 kB
var pointerdownEvent = function(el, binding, e) { var _a; e.preventDefault(); var delay = (_a = binding.value) !== null && _a !== void 0 ? _a : 500; var dir = getDir(binding); dir.timeout = setTimeout(function() { return el.dispatchEvent(new CustomEvent("longpress")); }, delay); }; var pointerupEvent = function(binding, e) { e.preventDefault(); var dir = getDir(binding); if (dir.timeout !== null) { clearTimeout(dir.timeout); } }; var getDir = function(binding) { return binding.dir; }; var vLongpress = { pointerdownEvent: function() { return {}; }, pointerupEvent: function() { return {}; }, timeout: null, mounted: function(el, binding) { var dir = getDir(binding); dir.pointerdownEvent = function(e) { return pointerdownEvent(el, binding, e); }; dir.pointerupEvent = function(e) { return pointerupEvent(binding, e); }; el.addEventListener("pointerdown", dir.pointerdownEvent); el.addEventListener("pointerup", dir.pointerupEvent); el.addEventListener("pointermove", dir.pointerupEvent); }, beforeUnmount: function(el, binding) { var dir = getDir(binding); el.removeEventListener("pointerdown", dir.pointerdownEvent); el.removeEventListener("pointerup", dir.pointerupEvent); el.removeEventListener("pointermove", dir.pointerupEvent); } }; export { vLongpress };