@attio/react-native-bottom-sheet-toolbox
Version:
47 lines (46 loc) • 1.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.BottomSheetModalWrapper = BottomSheetModalWrapper;
var _react = _interopRequireDefault(require("react"));
var _modalPortal = require("./modal-portal");
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function BottomSheetModalWrapper({
ref,
children,
openSheetOnMount = false,
onClose
}) {
const [isSheetOpen, setIsSheetOpen] = _react.default.useState(openSheetOnMount);
const openSheet = _react.default.useCallback(() => setIsSheetOpen(true), []);
const closeSheet = _react.default.useCallback(() => setIsSheetOpen(false), []);
const currentOnClose = _react.default.useMemo(() => onClose ?? (() => {}), [onClose]);
const onSheetClose = _react.default.useCallback(() => {
closeSheet();
currentOnClose();
}, [closeSheet, currentOnClose]);
const innerRef = _react.default.useRef(null);
const closeSheetPreserveAnimation = _react.default.useCallback(() => {
if (innerRef.current) {
innerRef.current.close();
} else {
setIsSheetOpen(false);
}
}, []);
_react.default.useImperativeHandle(ref, () => ({
open: openSheet,
close: closeSheetPreserveAnimation
}), [openSheet, closeSheetPreserveAnimation]);
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_modalPortal.ModalPortal, {
visible: isSheetOpen,
onDismiss: closeSheet,
onRequestClose: closeSheet,
children: children({
ref: innerRef,
onClose: onSheetClose
})
});
}
//# sourceMappingURL=bottom-sheet-modal-wrapper.js.map