@atlaskit/editor-common
Version:
A package that contains common classes and components for editor and renderer
32 lines (31 loc) • 1.49 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useProviderFactory = exports.useProvider = exports.ProviderFactoryProvider = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _react = _interopRequireDefault(require("react"));
var _providerFactory = _interopRequireDefault(require("./provider-factory"));
var ProviderFactoryContext = /*#__PURE__*/_react.default.createContext(new _providerFactory.default());
var ProviderFactoryProvider = exports.ProviderFactoryProvider = ProviderFactoryContext.Provider;
var useProviderFactory = exports.useProviderFactory = function useProviderFactory() {
return _react.default.useContext(ProviderFactoryContext);
};
var useProvider = exports.useProvider = function useProvider(name) {
var _React$useState = _react.default.useState(),
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
provider = _React$useState2[0],
setProvider = _React$useState2[1];
var providerFactory = useProviderFactory();
_react.default.useEffect(function () {
var providerHandler = function providerHandler(_, provider) {
setProvider(provider);
};
providerFactory.subscribe(name, providerHandler);
return function () {
providerFactory.unsubscribe(name, providerHandler);
};
}, [name, providerFactory]);
return provider;
};