@scrolia/react-native
Version:
A headless scrollbar component
41 lines (38 loc) • 1.14 kB
JavaScript
"use client";
import * as React from "react";
const useScrollCoreStates = () => {
const contentType = React.useRef("scrollview");
const contentRef = React.useRef(null);
const [hvTrack, setHvTrack] = React.useState(false);
const [hvThumb, setHvThumb] = React.useState(false);
const total = React.useRef(0);
const view = React.useRef(0);
const viewOffset = React.useRef(0);
const [scrollbarLength, setScrollbarLength] = React.useState(0);
const [scrollbarOffset, setScrollbarOffset] = React.useState(0);
return {
contentType,
contentRef,
hvTrack,
setHvTrack,
hvThumb,
setHvThumb,
total,
view,
viewOffset,
scrollbarLength,
setScrollbarLength,
scrollbarOffset,
setScrollbarOffset
};
};
/** `ScrollCore` context. */
const ScrollCoreContext = React.createContext(null);
/** Hook for using the `ScrollCore` context. */
const useScrollCore = () => {
const core = React.useContext(ScrollCoreContext);
if (core === null) throw new Error("useScrollCore must be used within a provider");
return core;
};
export { ScrollCoreContext, useScrollCore, useScrollCoreStates };
//# sourceMappingURL=scrollcore.mjs.map