@nexara/nativeflow
Version:
Beautiful, responsive, and customizable UI components for React Native – built for performance and seamless experiences.
42 lines (41 loc) • 1.18 kB
JavaScript
;
import React, { useCallback, useMemo, useState } from "react";
import PortalContext from "./PortalContext.js";
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } 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]) => /*#__PURE__*/_jsx(React.Fragment, {
children: Component
}, _name))]
})
});
};
export default PortalProvider;
//# sourceMappingURL=PortalProvider.js.map