@atlaskit/editor-common
Version:
A package that contains common classes and components for editor and renderer
19 lines • 755 B
JavaScript
import React from 'react';
import ProviderFactory from './provider-factory';
const ProviderFactoryContext = /*#__PURE__*/React.createContext(new ProviderFactory());
export const ProviderFactoryProvider = ProviderFactoryContext.Provider;
export const useProviderFactory = () => React.useContext(ProviderFactoryContext);
export const useProvider = name => {
const [provider, setProvider] = React.useState();
const providerFactory = useProviderFactory();
React.useEffect(() => {
const providerHandler = (_, provider) => {
setProvider(provider);
};
providerFactory.subscribe(name, providerHandler);
return () => {
providerFactory.unsubscribe(name, providerHandler);
};
}, [name, providerFactory]);
return provider;
};