@cleartrip/ct-design-intersection-observer 5.19.0-SNAPSHOT-rn-final-elite-v5.0 → 5.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/IntersectionObserver.d.ts.map +1 -1
- package/dist/ct-design-intersection-observer.browser.cjs.js +1 -1
- package/dist/ct-design-intersection-observer.browser.cjs.js.map +1 -1
- package/dist/ct-design-intersection-observer.browser.esm.js +1 -1
- package/dist/ct-design-intersection-observer.browser.esm.js.map +1 -1
- package/dist/ct-design-intersection-observer.cjs.js +13 -4
- package/dist/ct-design-intersection-observer.cjs.js.map +1 -1
- package/dist/ct-design-intersection-observer.esm.js +13 -4
- package/dist/ct-design-intersection-observer.esm.js.map +1 -1
- package/dist/ct-design-intersection-observer.umd.js +13 -4
- package/dist/ct-design-intersection-observer.umd.js.map +1 -1
- package/package.json +8 -8
- package/src/IntersectionObserver.tsx +17 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntersectionObserver.d.ts","sourceRoot":"","sources":["../packages/components/InterSectionObserver/src/IntersectionObserver.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAE9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,QAAQ,CAAC;AAEnD,QAAA,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,
|
|
1
|
+
{"version":3,"file":"IntersectionObserver.d.ts","sourceRoot":"","sources":["../packages/components/InterSectionObserver/src/IntersectionObserver.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAE9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,QAAQ,CAAC;AAEnD,QAAA,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CA8FhE,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("react/jsx-runtime"),r=require("react"),t=require("@cleartrip/ct-design-scroll-container"),n=require("@cleartrip/ct-design-list"),u=require("@cleartrip/ct-design-common-utils");exports.IntersectionObserver=({children:t,onIntersection:n,onTimedObservationComplete:u,threshold:
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),r=require("react"),t=require("@cleartrip/ct-design-scroll-container"),n=require("@cleartrip/ct-design-list"),u=require("@cleartrip/ct-design-common-utils");exports.IntersectionObserver=({children:t,onIntersection:n,onTimedObservationComplete:u,threshold:c=[.01,.5],timedThreshold:s=1e3,wrapped:l,triggerOnce:i=!1})=>{const o=r.useRef(!1),a=r.useRef(!1),d=r.useRef(null),m=r.useRef(null),f=r.useCallback(e=>{d.current&&e.unobserve(d.current)},[d]),v=r.useCallback((e,r)=>{const t=e[0];if(null==t?void 0:t.isIntersecting){a.current||(n(),a.current=!0);const{intersectionRatio:e}=t;e>=.5?(m.current&&clearTimeout(m.current),m.current=setTimeout(()=>{o.current||(o.current=!0,null==u||u(),i&&f(r))},s)):m.current&&clearTimeout(m.current)}else m.current&&clearTimeout(m.current),i||(a.current=!1,o.current=!1)},[n,u,s,i,f]);return r.useEffect(()=>{const e=new IntersectionObserver(v,{threshold:c});return d.current&&e.observe(d.current),()=>{m.current&&clearTimeout(m.current),f(e)}},[v,c,f]),l?e.jsx("div",{ref:d,children:t}):e.jsxs(e.Fragment,{children:[e.jsx("div",{ref:d}),t]})},exports.useInView=({onChange:e,onIntersectionComplete:c,onTimedObservationComplete:s,observeOnScroll:l=!1,onUnmount:i})=>{const o=r.useRef(null),a=r.useRef(0),d=r.useRef(!1),m=r.useRef({start:0,end:0}),f=r.useRef(!1),{listId:v}=n.useListItem(),b=r.useCallback((r,t)=>{if(l||!t){if(r){const t=null==r?void 0:r.has(v);return t&&(null==s||s()),t&&0===a.current?(a.current=1,void(null==e||e(!0))):t||1!==a.current?void 0:(a.current=0,void(null==c||c()))}u.promiseHandler.add(()=>new Promise(e=>{o.current||e()}),o.current)}},[v,l,e,c,s]),h=r.useCallback(()=>({observe:b,layout:{X:0,Y:0}}),[b]);t.useAddObservableChild(h);const p=r.useCallback(()=>{null==i||i(),u.promiseHandler.clear(),a.current=0,d.current=!1,m.current.end=0,m.current.start=0,f.current=!1},[]);return r.useEffect(()=>(setTimeout(()=>{b()},400),()=>{p()}),[p]),o};
|
|
2
2
|
//# sourceMappingURL=ct-design-intersection-observer.browser.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ct-design-intersection-observer.browser.cjs.js","sources":["../packages/components/InterSectionObserver/src/IntersectionObserver.tsx","../packages/components/InterSectionObserver/src/useinView.ts"],"sourcesContent":[null,null],"names":["children","onIntersection","onTimedObservationComplete","threshold","wrapped","viewed","useRef","intersected","intersectionRef","timeoutInstance","unobserve","useCallback","observer","current","handleIO","entries","entry","isIntersecting","intersectionRatio","clearTimeout","setTimeout","useEffect","IntersectionObserver","observe","_jsx","ref","_jsxs","jsxs","_Fragment","Fragment","onChange","onIntersectionComplete","observeOnScroll","onUnmount","visibleRef","timeoutVisibleRef","timeoutVisibleStartRef","start","end","triggerOnceValue","listId","useListItem","observerMethod","visibleItems","isScrolling","visibleItem","has","promiseHandler","add","Promise","resolve","addObservable","layout","X","Y","useAddObservableChild","handleUnmount","clear"],"mappings":"yOAIqE,EACnEA,WACAC,iBACAC,6BACAC,YAAY,CAAC,IAAM,IACnBC,
|
|
1
|
+
{"version":3,"file":"ct-design-intersection-observer.browser.cjs.js","sources":["../packages/components/InterSectionObserver/src/IntersectionObserver.tsx","../packages/components/InterSectionObserver/src/useinView.ts"],"sourcesContent":[null,null],"names":["children","onIntersection","onTimedObservationComplete","threshold","timedThreshold","wrapped","triggerOnce","viewed","useRef","intersected","intersectionRef","timeoutInstance","unobserve","useCallback","observer","current","handleIO","entries","entry","isIntersecting","intersectionRatio","clearTimeout","setTimeout","useEffect","IntersectionObserver","observe","_jsx","ref","_jsxs","jsxs","_Fragment","Fragment","onChange","onIntersectionComplete","observeOnScroll","onUnmount","visibleRef","timeoutVisibleRef","timeoutVisibleStartRef","start","end","triggerOnceValue","listId","useListItem","observerMethod","visibleItems","isScrolling","visibleItem","has","promiseHandler","add","Promise","resolve","addObservable","layout","X","Y","useAddObservableChild","handleUnmount","clear"],"mappings":"yOAIqE,EACnEA,WACAC,iBACAC,6BACAC,YAAY,CAAC,IAAM,IACnBC,iBAAiB,IACjBC,UACAC,eAAc,MAEd,MAAMC,EAASC,UAAgB,GACzBC,EAAcD,UAAgB,GAC9BE,EAAkBF,SAA8B,MAChDG,EAAkBH,SAA8B,MAEhDI,EAAYC,cACfC,IACKJ,EAAgBK,SAClBD,EAASF,UAAUF,EAAgBK,UAGvC,CAACL,IAGGM,EAAWH,EAAAA,YACf,CAACI,EAAsCH,KACrC,MAAMI,EAAQD,EAAQ,GAEtB,GAAIC,aAAK,EAALA,EAAOC,eAAgB,CACpBV,EAAYM,UACfd,IACAQ,EAAYM,SAAU,GAGxB,MAAMK,kBAAEA,GAAsBF,EAE1BE,GAAqB,IACnBT,EAAgBI,SAClBM,aAAaV,EAAgBI,SAE/BJ,EAAgBI,QAAUO,WAAW,KAC9Bf,EAAOQ,UACVR,EAAOQ,SAAU,EACjBb,SAAAA,IAGII,GACFM,EAAUE,KAGbV,IACMO,EAAgBI,SACzBM,aAAaV,EAAgBI,QAEhC,MACKJ,EAAgBI,SAClBM,aAAaV,EAAgBI,SAG1BT,IACHG,EAAYM,SAAU,EACtBR,EAAOQ,SAAU,IAIvB,CAACd,EAAgBC,EAA4BE,EAAgBE,EAAaM,IAoB5E,OAjBAW,EAAAA,UAAU,KACR,MAAMT,EAAW,IAAIU,qBAAqBR,EAAU,CAClDb,cAOF,OAJIO,EAAgBK,SAClBD,EAASW,QAAQf,EAAgBK,SAG5B,KACDJ,EAAgBI,SAClBM,aAAaV,EAAgBI,SAE/BH,EAAUE,KAEX,CAACE,EAAUb,EAAWS,IAErBP,EACKqB,EAAAA,WAAKC,IAAKjB,EAAkBV,SAAAA,IAInC4B,EACEC,KAAAC,EAAAC,SAAA,CAAA/B,SAAA,CAAA0B,EAAAA,IAAA,MAAA,CAAKC,IAAKjB,IACTV,wBCvFW,EAChBgC,WACAC,yBACA/B,6BACAgC,mBAAkB,EAClBC,gBAEA,MAAMR,EAAMnB,SAAuB,MAC7B4B,EAAa5B,SAAO,GACpB6B,EAAoB7B,UAAO,GAC3B8B,EAAyB9B,EAAAA,OAAO,CAAE+B,MAAO,EAAGC,IAAK,IACjDC,EAAmBjC,UAAO,IAC1BkC,OAAEA,GAAWC,EAAAA,cAEbC,EAAiB/B,EAAAA,YACrB,CAACgC,EAA4BC,KAC3B,GAAKZ,IAAmBY,EAAxB,CAGA,GAAID,EAAc,CAChB,MAAME,EAAcF,aAAY,EAAZA,EAAcG,IAAIN,GAMtC,OAJIK,IACF7C,SAAAA,KAGE6C,GAAsC,IAAvBX,EAAWrB,SAC5BqB,EAAWrB,QAAU,OACrBiB,SAAAA,GAAW,KAEDe,GAAsC,IAAvBX,EAAWrB,aAKtC,GAJEqB,EAAWrB,QAAU,OACrBkB,SAAAA,KAIH,CAEDgB,EAAcA,eAACC,IAAI,IACV,IAAIC,QAAeC,IACnBzB,EAAIZ,SACPqC,MAIHzB,EAAIZ,QA3BN,GA6BH,CAAC2B,EAAQR,EAAiBF,EAAUC,EAAwB/B,IAGxDmD,EAAgBxC,EAAAA,YAAY,KACzB,CAAEY,QAASmB,EAAgBU,OAAQ,CAAEC,EAAG,EAAGC,EAAG,KACpD,CAACZ,IAEJa,EAAqBA,sBAACJ,GAEtB,MAAMK,EAAgB7C,EAAAA,YAAY,KAChCsB,SAAAA,IACAc,EAAcA,eAACU,QACfvB,EAAWrB,QAAU,EACrBsB,EAAkBtB,SAAU,EAC5BuB,EAAuBvB,QAAQyB,IAAM,EACrCF,EAAuBvB,QAAQwB,MAAQ,EACvCE,EAAiB1B,SAAU,GAE1B,IAYH,OAVAQ,EAAAA,UAAU,KACRD,WAAW,KACTsB,KACC,KACI,KACLc,MAGD,CAACA,IAEG/B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as r,jsxs as e,Fragment as t}from"react/jsx-runtime";import{useRef as n,useCallback as
|
|
1
|
+
import{jsx as r,jsxs as e,Fragment as t}from"react/jsx-runtime";import{useRef as n,useCallback as c,useEffect as o}from"react";import{useAddObservableChild as u}from"@cleartrip/ct-design-scroll-container";import{useListItem as i}from"@cleartrip/ct-design-list";import{promiseHandler as l}from"@cleartrip/ct-design-common-utils";const s=({children:u,onIntersection:i,onTimedObservationComplete:l,threshold:s=[.01,.5],timedThreshold:m=1e3,wrapped:d,triggerOnce:a=!1})=>{const v=n(!1),p=n(!1),h=n(null),f=n(null),T=c(r=>{h.current&&r.unobserve(h.current)},[h]),b=c((r,e)=>{const t=r[0];if(null==t?void 0:t.isIntersecting){p.current||(i(),p.current=!0);const{intersectionRatio:r}=t;r>=.5?(f.current&&clearTimeout(f.current),f.current=setTimeout(()=>{v.current||(v.current=!0,null==l||l(),a&&T(e))},m)):f.current&&clearTimeout(f.current)}else f.current&&clearTimeout(f.current),a||(p.current=!1,v.current=!1)},[i,l,m,a,T]);return o(()=>{const r=new IntersectionObserver(b,{threshold:s});return h.current&&r.observe(h.current),()=>{f.current&&clearTimeout(f.current),T(r)}},[b,s,T]),d?r("div",{ref:h,children:u}):e(t,{children:[r("div",{ref:h}),u]})},m=({onChange:r,onIntersectionComplete:e,onTimedObservationComplete:t,observeOnScroll:s=!1,onUnmount:m})=>{const d=n(null),a=n(0),v=n(!1),p=n({start:0,end:0}),h=n(!1),{listId:f}=i(),T=c((n,c)=>{if(s||!c){if(n){const c=null==n?void 0:n.has(f);return c&&(null==t||t()),c&&0===a.current?(a.current=1,void(null==r||r(!0))):c||1!==a.current?void 0:(a.current=0,void(null==e||e()))}l.add(()=>new Promise(r=>{d.current||r()}),d.current)}},[f,s,r,e,t]),b=c(()=>({observe:T,layout:{X:0,Y:0}}),[T]);u(b);const g=c(()=>{null==m||m(),l.clear(),a.current=0,v.current=!1,p.current.end=0,p.current.start=0,h.current=!1},[]);return o(()=>(setTimeout(()=>{T()},400),()=>{g()}),[g]),d};export{s as IntersectionObserver,m as useInView};
|
|
2
2
|
//# sourceMappingURL=ct-design-intersection-observer.browser.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ct-design-intersection-observer.browser.esm.js","sources":["../packages/components/InterSectionObserver/src/IntersectionObserver.tsx","../packages/components/InterSectionObserver/src/useinView.ts"],"sourcesContent":[null,null],"names":["WebIntersectionObserver","children","onIntersection","onTimedObservationComplete","threshold","wrapped","viewed","useRef","intersected","intersectionRef","timeoutInstance","unobserve","useCallback","observer","current","handleIO","entries","entry","isIntersecting","intersectionRatio","clearTimeout","setTimeout","useEffect","IntersectionObserver","observe","_jsx","ref","_jsxs","_Fragment","useInView","onChange","onIntersectionComplete","observeOnScroll","onUnmount","visibleRef","timeoutVisibleRef","timeoutVisibleStartRef","start","end","triggerOnceValue","listId","useListItem","observerMethod","visibleItems","isScrolling","visibleItem","has","promiseHandler","add","Promise","resolve","addObservable","layout","X","Y","useAddObservableChild","handleUnmount","clear"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ct-design-intersection-observer.browser.esm.js","sources":["../packages/components/InterSectionObserver/src/IntersectionObserver.tsx","../packages/components/InterSectionObserver/src/useinView.ts"],"sourcesContent":[null,null],"names":["WebIntersectionObserver","children","onIntersection","onTimedObservationComplete","threshold","timedThreshold","wrapped","triggerOnce","viewed","useRef","intersected","intersectionRef","timeoutInstance","unobserve","useCallback","observer","current","handleIO","entries","entry","isIntersecting","intersectionRatio","clearTimeout","setTimeout","useEffect","IntersectionObserver","observe","_jsx","ref","_jsxs","_Fragment","useInView","onChange","onIntersectionComplete","observeOnScroll","onUnmount","visibleRef","timeoutVisibleRef","timeoutVisibleStartRef","start","end","triggerOnceValue","listId","useListItem","observerMethod","visibleItems","isScrolling","visibleItem","has","promiseHandler","add","Promise","resolve","addObservable","layout","X","Y","useAddObservableChild","handleUnmount","clear"],"mappings":"wUAIA,MAAMA,EAA+D,EACnEC,WACAC,iBACAC,6BACAC,YAAY,CAAC,IAAM,IACnBC,iBAAiB,IACjBC,UACAC,eAAc,MAEd,MAAMC,EAASC,GAAgB,GACzBC,EAAcD,GAAgB,GAC9BE,EAAkBF,EAA8B,MAChDG,EAAkBH,EAA8B,MAEhDI,EAAYC,EACfC,IACKJ,EAAgBK,SAClBD,EAASF,UAAUF,EAAgBK,UAGvC,CAACL,IAGGM,EAAWH,EACf,CAACI,EAAsCH,KACrC,MAAMI,EAAQD,EAAQ,GAEtB,GAAIC,aAAK,EAALA,EAAOC,eAAgB,CACpBV,EAAYM,UACfd,IACAQ,EAAYM,SAAU,GAGxB,MAAMK,kBAAEA,GAAsBF,EAE1BE,GAAqB,IACnBT,EAAgBI,SAClBM,aAAaV,EAAgBI,SAE/BJ,EAAgBI,QAAUO,WAAW,KAC9Bf,EAAOQ,UACVR,EAAOQ,SAAU,EACjBb,SAAAA,IAGII,GACFM,EAAUE,KAGbV,IACMO,EAAgBI,SACzBM,aAAaV,EAAgBI,QAEhC,MACKJ,EAAgBI,SAClBM,aAAaV,EAAgBI,SAG1BT,IACHG,EAAYM,SAAU,EACtBR,EAAOQ,SAAU,IAIvB,CAACd,EAAgBC,EAA4BE,EAAgBE,EAAaM,IAoB5E,OAjBAW,EAAU,KACR,MAAMT,EAAW,IAAIU,qBAAqBR,EAAU,CAClDb,cAOF,OAJIO,EAAgBK,SAClBD,EAASW,QAAQf,EAAgBK,SAG5B,KACDJ,EAAgBI,SAClBM,aAAaV,EAAgBI,SAE/BH,EAAUE,KAEX,CAACE,EAAUb,EAAWS,IAErBP,EACKqB,SAAKC,IAAKjB,EAAkBV,SAAAA,IAInC4B,EACEC,EAAA,CAAA7B,SAAA,CAAA0B,EAAA,MAAA,CAAKC,IAAKjB,IACTV,MCvFD8B,EAAY,EAChBC,WACAC,yBACA9B,6BACA+B,mBAAkB,EAClBC,gBAEA,MAAMP,EAAMnB,EAAuB,MAC7B2B,EAAa3B,EAAO,GACpB4B,EAAoB5B,GAAO,GAC3B6B,EAAyB7B,EAAO,CAAE8B,MAAO,EAAGC,IAAK,IACjDC,EAAmBhC,GAAO,IAC1BiC,OAAEA,GAAWC,IAEbC,EAAiB9B,EACrB,CAAC+B,EAA4BC,KAC3B,GAAKZ,IAAmBY,EAAxB,CAGA,GAAID,EAAc,CAChB,MAAME,EAAcF,aAAY,EAAZA,EAAcG,IAAIN,GAMtC,OAJIK,IACF5C,SAAAA,KAGE4C,GAAsC,IAAvBX,EAAWpB,SAC5BoB,EAAWpB,QAAU,OACrBgB,SAAAA,GAAW,KAEDe,GAAsC,IAAvBX,EAAWpB,aAKtC,GAJEoB,EAAWpB,QAAU,OACrBiB,SAAAA,KAIH,CAEDgB,EAAeC,IAAI,IACV,IAAIC,QAAeC,IACnBxB,EAAIZ,SACPoC,MAIHxB,EAAIZ,QA3BN,GA6BH,CAAC0B,EAAQR,EAAiBF,EAAUC,EAAwB9B,IAGxDkD,EAAgBvC,EAAY,KACzB,CAAEY,QAASkB,EAAgBU,OAAQ,CAAEC,EAAG,EAAGC,EAAG,KACpD,CAACZ,IAEJa,EAAsBJ,GAEtB,MAAMK,EAAgB5C,EAAY,KAChCqB,SAAAA,IACAc,EAAeU,QACfvB,EAAWpB,QAAU,EACrBqB,EAAkBrB,SAAU,EAC5BsB,EAAuBtB,QAAQwB,IAAM,EACrCF,EAAuBtB,QAAQuB,MAAQ,EACvCE,EAAiBzB,SAAU,GAE1B,IAYH,OAVAQ,EAAU,KACRD,WAAW,KACTqB,KACC,KACI,KACLc,MAGD,CAACA,IAEG9B"}
|
|
@@ -6,7 +6,7 @@ var ctDesignScrollContainer = require('@cleartrip/ct-design-scroll-container');
|
|
|
6
6
|
var ctDesignList = require('@cleartrip/ct-design-list');
|
|
7
7
|
var ctDesignCommonUtils = require('@cleartrip/ct-design-common-utils');
|
|
8
8
|
|
|
9
|
-
const WebIntersectionObserver = ({ children, onIntersection, onTimedObservationComplete, threshold = [0.01, 0.5], wrapped, }) => {
|
|
9
|
+
const WebIntersectionObserver = ({ children, onIntersection, onTimedObservationComplete, threshold = [0.01, 0.5], timedThreshold = 1000, wrapped, triggerOnce = false, }) => {
|
|
10
10
|
const viewed = react.useRef(false);
|
|
11
11
|
const intersected = react.useRef(false);
|
|
12
12
|
const intersectionRef = react.useRef(null);
|
|
@@ -30,11 +30,13 @@ const WebIntersectionObserver = ({ children, onIntersection, onTimedObservationC
|
|
|
30
30
|
}
|
|
31
31
|
timeoutInstance.current = setTimeout(() => {
|
|
32
32
|
if (!viewed.current) {
|
|
33
|
-
unobserve(observer);
|
|
34
33
|
viewed.current = true;
|
|
35
34
|
onTimedObservationComplete === null || onTimedObservationComplete === void 0 ? void 0 : onTimedObservationComplete();
|
|
35
|
+
if (triggerOnce) {
|
|
36
|
+
unobserve(observer);
|
|
37
|
+
}
|
|
36
38
|
}
|
|
37
|
-
},
|
|
39
|
+
}, timedThreshold);
|
|
38
40
|
}
|
|
39
41
|
else if (timeoutInstance.current) {
|
|
40
42
|
clearTimeout(timeoutInstance.current);
|
|
@@ -44,8 +46,12 @@ const WebIntersectionObserver = ({ children, onIntersection, onTimedObservationC
|
|
|
44
46
|
if (timeoutInstance.current) {
|
|
45
47
|
clearTimeout(timeoutInstance.current);
|
|
46
48
|
}
|
|
49
|
+
if (!triggerOnce) {
|
|
50
|
+
intersected.current = false;
|
|
51
|
+
viewed.current = false;
|
|
52
|
+
}
|
|
47
53
|
}
|
|
48
|
-
}, [onIntersection, onTimedObservationComplete, unobserve]);
|
|
54
|
+
}, [onIntersection, onTimedObservationComplete, timedThreshold, triggerOnce, unobserve]);
|
|
49
55
|
react.useEffect(() => {
|
|
50
56
|
const observer = new IntersectionObserver(handleIO, {
|
|
51
57
|
threshold,
|
|
@@ -54,6 +60,9 @@ const WebIntersectionObserver = ({ children, onIntersection, onTimedObservationC
|
|
|
54
60
|
observer.observe(intersectionRef.current);
|
|
55
61
|
}
|
|
56
62
|
return () => {
|
|
63
|
+
if (timeoutInstance.current) {
|
|
64
|
+
clearTimeout(timeoutInstance.current);
|
|
65
|
+
}
|
|
57
66
|
unobserve(observer);
|
|
58
67
|
};
|
|
59
68
|
}, [handleIO, threshold, unobserve]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ct-design-intersection-observer.cjs.js","sources":["../packages/components/InterSectionObserver/src/IntersectionObserver.tsx","../packages/components/InterSectionObserver/src/useinView.ts"],"sourcesContent":[null,null],"names":["useRef","useCallback","useEffect","_jsx","_jsxs","_Fragment","useListItem","promiseHandler","useAddObservableChild"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"ct-design-intersection-observer.cjs.js","sources":["../packages/components/InterSectionObserver/src/IntersectionObserver.tsx","../packages/components/InterSectionObserver/src/useinView.ts"],"sourcesContent":[null,null],"names":["useRef","useCallback","useEffect","_jsx","_jsxs","_Fragment","useListItem","promiseHandler","useAddObservableChild"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { useAddObservableChild } from '@cleartrip/ct-design-scroll-container';
|
|
|
4
4
|
import { useListItem } from '@cleartrip/ct-design-list';
|
|
5
5
|
import { promiseHandler } from '@cleartrip/ct-design-common-utils';
|
|
6
6
|
|
|
7
|
-
const WebIntersectionObserver = ({ children, onIntersection, onTimedObservationComplete, threshold = [0.01, 0.5], wrapped, }) => {
|
|
7
|
+
const WebIntersectionObserver = ({ children, onIntersection, onTimedObservationComplete, threshold = [0.01, 0.5], timedThreshold = 1000, wrapped, triggerOnce = false, }) => {
|
|
8
8
|
const viewed = useRef(false);
|
|
9
9
|
const intersected = useRef(false);
|
|
10
10
|
const intersectionRef = useRef(null);
|
|
@@ -28,11 +28,13 @@ const WebIntersectionObserver = ({ children, onIntersection, onTimedObservationC
|
|
|
28
28
|
}
|
|
29
29
|
timeoutInstance.current = setTimeout(() => {
|
|
30
30
|
if (!viewed.current) {
|
|
31
|
-
unobserve(observer);
|
|
32
31
|
viewed.current = true;
|
|
33
32
|
onTimedObservationComplete === null || onTimedObservationComplete === void 0 ? void 0 : onTimedObservationComplete();
|
|
33
|
+
if (triggerOnce) {
|
|
34
|
+
unobserve(observer);
|
|
35
|
+
}
|
|
34
36
|
}
|
|
35
|
-
},
|
|
37
|
+
}, timedThreshold);
|
|
36
38
|
}
|
|
37
39
|
else if (timeoutInstance.current) {
|
|
38
40
|
clearTimeout(timeoutInstance.current);
|
|
@@ -42,8 +44,12 @@ const WebIntersectionObserver = ({ children, onIntersection, onTimedObservationC
|
|
|
42
44
|
if (timeoutInstance.current) {
|
|
43
45
|
clearTimeout(timeoutInstance.current);
|
|
44
46
|
}
|
|
47
|
+
if (!triggerOnce) {
|
|
48
|
+
intersected.current = false;
|
|
49
|
+
viewed.current = false;
|
|
50
|
+
}
|
|
45
51
|
}
|
|
46
|
-
}, [onIntersection, onTimedObservationComplete, unobserve]);
|
|
52
|
+
}, [onIntersection, onTimedObservationComplete, timedThreshold, triggerOnce, unobserve]);
|
|
47
53
|
useEffect(() => {
|
|
48
54
|
const observer = new IntersectionObserver(handleIO, {
|
|
49
55
|
threshold,
|
|
@@ -52,6 +58,9 @@ const WebIntersectionObserver = ({ children, onIntersection, onTimedObservationC
|
|
|
52
58
|
observer.observe(intersectionRef.current);
|
|
53
59
|
}
|
|
54
60
|
return () => {
|
|
61
|
+
if (timeoutInstance.current) {
|
|
62
|
+
clearTimeout(timeoutInstance.current);
|
|
63
|
+
}
|
|
55
64
|
unobserve(observer);
|
|
56
65
|
};
|
|
57
66
|
}, [handleIO, threshold, unobserve]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ct-design-intersection-observer.esm.js","sources":["../packages/components/InterSectionObserver/src/IntersectionObserver.tsx","../packages/components/InterSectionObserver/src/useinView.ts"],"sourcesContent":[null,null],"names":["_jsx","_jsxs","_Fragment"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"ct-design-intersection-observer.esm.js","sources":["../packages/components/InterSectionObserver/src/IntersectionObserver.tsx","../packages/components/InterSectionObserver/src/useinView.ts"],"sourcesContent":[null,null],"names":["_jsx","_jsxs","_Fragment"],"mappings":";;;;;;AAIA,MAAM,uBAAuB,GAAwC,CAAC,EACpE,QAAQ,EACR,cAAc,EACd,0BAA0B,EAC1B,SAAS,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EACvB,cAAc,GAAG,IAAI,EACrB,OAAO,EACP,WAAW,GAAG,KAAK,GACpB,KAAI;AACH,IAAA,MAAM,MAAM,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AACtC,IAAA,MAAM,WAAW,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AAC3C,IAAA,MAAM,eAAe,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;AAC5D,IAAA,MAAM,eAAe,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;AAE5D,IAAA,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,QAA8B,KAAI;AACjC,QAAA,IAAI,eAAe,CAAC,OAAO,EAAE;AAC3B,YAAA,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;SAC7C;AACH,KAAC,EACD,CAAC,eAAe,CAAC,CAClB,CAAC;IAEF,MAAM,QAAQ,GAAG,WAAW,CAC1B,CAAC,OAAoC,EAAE,QAA8B,KAAI;AACvE,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAEzB,IAAI,KAAK,aAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,cAAc,EAAE;AACzB,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AACxB,gBAAA,cAAc,EAAE,CAAC;AACjB,gBAAA,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;aAC5B;AAED,YAAA,MAAM,EAAE,iBAAiB,EAAE,GAAG,KAAK,CAAC;AAEpC,YAAA,IAAI,iBAAiB,IAAI,GAAG,EAAE;AAC5B,gBAAA,IAAI,eAAe,CAAC,OAAO,EAAE;AAC3B,oBAAA,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;iBACvC;AACD,gBAAA,eAAe,CAAC,OAAO,GAAG,UAAU,CAAC,MAAK;AACxC,oBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACnB,wBAAA,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,wBAAA,0BAA0B,KAA1B,IAAA,IAAA,0BAA0B,KAA1B,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,0BAA0B,EAAI,CAAC;wBAG/B,IAAI,WAAW,EAAE;4BACf,SAAS,CAAC,QAAQ,CAAC,CAAC;yBACrB;qBACF;iBACF,EAAE,cAAc,CAAC,CAAC;aACpB;AAAM,iBAAA,IAAI,eAAe,CAAC,OAAO,EAAE;AAClC,gBAAA,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;aACvC;SACF;aAAM;AACL,YAAA,IAAI,eAAe,CAAC,OAAO,EAAE;AAC3B,gBAAA,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;aACvC;YAED,IAAI,CAAC,WAAW,EAAE;AAChB,gBAAA,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;AAC5B,gBAAA,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;aACxB;SACF;AACH,KAAC,EACD,CAAC,cAAc,EAAE,0BAA0B,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,CAAC,CACrF,CAAC;IAEF,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CAAC,QAAQ,EAAE;YAClD,SAAS;AACV,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,eAAe,CAAC,OAAO,EAAE;AAC3B,YAAA,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;SAC3C;AAED,QAAA,OAAO,MAAK;AACV,YAAA,IAAI,eAAe,CAAC,OAAO,EAAE;AAC3B,gBAAA,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;aACvC;YACD,SAAS,CAAC,QAAQ,CAAC,CAAC;AACtB,SAAC,CAAC;KACH,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAErC,IAAI,OAAO,EAAE;AACX,QAAA,OAAOA,aAAK,GAAG,EAAE,eAAe,EAAG,QAAA,EAAA,QAAQ,GAAO,CAAC;KACpD;IAED,QACEC,IACE,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAAAF,GAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,eAAe,EAAA,CAAI,EAC5B,QAAQ,CACR,EAAA,CAAA,EACH;AACJ;;AC1FA,MAAM,SAAS,GAAG,CAAI,EACpB,QAAQ,EACR,sBAAsB,EACtB,0BAA0B,EAC1B,eAAe,GAAG,KAAK,EACvB,SAAS,GACW,KAA2B;AAC/C,IAAA,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;AACzC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACxC,IAAA,MAAM,sBAAsB,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5D,IAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACvC,IAAA,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAEjC,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,YAA0B,EAAE,WAAqB,KAAI;AACpD,QAAA,IAAI,CAAC,eAAe,IAAI,WAAW,EAAE;YACnC,OAAO;SACR;QACD,IAAI,YAAY,EAAE;AAChB,YAAA,MAAM,WAAW,GAAG,YAAY,KAAA,IAAA,IAAZ,YAAY,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZ,YAAY,CAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YAE9C,IAAI,WAAW,EAAE;AACf,gBAAA,0BAA0B,KAA1B,IAAA,IAAA,0BAA0B,KAA1B,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,0BAA0B,EAAI,CAAC;aAChC;YAED,IAAI,WAAW,IAAI,UAAU,CAAC,OAAO,KAAK,CAAC,EAAE;AAC3C,gBAAA,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC;AACvB,gBAAA,QAAQ,aAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAG,IAAI,CAAC,CAAC;gBACjB,OAAO;aACR;iBAAM,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC,OAAO,KAAK,CAAC,EAAE;AACnD,gBAAA,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC;AACvB,gBAAA,sBAAsB,KAAtB,IAAA,IAAA,sBAAsB,KAAtB,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,sBAAsB,EAAI,CAAC;gBAC3B,OAAO;aACR;YACD,OAAO;SACR;AAED,QAAA,cAAc,CAAC,GAAG,CAAC,MAAK;AACtB,YAAA,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,KAAI;AACnC,gBAAA,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;AAChB,oBAAA,OAAO,EAAE,CAAC;oBACV,OAAO;iBACR;AACH,aAAC,CAAC,CAAC;AACL,SAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAClB,KAAC,EACD,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,sBAAsB,EAAE,0BAA0B,CAAC,CACxF,CAAC;AAEF,IAAA,MAAM,aAAa,GAAG,WAAW,CAAC,MAAK;AACrC,QAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AAC7D,KAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,qBAAqB,CAAC,aAAa,CAAC,CAAC;AAErC,IAAA,MAAM,aAAa,GAAG,WAAW,CAAC,MAAK;AACrC,QAAA,SAAS,KAAT,IAAA,IAAA,SAAS,KAAT,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,SAAS,EAAI,CAAC;QACd,cAAc,CAAC,KAAK,EAAE,CAAC;AACvB,QAAA,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC;AACvB,QAAA,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC;AAClC,QAAA,sBAAsB,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;AACvC,QAAA,sBAAsB,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;AACzC,QAAA,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC;KAElC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,MAAK;QACb,UAAU,CAAC,MAAK;AACd,YAAA,cAAc,EAAE,CAAC;SAClB,EAAE,GAAG,CAAC,CAAC;AACR,QAAA,OAAO,MAAK;AACV,YAAA,aAAa,EAAE,CAAC;AAClB,SAAC,CAAC;AAEJ,KAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;AAEpB,IAAA,OAAO,GAA4B,CAAC;AACtC;;;;"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.CTDesignSystemIntersectionObserver = {}, global.jsxRuntime, global.React, global.ctDesignScrollContainer, global.ctDesignList, global.ctDesignCommonUtils));
|
|
5
5
|
})(this, (function (exports, jsxRuntime, react, ctDesignScrollContainer, ctDesignList, ctDesignCommonUtils) { 'use strict';
|
|
6
6
|
|
|
7
|
-
const WebIntersectionObserver = ({ children, onIntersection, onTimedObservationComplete, threshold = [0.01, 0.5], wrapped, }) => {
|
|
7
|
+
const WebIntersectionObserver = ({ children, onIntersection, onTimedObservationComplete, threshold = [0.01, 0.5], timedThreshold = 1000, wrapped, triggerOnce = false, }) => {
|
|
8
8
|
const viewed = react.useRef(false);
|
|
9
9
|
const intersected = react.useRef(false);
|
|
10
10
|
const intersectionRef = react.useRef(null);
|
|
@@ -28,11 +28,13 @@
|
|
|
28
28
|
}
|
|
29
29
|
timeoutInstance.current = setTimeout(() => {
|
|
30
30
|
if (!viewed.current) {
|
|
31
|
-
unobserve(observer);
|
|
32
31
|
viewed.current = true;
|
|
33
32
|
onTimedObservationComplete === null || onTimedObservationComplete === void 0 ? void 0 : onTimedObservationComplete();
|
|
33
|
+
if (triggerOnce) {
|
|
34
|
+
unobserve(observer);
|
|
35
|
+
}
|
|
34
36
|
}
|
|
35
|
-
},
|
|
37
|
+
}, timedThreshold);
|
|
36
38
|
}
|
|
37
39
|
else if (timeoutInstance.current) {
|
|
38
40
|
clearTimeout(timeoutInstance.current);
|
|
@@ -42,8 +44,12 @@
|
|
|
42
44
|
if (timeoutInstance.current) {
|
|
43
45
|
clearTimeout(timeoutInstance.current);
|
|
44
46
|
}
|
|
47
|
+
if (!triggerOnce) {
|
|
48
|
+
intersected.current = false;
|
|
49
|
+
viewed.current = false;
|
|
50
|
+
}
|
|
45
51
|
}
|
|
46
|
-
}, [onIntersection, onTimedObservationComplete, unobserve]);
|
|
52
|
+
}, [onIntersection, onTimedObservationComplete, timedThreshold, triggerOnce, unobserve]);
|
|
47
53
|
react.useEffect(() => {
|
|
48
54
|
const observer = new IntersectionObserver(handleIO, {
|
|
49
55
|
threshold,
|
|
@@ -52,6 +58,9 @@
|
|
|
52
58
|
observer.observe(intersectionRef.current);
|
|
53
59
|
}
|
|
54
60
|
return () => {
|
|
61
|
+
if (timeoutInstance.current) {
|
|
62
|
+
clearTimeout(timeoutInstance.current);
|
|
63
|
+
}
|
|
55
64
|
unobserve(observer);
|
|
56
65
|
};
|
|
57
66
|
}, [handleIO, threshold, unobserve]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ct-design-intersection-observer.umd.js","sources":["../packages/components/InterSectionObserver/src/IntersectionObserver.tsx","../packages/components/InterSectionObserver/src/useinView.ts"],"sourcesContent":[null,null],"names":["useRef","useCallback","useEffect","_jsx","_jsxs","_Fragment","useListItem","promiseHandler","useAddObservableChild"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"ct-design-intersection-observer.umd.js","sources":["../packages/components/InterSectionObserver/src/IntersectionObserver.tsx","../packages/components/InterSectionObserver/src/useinView.ts"],"sourcesContent":[null,null],"names":["useRef","useCallback","useEffect","_jsx","_jsxs","_Fragment","useListItem","promiseHandler","useAddObservableChild"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cleartrip/ct-design-intersection-observer",
|
|
3
|
-
"version": "5.19.0
|
|
3
|
+
"version": "5.19.0",
|
|
4
4
|
"description": "Intersection Observer Component",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"main": "./dist/ct-design-intersection-observer.cjs.js",
|
|
@@ -24,15 +24,15 @@
|
|
|
24
24
|
"src"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@cleartrip/ct-design-scroll-container": "5.18.0
|
|
28
|
-
"@cleartrip/ct-design-
|
|
29
|
-
"@cleartrip/ct-design-
|
|
30
|
-
"@cleartrip/ct-design-
|
|
31
|
-
"@cleartrip/ct-design-list": "5.19.0
|
|
32
|
-
"@cleartrip/ct-design-common-utils": "5.
|
|
27
|
+
"@cleartrip/ct-design-scroll-container": "5.18.0",
|
|
28
|
+
"@cleartrip/ct-design-style-manager": "5.18.0",
|
|
29
|
+
"@cleartrip/ct-design-container": "5.19.0",
|
|
30
|
+
"@cleartrip/ct-design-theme": "5.18.0",
|
|
31
|
+
"@cleartrip/ct-design-list": "5.19.0",
|
|
32
|
+
"@cleartrip/ct-design-common-utils": "5.18.0"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@cleartrip/ct-design-types": "5.18.0
|
|
35
|
+
"@cleartrip/ct-design-types": "5.18.0"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
38
38
|
"react": ">=16.8.0",
|
|
@@ -7,7 +7,9 @@ const WebIntersectionObserver: React.FC<IntersectionObserverProps> = ({
|
|
|
7
7
|
onIntersection,
|
|
8
8
|
onTimedObservationComplete,
|
|
9
9
|
threshold = [0.01, 0.5],
|
|
10
|
+
timedThreshold = 1000,
|
|
10
11
|
wrapped,
|
|
12
|
+
triggerOnce = false,
|
|
11
13
|
}) => {
|
|
12
14
|
const viewed = useRef<boolean>(false);
|
|
13
15
|
const intersected = useRef<boolean>(false);
|
|
@@ -41,11 +43,15 @@ const WebIntersectionObserver: React.FC<IntersectionObserverProps> = ({
|
|
|
41
43
|
}
|
|
42
44
|
timeoutInstance.current = setTimeout(() => {
|
|
43
45
|
if (!viewed.current) {
|
|
44
|
-
unobserve(observer);
|
|
45
46
|
viewed.current = true;
|
|
46
47
|
onTimedObservationComplete?.();
|
|
48
|
+
// Only stop observing for one-shot usage; otherwise keep
|
|
49
|
+
// observing so leave/re-enter can re-fire onIntersection.
|
|
50
|
+
if (triggerOnce) {
|
|
51
|
+
unobserve(observer);
|
|
52
|
+
}
|
|
47
53
|
}
|
|
48
|
-
},
|
|
54
|
+
}, timedThreshold);
|
|
49
55
|
} else if (timeoutInstance.current) {
|
|
50
56
|
clearTimeout(timeoutInstance.current);
|
|
51
57
|
}
|
|
@@ -53,9 +59,14 @@ const WebIntersectionObserver: React.FC<IntersectionObserverProps> = ({
|
|
|
53
59
|
if (timeoutInstance.current) {
|
|
54
60
|
clearTimeout(timeoutInstance.current);
|
|
55
61
|
}
|
|
62
|
+
// Allow re-fire on scroll-back unless caller opted into triggerOnce.
|
|
63
|
+
if (!triggerOnce) {
|
|
64
|
+
intersected.current = false;
|
|
65
|
+
viewed.current = false;
|
|
66
|
+
}
|
|
56
67
|
}
|
|
57
68
|
},
|
|
58
|
-
[onIntersection, onTimedObservationComplete, unobserve],
|
|
69
|
+
[onIntersection, onTimedObservationComplete, timedThreshold, triggerOnce, unobserve],
|
|
59
70
|
);
|
|
60
71
|
|
|
61
72
|
useEffect(() => {
|
|
@@ -68,6 +79,9 @@ const WebIntersectionObserver: React.FC<IntersectionObserverProps> = ({
|
|
|
68
79
|
}
|
|
69
80
|
|
|
70
81
|
return () => {
|
|
82
|
+
if (timeoutInstance.current) {
|
|
83
|
+
clearTimeout(timeoutInstance.current);
|
|
84
|
+
}
|
|
71
85
|
unobserve(observer);
|
|
72
86
|
};
|
|
73
87
|
}, [handleIO, threshold, unobserve]);
|