@eleven-am/xquery
Version:
XQuery is a sophisticated TypeScript wrapper for TanStack React Query, designed to enhance developer productivity with OpenAPI-generated clients. It enables developers to build and execute queries using fully type-safe factories instead of managing query
23 lines • 1.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useInfiniteScroll = useInfiniteScroll;
const react_query_1 = require("@tanstack/react-query");
const react_1 = require("react");
const useIsVisible_1 = require("./useIsVisible");
function useInfiniteScroll({ options, queryClientGetter, ...rest }) {
const { initialData } = rest;
const { data, fetchNextPage, isFetchingNextPage, hasNextPage } = (0, react_query_1.useInfiniteQuery)(rest, queryClientGetter());
const performFetch = (0, react_1.useCallback)(() => !isFetchingNextPage && hasNextPage && fetchNextPage(), [fetchNextPage, hasNextPage, isFetchingNextPage]);
const [ref] = (0, useIsVisible_1.useIsVisible)({
action: performFetch,
options,
});
const items = (0, react_1.useMemo)(() => {
if (!data) {
return initialData?.pages[0]?.results ?? [];
}
return data.pages.flatMap((page) => page.results);
}, [data, initialData?.pages]);
return [items, ref];
}
//# sourceMappingURL=useInfiniteScroll.js.map