@macrof/shared
Version:
React MicroFrontend Shared, Typescript, Webpack 5, ModuleFederation
57 lines (56 loc) • 2.4 kB
JavaScript
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
import { Container } from "inversify";
import React, { useContext } from 'react';
import { createAppStores, ERR } from "..";
export function Context(store) {
return React.createContext(store || null);
}
export const AppStore = ((store) => () => store)(createAppStores());
export const _appStoreContext = ((context) => () => context)(Context(AppStore()));
export const AppProvider = ((AppContext, appStore) => (_a) => {
var props = __rest(_a, []);
return React.createElement(AppContext.Provider, { value: appStore() }, props.children);
})(_appStoreContext(), AppStore);
export function useAppStoreContext() {
const stores = React.useContext(_appStoreContext());
if (!stores) {
throw new Error(ERR.BEFORE_INIT);
}
return stores;
}
export function useMfContext() {
const context = useAppStoreContext();
return Object.assign(Object.assign({}, context.employeeStore.init()), context.rootStore.init());
}
export const useEmpStoreContext = () => useAppStoreContext().employeeStore;
export const useRootStoreContext = () => useAppStoreContext().rootStore;
export const initMFProviders = (provider) => AppStore().employeeStore.inject(provider);
export function configureContextStore(mfStoreCb) {
const generalContextStore = AppStore().rootStore;
if (!(generalContextStore === null || generalContextStore === void 0 ? void 0 : generalContextStore.rootContainer)) {
console.error(ERR.CONTEXT);
}
const container = new Container({
defaultScope: 'Singleton',
autoBindInjectable: true
});
container.parent = generalContextStore.rootContainer;
return Object.assign(Object.assign({}, generalContextStore.init()), mfStoreCb(container));
}
export function useConfiguredStores(configuredContext) {
const context = useContext(configuredContext);
if (!context) {
console.error(ERR.BEFORE_INIT);
}
return context;
}