UNPKG

@attio/react-native-bottom-sheet-toolbox

Version:
47 lines (46 loc) 1.64 kB
"use strict"; 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