var __rest = (this && this.__rest) || function (s, e) {
    var t = {};
    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
        t[p] = s[p];
    if (s != null && typeof Object.getOwnPropertySymbols === "function")
        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
                t[p[i]] = s[p[i]];
        }
    return t;
};
import React, { forwardRef } from 'react';
import { Platform } from 'react-native';
import { useControllableState } from '@gluestack-ui/utils/hooks';
import { Overlay } from '../../overlay/creator';
import { ActionsheetContext } from './context';
import { StyleSheet } from 'react-native';
export function Actionsheet(StyledActionsheet) {
    return forwardRef((_a, ref) => {
        var { children, isOpen, onClose, onOpen, defaultIsOpen = false, trapFocus = true, closeOnOverlayClick = true, isKeyboardDismissable = true, useRNModal, initialFocusRef, finalFocusRef, snapPoints, _experimentalOverlay = false, preventScroll = false } = _a, props = __rest(_a, ["children", "isOpen", "onClose", "onOpen", "defaultIsOpen", "trapFocus", "closeOnOverlayClick", "isKeyboardDismissable", "useRNModal", "initialFocusRef", "finalFocusRef", "snapPoints", "_experimentalOverlay", "preventScroll"]);
        const overlayStyle = Platform.OS === 'web' ? { position: 'fixed' } : {};
        const [visible, setVisible] = useControllableState({
            value: isOpen,
            defaultValue: defaultIsOpen,
            onChange: (val) => {
                if (val === false) {
                    onClose && onClose();
                }
                else {
                    onOpen && onOpen();
                }
            },
        });
        const [backdropVisible, setBackdropVisible] = useControllableState({
            value: isOpen,
            defaultValue: defaultIsOpen,
        });
        const handleClose = React.useCallback(() => {
            setVisible(false);
        }, [setVisible]);
        const handleCloseBackdrop = React.useCallback(() => {
            setBackdropVisible(false);
        }, [setBackdropVisible]);
        const contextValue = React.useMemo(() => {
            return {
                handleClose,
                closeOnOverlayClick,
                visible,
                backdropVisible: backdropVisible,
                handleCloseBackdrop,
                trapFocus,
                initialFocusRef,
                finalFocusRef,
                snapPoints,
                preventScroll,
            };
        }, [
            handleClose,
            handleCloseBackdrop,
            closeOnOverlayClick,
            visible,
            backdropVisible,
            trapFocus,
            initialFocusRef,
            finalFocusRef,
            snapPoints,
            preventScroll,
        ]);
        return (<Overlay isOpen={visible} onRequestClose={handleClose} isKeyboardDismissable={isKeyboardDismissable} useRNModal={useRNModal} style={overlayStyle}>
          <ActionsheetContext.Provider value={contextValue}>
            <StyledActionsheet ref={ref} style={[StyleSheet.absoluteFill]} {...props}>
              {children}
            </StyledActionsheet>
          </ActionsheetContext.Provider>
        </Overlay>);
    });
}
//# sourceMappingURL=Actionsheet.jsx.map