UNPKG

victory-core

Version:
44 lines (43 loc) 1.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.usePortalContext = exports.PortalProvider = exports.PortalContext = void 0; var _react = _interopRequireDefault(require("react")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const PortalContext = exports.PortalContext = /*#__PURE__*/_react.default.createContext(undefined); PortalContext.displayName = "PortalContext"; const usePortalContext = () => { const context = _react.default.useContext(PortalContext); return context; }; exports.usePortalContext = usePortalContext; const PortalProvider = _ref => { let { children } = _ref; const [portalChildren, setPortalChildren] = _react.default.useState(new Map()); const addChild = _react.default.useCallback((id, element) => { setPortalChildren(prevChildren => { const nextChildren = new Map(prevChildren); nextChildren.set(id, element); return nextChildren; }); }, [setPortalChildren]); const removeChild = _react.default.useCallback(id => { setPortalChildren(prevChildren => { const nextChildren = new Map(prevChildren); nextChildren.delete(id); return nextChildren; }); }, [setPortalChildren]); const contextValue = _react.default.useMemo(() => ({ addChild, removeChild, children: portalChildren }), [addChild, removeChild, portalChildren]); return /*#__PURE__*/_react.default.createElement(PortalContext.Provider, { value: contextValue }, children); }; exports.PortalProvider = PortalProvider;