@nexara/nativeflow
Version:
Beautiful, responsive, and customizable UI components for React Native – built for performance and seamless experiences.
40 lines (39 loc) • 1.11 kB
JavaScript
import React, { useCallback, useMemo, useState } from "react";
import PortalContext from "./PortalContext.js";
import { jsxs as _jsxs, Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
const PortalProvider = ({
children
}) => {
const [components, setComponents] = useState({});
const addComponent = useCallback(({
name,
component
}) => {
setComponents(prevComponents => ({
...prevComponents,
[name]: component
}));
}, []);
const removeComponent = useCallback(name => {
setComponents(prevComponents => {
const newComponents = {
...prevComponents
};
delete newComponents[name];
return newComponents;
});
}, []);
const values = useMemo(() => ({
addComponent,
removeComponent
}), []);
return /*#__PURE__*/_jsx(_Fragment, {
children: /*#__PURE__*/_jsxs(PortalContext.Provider, {
value: values,
children: [children, Object.entries(components).map(([_name, Component]) => Component)]
})
});
};
export default PortalProvider;
//# sourceMappingURL=PortalProvider.js.map
;