@atlaskit/editor-common
Version:
A package that contains common classes and components for editor and renderer
25 lines • 1.02 kB
JavaScript
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
import React from 'react';
import ProviderFactory from './provider-factory';
var ProviderFactoryContext = /*#__PURE__*/React.createContext(new ProviderFactory());
export var ProviderFactoryProvider = ProviderFactoryContext.Provider;
export var useProviderFactory = function useProviderFactory() {
return React.useContext(ProviderFactoryContext);
};
export var useProvider = function useProvider(name) {
var _React$useState = React.useState(),
_React$useState2 = _slicedToArray(_React$useState, 2),
provider = _React$useState2[0],
setProvider = _React$useState2[1];
var providerFactory = useProviderFactory();
React.useEffect(function () {
var providerHandler = function providerHandler(_, provider) {
setProvider(provider);
};
providerFactory.subscribe(name, providerHandler);
return function () {
providerFactory.unsubscribe(name, providerHandler);
};
}, [name, providerFactory]);
return provider;
};