Skip to content

Commit 291cbf3

Browse files
author
Rod Lewis
committed
don't run after prefetch
1 parent 581dd23 commit 291cbf3

File tree

5 files changed

+27
-16
lines changed

5 files changed

+27
-16
lines changed

dist/lib/hooks/useEventListener.d.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
interface UseEventListenerOptions {
22
eventName: string;
33
handler: (event: any) => void;
4-
element?: typeof globalThis | Element | null;
54
options?: Record<string, any>;
65
}
7-
declare const useEventListener: ({ eventName, handler, element, options }: UseEventListenerOptions) => void;
6+
declare const useEventListener: ({ eventName, handler, options }: UseEventListenerOptions) => ((() => void) | undefined)[];
87
export default useEventListener;

dist/queryPlus.es.js

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,12 @@ function usePreFetch(prefetch) {
8585
const useEventListener = ({
8686
eventName,
8787
handler,
88-
element = window.document.body,
8988
options = {}
9089
}) => {
9190
const savedHandler = useRef();
91+
const removeHanlder = useRef();
9292
const { capture, passive, once } = options;
93+
const element = window.document.body;
9394
useEffect(() => {
9495
savedHandler.current = handler;
9596
}, [handler]);
@@ -101,16 +102,18 @@ const useEventListener = ({
101102
const eventListener = (event) => savedHandler.current && savedHandler.current(event);
102103
const opts = { capture, passive, once };
103104
element.addEventListener(eventName, eventListener, opts);
104-
return () => {
105-
element.removeEventListener(eventName, eventListener, opts);
106-
};
105+
const remove = () => element.removeEventListener(eventName, eventListener, opts);
106+
removeHanlder.current = remove;
107+
return remove;
107108
}, [eventName, element, capture, passive, once]);
109+
return [removeHanlder.current];
108110
};
109111
function useIntent({ expandTarget = 0, targetRef, prefetch, timeToExcecute = 1e3 }) {
110112
const [prefetchConfig, setprefetchConfig] = useState();
113+
const [once, setOnce] = useState(false);
111114
const timer = useRef();
112115
usePreFetch(prefetchConfig);
113-
useEventListener({
116+
const [remove] = useEventListener({
114117
eventName: "mousemove",
115118
handler: ({ clientX, clientY }) => {
116119
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
@@ -119,9 +122,12 @@ function useIntent({ expandTarget = 0, targetRef, prefetch, timeToExcecute = 1e3
119122
let top = ((_h = (_g = targetRef.current) == null ? void 0 : _g.offsetTop) != null ? _h : 0) - expandTarget;
120123
let bottom = ((_j = (_i = targetRef.current) == null ? void 0 : _i.offsetTop) != null ? _j : 0) + ((_l = (_k = targetRef.current) == null ? void 0 : _k.offsetHeight) != null ? _l : 0) + expandTarget;
121124
if (clientX > left && clientX < right && clientY > top && clientY < bottom) {
125+
console.info("in target area");
122126
if (!timer.current) {
123127
timer.current = setTimeout(() => {
124128
setprefetchConfig(prefetch);
129+
setOnce(true);
130+
remove && remove();
125131
}, timeToExcecute);
126132
}
127133
} else {
@@ -131,7 +137,7 @@ function useIntent({ expandTarget = 0, targetRef, prefetch, timeToExcecute = 1e3
131137
}
132138
}
133139
},
134-
options: { passive: true }
140+
options: { passive: true, once }
135141
});
136142
useEffect(() => () => {
137143
clearTimeout(timer.current);

dist/queryPlus.umd.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)