@attio/react-native-bottom-sheet-toolbox
Version:
90 lines (89 loc) • 3.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.InvertedBottomSheetFlatList = exports.BottomSheetFlatList = void 0;
var React = _interopRequireWildcard(require("react"));
var _reactMergeRefs = require("react-merge-refs");
var _reactNativeReanimated = _interopRequireDefault(require("react-native-reanimated"));
var _bottomSheetScrollGestureDetector = require("../bottom-sheet-scroll-gesture-detector");
var _bottomSheetListWrapper = require("./bottom-sheet-list-wrapper");
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
function makeBottomSheetFlatList(inverted) {
return function BottomSheetFlatList({
onScroll,
onBeginDrag,
onEndDrag,
onMomentumBegin,
onMomentumEnd,
onContentSizeChange,
ref,
onLayout,
...rest
}) {
const {
scrollHandler,
scrollOffsetYSharedValue,
scrollContentHeightSharedValue,
scrollLayoutHeightSharedValue,
scrollRef
} = (0, _bottomSheetScrollGestureDetector.useBottomSheetScrollGestureDetectorConnector)({
...(onScroll && {
onScroll
}),
...(onBeginDrag && {
onBeginDrag
}),
...(onEndDrag && {
onEndDrag
}),
...(onMomentumBegin && {
onMomentumBegin
}),
...(onMomentumEnd && {
onMomentumEnd
})
});
const refs = (0, _reactMergeRefs.useMergeRefs)([scrollRef, ref]);
const innerOnContentSizeChange = React.useCallback((w, h) => {
if (typeof onContentSizeChange === "function") {
onContentSizeChange(w, h);
} else if (onContentSizeChange?.value) {
onContentSizeChange.value(w, h);
}
scrollContentHeightSharedValue.set(h);
}, [onContentSizeChange, scrollContentHeightSharedValue]);
const innerOnLayout = React.useCallback(evt => {
if (typeof onLayout === "function") {
onLayout(evt);
} else if (onLayout?.value) {
onLayout.value(evt);
}
scrollLayoutHeightSharedValue.set(evt.nativeEvent.layout.height);
}, [onLayout, scrollLayoutHeightSharedValue]);
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_bottomSheetScrollGestureDetector.BottomSheetScrollGestureDetector, {
scrollRef: scrollRef,
scrollOffsetYSharedValue: scrollOffsetYSharedValue,
scrollContentHeightSharedValue: scrollContentHeightSharedValue,
scrollLayoutHeightSharedValue: scrollLayoutHeightSharedValue,
inverted: inverted,
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_bottomSheetListWrapper.BottomSheetListWrapper, {
contentHeightSharedValue: scrollContentHeightSharedValue,
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.FlatList, {
ref: refs,
bounces: false,
scrollEventThrottle: 1,
onScroll: scrollHandler,
onContentSizeChange: innerOnContentSizeChange,
onLayout: innerOnLayout,
...rest
})
})
});
};
}
const BottomSheetFlatList = exports.BottomSheetFlatList = makeBottomSheetFlatList(false);
const InvertedBottomSheetFlatList = exports.InvertedBottomSheetFlatList = makeBottomSheetFlatList(true);
//# sourceMappingURL=bottom-sheet-flat-list.js.map