react-plot
Version:
Library of React components to render SVG 2D plots.
27 lines • 948 B
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { createContext, useContext, useMemo } from 'react';
export function createNestableContext(defaultValue) {
const context = createContext(new Map());
function useNestedContext(id) {
const values = useContext(context);
if (values.has(id)) {
return values.get(id);
}
return defaultValue;
}
function NestedContextProvider(props) {
const { id, value, children } = props;
const parentValues = useContext(context);
const mergedValues = useMemo(() => {
const merged = new Map(parentValues);
merged.set(id, value);
return merged;
}, [parentValues, id, value]);
return _jsx(context.Provider, { value: mergedValues, children: children });
}
return {
useNestedContext,
NestedContextProvider,
};
}
//# sourceMappingURL=nestableContext.js.map