import * as React from 'react'; import { Plugin } from './plugin'; import { PluginManager } from './plugin-manager'; import type { localPluginType, localPluginObjectType, IComponentPluginProps, IHocBaseComponentsOptions, } from './types'; export const pluginManager = new PluginManager(); export function useCreatePluginInstance( pluginName: string, localPlugin?: localPluginType, ) { const plugin = React.useMemo(() => { const pluginInstance = new Plugin(pluginName, pluginManager); localPlugin && pluginInstance.setLocalPlugin(localPlugin); pluginInstance.setGlobalPlugin( pluginManager .getPluginsByComponentName(pluginName) .map((item) => item.method), ); return pluginInstance; }, []); return plugin; } export function takeExpandPropsFormPlugins(plguins, props) { return plguins.reduce( (expandProps, handleFun) => { return Object.assign(expandProps, handleFun(expandProps)); }, { ...props }, ); } export * from './plugin'; export * from './hoc-base-components'; export type { IComponentPluginProps, IHocBaseComponentsOptions, localPluginObjectType, localPluginType, };