@equinor/fusion-framework-react-app 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,7 +7,7 @@ export declare type ComponentRenderArgs<TFusion extends Fusion = Fusion, TManife
7
7
  fusion: TFusion;
8
8
  env: TManifest;
9
9
  };
10
- export declare type ComponentRenderer<TFusion extends Fusion = Fusion, TManifest extends AppManifest = AppManifest> = (args: ComponentRenderArgs<TFusion, TManifest>) => React.LazyExoticComponent<React.ComponentType>;
10
+ export declare type ComponentRenderer<TFusion extends Fusion = Fusion, TManifest extends AppManifest = AppManifest> = (fusion: TFusion, env: TManifest) => React.LazyExoticComponent<React.ComponentType>;
11
11
  export declare const createComponent: <TModules extends AnyModule[], TRef extends Fusion<[]> = Fusion<[]>, TManifest extends AppManifest = AppManifest>(Component: React.ComponentType, configure?: AppModuleInitiator<TModules, TRef, TManifest> | undefined) => ComponentRenderer<TRef, TManifest>;
12
12
  declare module '@equinor/fusion-framework-module-event' {
13
13
  interface FrameworkEventMap {
@@ -1,4 +1,4 @@
1
- import type { ComponentRenderArgs, ComponentRenderer } from 'create-component';
1
+ import type { ComponentRenderArgs, ComponentRenderer } from './create-component';
2
2
  export declare type RenderTeardown = VoidFunction;
3
3
  export declare const renderComponent: (renderer: ComponentRenderer) => (el: HTMLElement, args: ComponentRenderArgs) => RenderTeardown;
4
4
  export default renderComponent;
@@ -1,3 +1,3 @@
1
1
  import type { AppModulesInstance } from '@equinor/fusion-framework-app';
2
- export declare const useAppModule: <TKey extends "dispose" | "auth" | "event" | "http">(module: TKey) => AppModulesInstance<[]>[TKey];
2
+ export declare const useAppModule: <TKey extends "event" | "dispose" | "http" | "auth" | "appConfig">(module: TKey) => AppModulesInstance<unknown>[TKey];
3
3
  export default useAppModule;
@@ -1,3 +1,3 @@
1
1
  import type { AppModulesInstance } from '@equinor/fusion-framework-app';
2
- export declare const useAppModules: () => AppModulesInstance<[]>;
2
+ export declare const useAppModules: () => AppModulesInstance<unknown>;
3
3
  export default useAppModules;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@equinor/fusion-framework-react-app",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "",
5
5
  "main": "dist/esm/index.js",
6
6
  "exports": {
@@ -39,12 +39,12 @@
39
39
  "directory": "packages/react"
40
40
  },
41
41
  "dependencies": {
42
- "@equinor/fusion-framework-app": "^1.0.2",
43
- "@equinor/fusion-framework-module": "^1.1.0",
44
- "@equinor/fusion-framework-module-event": "^1.0.2",
45
- "@equinor/fusion-framework-module-msal": "^1.0.2",
46
- "@equinor/fusion-framework-react": "^1.0.2",
47
- "@equinor/fusion-framework-react-module-app-config": "^1.0.2"
42
+ "@equinor/fusion-framework-app": "^1.0.3",
43
+ "@equinor/fusion-framework-module": "^1.1.1",
44
+ "@equinor/fusion-framework-module-event": "^1.0.3",
45
+ "@equinor/fusion-framework-module-msal": "^1.0.3",
46
+ "@equinor/fusion-framework-react": "^1.0.3",
47
+ "@equinor/fusion-framework-react-module-app-config": "^1.0.3"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@types/react": "^17.0.11",
@@ -66,5 +66,5 @@
66
66
  "optional": true
67
67
  }
68
68
  },
69
- "gitHead": "e4865f46e0e01bb8efdbe0a542e052255ec570a8"
69
+ "gitHead": "ed86940ac2091df63390cebd4c34d54ad02ed3fc"
70
70
  }
@@ -20,12 +20,11 @@ export type ComponentRenderArgs<
20
20
  TFusion extends Fusion = Fusion,
21
21
  TManifest extends AppManifest = AppManifest
22
22
  > = { fusion: TFusion; env: TManifest };
23
+
23
24
  export type ComponentRenderer<
24
25
  TFusion extends Fusion = Fusion,
25
26
  TManifest extends AppManifest = AppManifest
26
- > = (
27
- args: ComponentRenderArgs<TFusion, TManifest>
28
- ) => React.LazyExoticComponent<React.ComponentType>;
27
+ > = (fusion: TFusion, env: TManifest) => React.LazyExoticComponent<React.ComponentType>;
29
28
 
30
29
  /**
31
30
  * Creates an lazy loading Component which configures modules
@@ -85,9 +84,9 @@ export const createComponent =
85
84
  Component: React.ComponentType,
86
85
  configure?: AppModuleInitiator<TModules, TRef, TManifest>
87
86
  ): ComponentRenderer<TRef, TManifest> =>
88
- ({ fusion, env }) =>
87
+ (fusion, env) =>
89
88
  lazy(async () => {
90
- const init = initAppModules(configure);
89
+ const init = initAppModules<TModules, TRef, TManifest>(configure);
91
90
  const modules = (await init({
92
91
  fusion,
93
92
  manifest: env,
@@ -15,7 +15,7 @@ export const createLegacyApp = <TModules extends Array<AnyModule>>(
15
15
  const fusion = useFramework();
16
16
  const RenderComponent = useMemo(() => {
17
17
  const creator = createComponent(Component, configure);
18
- return creator({ fusion, env: { name: 'legacy' } });
18
+ return creator(fusion, { name: 'legacy' });
19
19
  }, []);
20
20
  return (
21
21
  <Suspense fallback={<p>loading app</p>}>
@@ -1,23 +1,18 @@
1
1
  import { Suspense, StrictMode } from 'react';
2
2
  import type { FunctionComponent } from 'react';
3
- import type { ComponentRenderArgs, ComponentRenderer } from 'create-component';
3
+ import type { ComponentRenderArgs, ComponentRenderer } from './create-component';
4
4
  import ReactDOM from 'react-dom';
5
5
 
6
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
7
- // @ts-ignore
8
- import { createRoot } from 'react-dom/client';
9
-
10
6
  export type RenderTeardown = VoidFunction;
11
7
 
12
8
  export const renderComponent = (renderer: ComponentRenderer) => {
13
9
  return (el: HTMLElement, args: ComponentRenderArgs): RenderTeardown => {
14
- const Component = renderer(args);
15
- const renderFn = createRoot ? render : renderLegacy;
16
- return renderFn(el, Component);
10
+ const Component = renderer(args.fusion, args.env);
11
+ return render(el, Component);
17
12
  };
18
13
  };
19
14
 
20
- const renderLegacy = (el: Element, Component: FunctionComponent): RenderTeardown => {
15
+ const render = (el: Element, Component: FunctionComponent): RenderTeardown => {
21
16
  ReactDOM.render(
22
17
  <StrictMode>
23
18
  <Suspense fallback={<p>loading app</p>}>
@@ -31,18 +26,18 @@ const renderLegacy = (el: Element, Component: FunctionComponent): RenderTeardown
31
26
  };
32
27
  };
33
28
 
34
- const render = (el: Element, Component: FunctionComponent): RenderTeardown => {
35
- const root = createRoot(el);
36
- root.render(
37
- <StrictMode>
38
- <Suspense fallback={<p>loading app</p>}>
39
- <Component />
40
- </Suspense>
41
- </StrictMode>
42
- );
43
- return () => {
44
- root.unmount();
45
- };
46
- };
29
+ // const render = (el: Element, Component: FunctionComponent): RenderTeardown => {
30
+ // const root = createRoot(el);
31
+ // root.render(
32
+ // <StrictMode>
33
+ // <Suspense fallback={<p>loading app</p>}>
34
+ // <Component />
35
+ // </Suspense>
36
+ // </StrictMode>
37
+ // );
38
+ // return () => {
39
+ // root.unmount();
40
+ // };
41
+ // };
47
42
 
48
43
  export default renderComponent;
@@ -1,24 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { lazy } from 'react';
3
- import { FrameworkProvider } from '@equinor/fusion-framework-react';
4
- import { initializeAppModules } from '@equinor/fusion-framework-app';
5
- import { ModuleProvider as AppModuleProvider } from '@equinor/fusion-framework-react-module';
6
- export const createApp = (Component, configure, modules) => (fusion, env) => lazy(async () => {
7
- modules ??= [];
8
- const configurator = async (config) => {
9
- if (configure) {
10
- await Promise.resolve(configure(config, fusion, env));
11
- }
12
- };
13
- const appInitiator = initializeAppModules(configurator, modules ?? []);
14
- const appModules = await appInitiator(fusion, env);
15
- appModules.event.dispatchEvent('onReactAppLoaded', {
16
- detail: { modules, fusion },
17
- source: Component,
18
- });
19
- return {
20
- default: () => (_jsx(FrameworkProvider, { value: fusion, children: _jsx(AppModuleProvider, { value: appModules, children: _jsx(Component, {}) }) })),
21
- };
22
- });
23
- export default createApp;
24
- //# sourceMappingURL=create-app.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-app.js","sourceRoot":"","sources":["../../src/create-app.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAOrE,OAAO,EAAE,cAAc,IAAI,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAmD7F,MAAM,CAAC,MAAM,SAAS,GAClB,CACI,SAA8B,EAC9B,SAAqC,EACrC,OAAkB,EACpB,EAAE,CACJ,CAAC,MAAc,EAAE,GAAgB,EAAkD,EAAE,CACjF,IAAI,CAAC,KAAK,IAAI,EAAE;IACZ,OAAO,KAAK,EAAyB,CAAC;IAEtC,MAAM,YAAY,GAAG,KAAK,EAAE,MAAW,EAAE,EAAE;QACvC,IAAI,SAAS,EAAE;YACX,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;SACzD;IACL,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,oBAAoB,CAAC,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;IAEvE,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnD,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,kBAAkB,EAAE;QAC/C,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QAC3B,MAAM,EAAE,SAAS;KACpB,CAAC,CAAC;IACH,OAAO;QACH,OAAO,EAAE,GAAG,EAAE,CAAC,CACX,KAAC,iBAAiB,IAAC,KAAK,EAAE,MAAM,YAC5B,KAAC,iBAAiB,IAAC,KAAK,EAAE,UAAU,YAChC,KAAC,SAAS,KAAG,GACG,GACJ,CACvB;KACJ,CAAC;AACN,CAAC,CAAC,CAAC;AAaX,eAAe,SAAS,CAAC"}
@@ -1,15 +0,0 @@
1
- /// <reference types="react" />
2
- import type { Fusion } from '@equinor/fusion-framework-react';
3
- import type { AppManifest, AppConfigurator, AppModules } from '@equinor/fusion-framework-app';
4
- import type { AnyModule, ModulesInstanceType } from '@equinor/fusion-framework-module';
5
- import type { FrameworkEvent, FrameworkEventInit } from '@equinor/fusion-framework-module-event';
6
- export declare const createApp: <TModules extends AnyModule[]>(Component: React.ComponentType, configure?: AppConfigurator<TModules> | undefined, modules?: TModules | undefined) => (fusion: Fusion, env: AppManifest) => React.LazyExoticComponent<React.ComponentType>;
7
- declare module '@equinor/fusion-framework-module-event' {
8
- interface FrameworkEventMap {
9
- onReactAppLoaded: FrameworkEvent<FrameworkEventInit<{
10
- modules: ModulesInstanceType<AppModules>;
11
- fusion: Fusion;
12
- }, React.ComponentType>>;
13
- }
14
- }
15
- export default createApp;