victory-core
Version:
44 lines (43 loc) • 1.58 kB
JavaScript
;
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;