@wordpress/block-editor
Version:
47 lines (42 loc) • 1.4 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import { createElement } from "@wordpress/element";
/**
* WordPress dependencies
*/
import { useState, useEffect } from '@wordpress/element';
import { withRegistry, createRegistry, RegistryProvider } from '@wordpress/data';
import { createHigherOrderComponent } from '@wordpress/compose';
/**
* Internal dependencies
*/
import { storeConfig } from '../../store';
import { STORE_NAME as blockEditorStoreName } from '../../store/constants';
const withRegistryProvider = createHigherOrderComponent(WrappedComponent => {
return withRegistry(({
useSubRegistry = true,
registry,
...props
}) => {
if (!useSubRegistry) {
return createElement(WrappedComponent, _extends({
registry: registry
}, props));
}
const [subRegistry, setSubRegistry] = useState(null);
useEffect(() => {
const newRegistry = createRegistry({}, registry);
newRegistry.registerStore(blockEditorStoreName, storeConfig);
setSubRegistry(newRegistry);
}, [registry]);
if (!subRegistry) {
return null;
}
return createElement(RegistryProvider, {
value: subRegistry
}, createElement(WrappedComponent, _extends({
registry: subRegistry
}, props)));
});
}, 'withRegistryProvider');
export default withRegistryProvider;
//# sourceMappingURL=with-registry-provider.js.map