import * as React from "react"; import { flushSync } from "react-dom"; import { observeElementRect, observeElementOffset, elementScroll, observeWindowRect, observeWindowOffset, windowScroll, Virtualizer } from "@tanstack/virtual-core"; export * from "@tanstack/virtual-core"; const useIsomorphicLayoutEffect = typeof document !== "undefined" ? React.useLayoutEffect : React.useEffect; function useVirtualizerBase(options) { const rerender = React.useReducer(() => ({}), {})[1]; const resolvedOptions = { ...options, onChange: (instance2, sync) => { var _a; if (sync) { flushSync(rerender); } else { rerender(); } (_a = options.onChange) == null ? void 0 : _a.call(options, instance2, sync); } }; const [instance] = React.useState( () => new Virtualizer(resolvedOptions) ); instance.setOptions(resolvedOptions); React.useEffect(() => { return instance._didMount(); }, []); useIsomorphicLayoutEffect(() => { return instance._willUpdate(); }); return instance; } function useVirtualizer(options) { return useVirtualizerBase({ observeElementRect, observeElementOffset, scrollToFn: elementScroll, ...options }); } function useWindowVirtualizer(options) { return useVirtualizerBase({ getScrollElement: () => typeof document !== "undefined" ? window : null, observeElementRect: observeWindowRect, observeElementOffset: observeWindowOffset, scrollToFn: windowScroll, initialOffset: typeof document !== "undefined" ? window.scrollY : void 0, ...options }); } export { useVirtualizer, useWindowVirtualizer }; //# sourceMappingURL=index.js.map