@scrolia/react-native
Version:
A headless scrollbar component
28 lines (26 loc) • 950 B
JavaScript
import { tryPlugin } from "../../../functions/plugin.mjs";
const handleScrollFn = ({ axis, event, disabled, animated, plugins, hvTrack, hvThumb, total, view, viewOffset, scrollbarOffset, setScrollbarOffset }) => {
viewOffset.current = event.nativeEvent.contentOffset[axis];
const scrollbarOffsetNext = viewOffset.current / total.current * view.current;
let result;
for (const plugin of plugins) {
if (!plugin.onScroll) continue;
result = tryPlugin(plugin, plugin.onScroll, {
axis,
isDisabled: disabled,
isAnimated: animated,
isDefined: hvTrack && hvThumb,
total: total.current,
view: view.current,
viewOffset: viewOffset.current,
scrollbarOffsetPrev: scrollbarOffset,
scrollbarOffsetNext
}) ?? result;
}
let offset;
if (result?.scrollbarOffset) offset = result.scrollbarOffset;
else offset = scrollbarOffsetNext;
setScrollbarOffset(offset);
};
export { handleScrollFn };
//# sourceMappingURL=scroll.mjs.map