/*
 * Copyright OpenSearch Contributors
 * SPDX-License-Identifier: Apache-2.0
 */

import React, { ComponentType } from "react";
import { BrowserServices } from "../../models/interfaces";
import { ModalConsumer } from "./Modal";

interface ModalRootProps {
  services: BrowserServices;
}

// All modals will have access to the BrowserServices if they need it
const ModalRoot: React.SFC<ModalRootProps> = ({ services }) => (
  <ModalConsumer>
    {({
      component: Komponent,
      props,
      onClose,
    }: {
      component: ComponentType<{ onClose: () => void; services: BrowserServices }> | null;
      props: object;
      onClose: () => void;
    }) => (Komponent ? <Komponent {...props} onClose={onClose} services={services} /> : null)}
  </ModalConsumer>
);

export default ModalRoot;