@scrolia/react
Version:
A headless scrollbar component
66 lines (62 loc) • 1.98 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 = (options) => {
const contentRef = 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: {
...options,
disabled: options.disabled ?? false,
page: options.page ?? false,
plugins: options.plugins ?? []
},
contentRef,
x: {
hvTrack: hvTrackX,
setHvTrack: setHvTrackX,
hvThumb: hvThumbX,
setHvThumb: setHvThumbX,
total: totalX,
view: viewX,
viewOffset: viewOffsetX,
scrollbarLength: scrollbarLengthX,
setScrollbarLength: setScrollbarLengthX,
scrollbarOffset: scrollbarOffsetX,
setScrollbarOffset: setScrollbarOffsetX
},
y: {
hvTrack: hvTrackY,
setHvTrack: setHvTrackY,
hvThumb: hvThumbY,
setHvThumb: setHvThumbY,
total: totalY,
view: viewY,
viewOffset: viewOffsetY,
scrollbarLength: scrollbarLengthY,
setScrollbarLength: setScrollbarLengthY,
scrollbarOffset: scrollbarOffsetY,
setScrollbarOffset: setScrollbarOffsetY
}
},
children: options.children
});
};
export { Provider };
//# sourceMappingURL=index.mjs.map