UNPKG

@wordpress/editor

Version:
58 lines (55 loc) 1.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _element = require("@wordpress/element"); var _data = require("@wordpress/data"); var _compose = require("@wordpress/compose"); var _blockEditor = require("@wordpress/block-editor"); var _store = require("../../store"); var _jsxRuntime = require("react/jsx-runtime"); /** * WordPress dependencies */ /** * Internal dependencies */ function getSubRegistry(subRegistries, registry, useSubRegistry) { if (!useSubRegistry) { return registry; } let subRegistry = subRegistries.get(registry); if (!subRegistry) { subRegistry = (0, _data.createRegistry)({ 'core/block-editor': _blockEditor.storeConfig }, registry); // Todo: The interface store should also be created per instance. subRegistry.registerStore('core/editor', _store.storeConfig); subRegistries.set(registry, subRegistry); } return subRegistry; } const withRegistryProvider = (0, _compose.createHigherOrderComponent)(WrappedComponent => ({ useSubRegistry = true, ...props }) => { const registry = (0, _data.useRegistry)(); const [subRegistries] = (0, _element.useState)(() => new WeakMap()); const subRegistry = getSubRegistry(subRegistries, registry, useSubRegistry); if (subRegistry === registry) { return /*#__PURE__*/(0, _jsxRuntime.jsx)(WrappedComponent, { registry: registry, ...props }); } return /*#__PURE__*/(0, _jsxRuntime.jsx)(_data.RegistryProvider, { value: subRegistry, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(WrappedComponent, { registry: subRegistry, ...props }) }); }, 'withRegistryProvider'); var _default = exports.default = withRegistryProvider; //# sourceMappingURL=with-registry-provider.js.map