UNPKG

@scrolia/vanilla

Version:

A headless scrollbar component

97 lines (95 loc) 3.18 kB
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.js'); const require_contexts_scrollcore = require('../../contexts/scrollcore.js'); const require_attribute = require('../../functions/attribute.js'); const require_functions_props_get = require('../../functions/props/get.js'); const require_functions_props_set = require('../../functions/props/set.js'); const atomico = require_rolldown_runtime.__toESM(require("atomico")); const atomico_jsx_runtime = require_rolldown_runtime.__toESM(require("atomico/jsx-runtime")); function _Provider(props) { const elRef = atomico.useHost(); const [disabled] = atomico.useState(props.disabled ?? false); const [page] = atomico.useState(props.page ?? false); const [plugins] = atomico.useState(props.plugins ?? []); const contentRef = atomico.useRef(); const [hvTrackX, setHvTrackX] = atomico.useState(false); const [hvThumbX, setHvThumbX] = atomico.useState(false); const [hvTrackY, setHvTrackY] = atomico.useState(false); const [hvThumbY, setHvThumbY] = atomico.useState(false); const totalX = atomico.useRef(0); const totalY = atomico.useRef(0); const viewX = atomico.useRef(0); const viewY = atomico.useRef(0); const viewOffsetX = atomico.useRef(0); const viewOffsetY = atomico.useRef(0); const [scrollbarLengthX, setScrollbarLengthX] = atomico.useState(0); const [scrollbarLengthY, setScrollbarLengthY] = atomico.useState(0); const [scrollbarOffsetX, setScrollbarOffsetX] = atomico.useState(0); const [scrollbarOffsetY, setScrollbarOffsetY] = atomico.useState(0); atomico.useProvider(require_contexts_scrollcore.ScrollCoreContext, { options: { disabled, page, 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 } }); atomico.useEffect(() => { const props$1 = require_attribute.getPropsFromAttributes(elRef.current.attributes); const newProps = require_functions_props_get.getComponentProps({ name: "provider", props: props$1, plugins: plugins ?? [] }); require_functions_props_set.setComponentProps(elRef.current, newProps); }, [plugins]); return /* @__PURE__ */ (0, atomico_jsx_runtime.jsx)("host", { shadowDom: true, children: /* @__PURE__ */ (0, atomico_jsx_runtime.jsx)("slot", {}) }); } _Provider.props = { disabled: { type: Boolean, reflect: true, attr: "disabled" }, page: { type: Boolean, reflect: true, attr: "page" }, plugins: { type: Array, reflect: true, attr: "plugins" } }; const Provider = atomico.c(_Provider); exports.Provider = Provider; //# sourceMappingURL=index.js.map