@equinor/fusion-framework-react-module
Version:
Utils for initializing and consuming fusion framework modules
38 lines (37 loc) • 1.66 kB
TypeScript
import { type LazyExoticComponent, type FunctionComponent } from 'react';
import { type ModulesConfigurator, type ModulesInstanceType, type AnyModule } from '@equinor/fusion-framework-module';
type ModuleProviderCreator = <TModules extends Array<AnyModule> = Array<AnyModule>, TRef extends ModulesInstanceType<[AnyModule]> = any>(configurator: ModulesConfigurator<TModules>, modules: TModules, ref?: TRef) => Promise<LazyExoticComponent<FunctionComponent>>;
/**
* Function for creating a `ModuleProvider` component.
*
* __NOTE:__ this function requires component to be wrapped in `Suspense`
*
* @example
* ```ts
* import http, { HttpModule } from '@equinor/fusion-framework-module-http';
* import msal, { MsalModule } from '@equinor/fusion-framework-module-msal';
* import { createModuleProvider } from '@equinor/fusion-framework-react-module';
*
* export default createModuleProvider(
* (config) => {
* config.auth.configureDefault({
* tenantId: 'MY_TENANT_ID',
* clientId: 'MY_CLIENT_ID',
* redirectUri: '/authentication/login-callback',
* });
* config.http.configureClient('foo', {
* baseUri: 'https://foo.bar',
* defaultScopes: ['FOO_CLIENT_ID/.default'],
* });
* },
* [http, msal]
*);
* ```
* @param configurator callback for configuring provided modules
* @param modules modules which should be initiated
* @param ref optional parent module instance
* @returns Suspensive `ModuleProvider`
*/
export declare const createModuleProvider: ModuleProviderCreator;
export declare const ModuleProvider: import("react").Provider<Record<string, unknown>>;
export default ModuleProvider;