UNPKG

@contentstack/live-preview-utils

Version:

Contentstack provides the Live Preview SDK to establish a communication channel between the various Contentstack SDKs and your website, transmitting live changes to the preview pane.

1 lines 2.61 kB
{"version":3,"sources":["../../../../../src/visualBuilder/hooks/use-infinite-scroll/useInfiniteScroll.ts"],"sourcesContent":["import React from \"preact/compat\";\nimport { useEffect, useState } from \"preact/hooks\";\n\ninterface IUseInfiniteScrollOptions {\n containerId: string;\n isFetching: boolean;\n canFetchMore: boolean;\n loadMore: (offset: number, limit: number) => Promise<any>;\n offset: number;\n limit: number;\n}\n\nconst scrollOffset = 3;\n\nconst useInfiniteScroll = ({\n containerId,\n isFetching,\n canFetchMore,\n loadMore,\n offset,\n limit,\n}: IUseInfiniteScrollOptions) => {\n const [fetchingState, setFetchingState] = useState(isFetching);\n\n useEffect(() => {\n const commentListContainer = document.getElementById(containerId);\n if (!commentListContainer) return;\n\n const scrollEvent = async () => {\n if (\n commentListContainer.scrollHeight +\n commentListContainer.scrollTop -\n commentListContainer.clientHeight <\n scrollOffset && // Adjust this offset if needed\n !fetchingState &&\n canFetchMore\n ) {\n setFetchingState(true);\n try {\n await loadMore(offset, limit);\n } finally {\n setFetchingState(false);\n }\n }\n };\n\n commentListContainer.addEventListener(\"scroll\", scrollEvent, true);\n return () => {\n commentListContainer.removeEventListener(\n \"scroll\",\n scrollEvent,\n true\n );\n };\n }, [containerId, fetchingState, canFetchMore, loadMore, offset, limit]);\n\n return fetchingState;\n};\n\nexport default useInfiniteScroll;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAoC;AAWpC,IAAM,eAAe;AAErB,IAAM,oBAAoB,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAiC;AAC7B,QAAM,CAAC,eAAe,gBAAgB,QAAI,uBAAS,UAAU;AAE7D,8BAAU,MAAM;AACZ,UAAM,uBAAuB,SAAS,eAAe,WAAW;AAChE,QAAI,CAAC,qBAAsB;AAE3B,UAAM,cAAc,YAAY;AAC5B,UACI,qBAAqB,eACjB,qBAAqB,YACrB,qBAAqB,eACrB;AAAA,MACJ,CAAC,iBACD,cACF;AACE,yBAAiB,IAAI;AACrB,YAAI;AACA,gBAAM,SAAS,QAAQ,KAAK;AAAA,QAChC,UAAE;AACE,2BAAiB,KAAK;AAAA,QAC1B;AAAA,MACJ;AAAA,IACJ;AAEA,yBAAqB,iBAAiB,UAAU,aAAa,IAAI;AACjE,WAAO,MAAM;AACT,2BAAqB;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,GAAG,CAAC,aAAa,eAAe,cAAc,UAAU,QAAQ,KAAK,CAAC;AAEtE,SAAO;AACX;AAEA,IAAO,4BAAQ;","names":[]}