/**
* This file was generated by st-open-api
*/
import React, {createContext, PropsWithChildren} from "react";

{{#isImport}}
{{#imports}}
{{{.}}}
{{/imports}}
{{/isImport}}

export interface IOpenApiContext {
    {{#services}}
        '{{propertyName}}': {{serviceClassName}},
    {{/services}}
}

export const DEFAULT_OPEN_API_CONTEXT: IOpenApiContext = {
    {{#services}}
        '{{propertyName}}': new {{serviceClassName}}(),
    {{/services}}
};

export const OpenApiContext = createContext<IOpenApiContext>(DEFAULT_OPEN_API_CONTEXT);

export interface IOpenApiProvider {
    value?: IOpenApiContext;
}

export const OpenApiProvider = ({children, value}:  PropsWithChildren<IOpenApiProvider>) => {
    return <OpenApiContext.Provider value={{=<% %>=}}{{...DEFAULT_OPEN_API_CONTEXT, ...value}}<%={{ }}=%>>
        {children}
    </OpenApiContext.Provider>
}

if (process.env.NODE_ENV !== 'production') {
    // eslint-disable-next-line no-console
    console.groupCollapsed('OpenApi-Services registered');
    // eslint-disable-next-line no-console
    console.info(OpenApiContext);
    // eslint-disable-next-line no-console
    console.groupEnd();
}
