@attio/react-native-bottom-sheet-toolbox
Version:
55 lines (54 loc) • 2.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.BottomSheetScrollGestureDetector = BottomSheetScrollGestureDetector;
exports.useBottomSheetScrollGestureDetectorConnector = useBottomSheetScrollGestureDetectorConnector;
var _reactNativeGestureHandler = require("react-native-gesture-handler");
var _reactNativeReanimated = require("react-native-reanimated");
var _hooks = require("../hooks");
var _jsxRuntime = require("react/jsx-runtime");
function BottomSheetScrollGestureDetector({
children,
...rest
}) {
const gesture = (0, _hooks.useBottomSheetScrollGesture)(rest);
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector, {
gesture: gesture,
children: children
});
}
function useBottomSheetScrollGestureDetectorConnector(scrollDefaults = {}) {
const scrollRef = (0, _reactNativeReanimated.useAnimatedRef)();
const scrollOffsetYSharedValue = (0, _reactNativeReanimated.useSharedValue)(0);
const scrollContentHeightSharedValue = (0, _reactNativeReanimated.useSharedValue)(null);
const scrollLayoutHeightSharedValue = (0, _reactNativeReanimated.useSharedValue)(null);
const scrollHandler = (0, _reactNativeReanimated.useAnimatedScrollHandler)({
onScroll: (event, context) => {
scrollDefaults.onScroll?.(event, context);
scrollOffsetYSharedValue.set(event.contentOffset.y);
scrollContentHeightSharedValue.set(event.contentSize.height);
scrollLayoutHeightSharedValue.set(event.layoutMeasurement.height);
},
onBeginDrag: (event, context) => {
scrollDefaults.onBeginDrag?.(event, context);
},
onEndDrag: (event, context) => {
scrollDefaults.onEndDrag?.(event, context);
},
onMomentumBegin: (event, context) => {
scrollDefaults.onMomentumBegin?.(event, context);
},
onMomentumEnd: (event, context) => {
scrollDefaults.onMomentumEnd?.(event, context);
}
}, [scrollDefaults.onScroll, scrollDefaults.onBeginDrag, scrollDefaults.onEndDrag, scrollDefaults.onMomentumBegin, scrollDefaults.onMomentumEnd]);
return {
scrollRef,
scrollHandler,
scrollOffsetYSharedValue,
scrollContentHeightSharedValue,
scrollLayoutHeightSharedValue
};
}
//# sourceMappingURL=bottom-sheet-scroll-gesture-detector.js.map