UNPKG

@atlaskit/editor-common

Version:

A package that contains common classes and components for editor and renderer

34 lines (32 loc) 1.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.usePortalProvider = usePortalProvider; var _react = require("react"); var _common = require("./common"); var _PortalManager = require("./PortalManager"); /** * Initializes PortalManager and creates PortalRendererComponent. Offers an API (portalProviderAPI) for managing portals. * @returns {[PortalProviderAPI, PortalRendererComponent]} An array containing two elements: * 1. portalProviderAPI: An object providing an API for rendering and removing portals. * 2. PortalRenderer: A React component responsible for rendering the portal content. */ function usePortalProvider() { var portalManager = (0, _react.useMemo)(function () { return new _PortalManager.PortalManager(); }, []); var PortalRenderer = (0, _react.useMemo)(function () { return (0, _common.createPortalRendererComponent)(portalManager); }, [portalManager]); var portalProviderAPI = (0, _react.useMemo)(function () { return (0, _common.getPortalProviderAPI)(portalManager); }, [portalManager]); // Cleanup on unmount (0, _react.useEffect)(function () { return function () { portalProviderAPI.destroy(); }; }, [portalManager, portalProviderAPI]); return [portalProviderAPI, PortalRenderer]; }