@scrolia/react-native
Version:
A headless scrollbar component
71 lines (69 loc) • 1.88 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_contexts_scrollcore = require('../../contexts/scrollcore.js');
const require_length = require('./functions/length.js');
const require_scroll = require('./functions/scroll.js');
/** Content handler. */
const createContentHandler = (axis, options) => {
const { props } = options ?? {};
const { options: { disabled, animated, plugins }, [axis]: { hvTrack, hvThumb, total, view, viewOffset, scrollbarLength, setScrollbarLength, scrollbarOffset, setScrollbarOffset } } = require_contexts_scrollcore.useScrollCore();
const setLength = require_length.setLengthFn({
axis,
disabled,
animated,
plugins,
hvTrack,
hvThumb,
total,
view,
viewOffset,
scrollbarLength,
setScrollbarLength
});
const onLayout = (event) => {
if (!disabled) {
if (axis === "x") view.current = event.nativeEvent.layout.width;
else view.current = event.nativeEvent.layout.height;
setLength();
}
props?.onLayout?.(event);
};
const onContentSizeChange = (width, height) => {
if (!disabled) {
if (axis === "x") total.current = width;
else total.current = height;
setLength();
}
props?.onContentSizeChange?.(width, height);
};
const onScroll = (event) => {
if (!disabled) require_scroll.handleScrollFn({
axis,
event,
disabled,
animated,
plugins,
hvTrack,
hvThumb,
total,
view,
viewOffset,
scrollbarOffset,
setScrollbarOffset
});
props?.onScroll?.(event);
};
return {
onLayout,
onContentSizeChange,
onScroll
};
};
const useContentXHandler = (options) => {
return createContentHandler("x", options);
};
const useContentYHandler = (options) => {
return createContentHandler("y", options);
};
exports.useContentXHandler = useContentXHandler;
exports.useContentYHandler = useContentYHandler;
//# sourceMappingURL=index.js.map