@scrolia/react-native
Version:
A headless scrollbar component
73 lines (69 loc) • 2.22 kB
JavaScript
"use client";
import { ScrollCoreContext } from "../../contexts/scrollcore.mjs";
import * as React from "react";
import { jsx } from "react/jsx-runtime";
/** Provider component. */
const Provider = (props) => {
const { children,...p } = props;
const contentTypeX = React.useRef("scrollview");
const contentTypeY = React.useRef("scrollview");
const contentRefX = React.useRef(null);
const contentRefY = React.useRef(null);
const [hvTrackX, setHvTrackX] = React.useState(false);
const [hvThumbX, setHvThumbX] = React.useState(false);
const [hvTrackY, setHvTrackY] = React.useState(false);
const [hvThumbY, setHvThumbY] = React.useState(false);
const totalX = React.useRef(0);
const totalY = React.useRef(0);
const viewX = React.useRef(0);
const viewY = React.useRef(0);
const viewOffsetX = React.useRef(0);
const viewOffsetY = React.useRef(0);
const [scrollbarLengthX, setScrollbarLengthX] = React.useState(0);
const [scrollbarLengthY, setScrollbarLengthY] = React.useState(0);
const [scrollbarOffsetX, setScrollbarOffsetX] = React.useState(0);
const [scrollbarOffsetY, setScrollbarOffsetY] = React.useState(0);
return /* @__PURE__ */ jsx(ScrollCoreContext, {
value: {
options: {
...p,
disabled: p.disabled ?? false,
animated: p.animated ?? false,
plugins: p.plugins ?? []
},
x: {
contentType: contentTypeX,
contentRef: contentRefX,
hvTrack: hvTrackX,
setHvTrack: setHvTrackX,
hvThumb: hvThumbX,
setHvThumb: setHvThumbX,
total: totalX,
view: viewX,
viewOffset: viewOffsetX,
scrollbarLength: scrollbarLengthX,
setScrollbarLength: setScrollbarLengthX,
scrollbarOffset: scrollbarOffsetX,
setScrollbarOffset: setScrollbarOffsetX
},
y: {
contentType: contentTypeY,
contentRef: contentRefY,
hvTrack: hvTrackY,
setHvTrack: setHvTrackY,
hvThumb: hvThumbY,
setHvThumb: setHvThumbY,
total: totalY,
view: viewY,
viewOffset: viewOffsetY,
scrollbarLength: scrollbarLengthY,
setScrollbarLength: setScrollbarLengthY,
scrollbarOffset: scrollbarOffsetY,
setScrollbarOffset: setScrollbarOffsetY
}
},
children
});
};
export { Provider };
//# sourceMappingURL=index.mjs.map