@wizecorp/stratusjs
Version:
Stratus React Framework
33 lines • 1.3 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { createContext, useEffect, useState } from 'react';
import { useLocation, useParams, useSearchParams } from 'react-router-dom';
export const RouterContext = createContext(null);
export const RouterProvider = ({ children }) => {
const location = useLocation();
const params = useParams();
const [searchParams] = useSearchParams();
const [contextValue, setContextValue] = useState(null);
useEffect(() => {
const query = Object.fromEntries(searchParams.entries());
setContextValue({
pathname: location.pathname,
params: params,
query,
navigate: (path, options = {}) => {
if (options.replace) {
window.history.replaceState(options.state, '', path);
}
else {
window.history.pushState(options.state, '', path);
}
},
back: () => window.history.back(),
forward: () => window.history.forward()
});
}, [location, params, searchParams]);
if (!contextValue) {
return null;
}
return (_jsx(RouterContext.Provider, { value: contextValue, children: children }));
};
//# sourceMappingURL=RouterContext.js.map