import * as React from 'react';
import { UIHelper } from '../../../UIHelper';
import { AdaptableViewFactory } from '../../../AdaptableViewFactory';
import { AdaptablePopupModuleView } from './AdaptablePopupModuleView';
export const AdaptablePopupBody = (props) => {
    const modalContainer = UIHelper.getModalContainer(props.api.optionsApi.getAdaptableOptions(), document, props.api.internalApi.buildBaseContext());
    const moduleName = props.module.moduleInfo.ModuleName;
    const accessLevel = props.api.entitlementApi.getEntitlementAccessLevelForModule(moduleName);
    const moduleInfo = props.api.internalApi.getModuleService().getModuleInfoByModule(moduleName);
    const moduleProps = {
        popupParams: props.moduleParams,
        onClearPopupParams: () => (props.onClearParams ? props.onClearParams() : null),
        onClosePopup: () => {
            if (props.onHide) {
                props.onHide();
            }
        },
        // show share button if TeamSharing is active & user has edit rights
        teamSharingActivated: props.api.teamSharingApi.isTeamSharingAvailable() &&
            props.api.teamSharingApi.hasTeamSharingFullRights(),
        modalContainer: modalContainer,
        accessLevel: accessLevel,
        api: props.api,
        moduleInfo,
    };
    const BodyComponent = AdaptableViewFactory?.[props?.componentName ?? moduleInfo.Popup] || AdaptablePopupModuleView;
    // key is to make sure state is reset between views
    // most of the views use the `AdaptablePopupModuleView` component
    return React.createElement(BodyComponent, { key: props?.componentName, module: props.module, ...moduleProps });
};
