/// import * as React from "react"; import { coreLogger } from "@applicaster/zapp-react-native-utils/logger"; import { findComponentByType } from "@applicaster/zapp-react-native-utils/pluginUtils"; import { usePickFromState } from "@applicaster/zapp-react-native-redux/hooks"; type Decorator = (component: React.Component) => React.Component; type Watcher = Array; type Props = { componentType: string; decorators?: Decorator | Array; }; export function useComponentResolver( { componentType, decorators }: Props, watchers?: Watcher ): React.ComponentType { const { plugins, components } = usePickFromState(["plugins", "components"]); const component = React.useMemo( () => findComponentByType({ components, componentType, decorators, plugins, }), watchers ); if (!component) { coreLogger.warn({ message: `useComponentResolver: Component of type ${componentType} not found`, }); } return component; }