jh-vue-hooks
Version:
金合Vue Hooks 事件监听hook
2 lines (1 loc) • 1.72 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue"),require("@vueuse/core")):"function"==typeof define&&define.amd?define(["exports","vue","@vueuse/core"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["jh-vk-eventlisteneron"]={},e.vue,e.core)}(this,(function(e,t,n){"use strict";function o(e){const o=t.ref(!1);let u;function r(){o.value=!1,u&&window.clearTimeout(u)}function i(){r(),u=setTimeout((()=>{o.value=!0}),e)}return i(),n.tryOnUnmounted(r),{readyRef:o,stop:r,start:i}}Object.defineProperty(e,"useDebounceFn",{enumerable:!0,get:function(){return n.useDebounceFn}}),Object.defineProperty(e,"useThrottleFn",{enumerable:!0,get:function(){return n.useThrottleFn}}),e.useEventListener=function({el:e=window,name:o,listener:u,options:r,autoRemove:i=!0,isDebounce:s=!0,wait:f=80}){let c=()=>{};const d=t.ref(!1);if(e){const a=t.ref(e),l=s?n.useDebounceFn(u,f):n.useThrottleFn(u,f),v=f?l:u,m=e=>{d.value=!0,e.removeEventListener(o,v,r)},p=e=>e.addEventListener(o,v,r),w=t.watch(a,((e,n,o)=>{e&&(!t.unref(d)&&p(e),o((()=>{i&&m(e)})))}),{immediate:!0});c=()=>{m(a.value),w()}}return{removeEvent:c}},e.useTimeoutFn=function(e,n,u=!1){if("function"!=typeof e)throw new Error("handle is not Function!");const{readyRef:r,stop:i,start:s}=o(n);return u?e():t.watch(r,(t=>{t&&e()}),{immediate:!1}),{readyRef:r,stop:i,start:s}},e.useTimeoutRef=o,e.useWindowResize=function(e,t=150,o){let u=()=>{e()};const r=n.useDebounceFn(u,t);u=r;const i=()=>{o&&o.immediate&&u(),window.addEventListener("resize",u)},s=()=>{window.removeEventListener("resize",u)};return n.tryOnMounted((()=>{i()})),n.tryOnUnmounted((()=>{s()})),[i,s]},Object.defineProperty(e,"__esModule",{value:!0})}));