export default defineNuxtPlugin(nuxtApp => {
  // 使用nuxtApp做一些操作
  nuxtApp.vueApp.directive('longPress', {
    // 当被绑定的元素插入到DOM中时……
    inserted: function(el, binding, vnode) {
      let pressTimer = null;

      // 监听touchstart事件
      el.addEventListener("touchstart", e => {
        // 阻止默认事件，比如触摸滚动
        e.preventDefault();

        // 清除之前的定时器（如果存在）
        if (pressTimer !== null) {
          clearTimeout(pressTimer);
        }

        // 设置定时器，等待一段时间后执行长按逻辑
        pressTimer = setTimeout(() => {
          // 调用传入的函数，并传入事件对象
          if (typeof binding.value === "function") {
            // 判定为长按
            binding.value(true, e);
          }
        }, 500); // 假设长按时间为500毫秒
      });

      // 监听touchend和touchcancel事件来取消定时器
      el.addEventListener("touchend", e => {
        // 取消长按
        binding.value(false, e);
        clearTimeout(pressTimer);
        pressTimer = null;
      });

      el.addEventListener("touchcancel", e => {
        clearTimeout(pressTimer);
        pressTimer = null;
      });
    },
    // 当绑定元素的父组件被卸载时，解绑事件
    unbind: function(el) {
      el.removeEventListener("touchstart");
      el.removeEventListener("touchend");
      el.removeEventListener("touchcancel");
    }
  })
})
